forked from OSchip/llvm-project
Make the LookupBase boolean an enum instead.
llvm-svn: 72594
This commit is contained in:
parent
b6f4538683
commit
01bcef4a17
|
@ -175,10 +175,12 @@ bool Sema::LookupInBases(CXXRecordDecl *Class,
|
|||
// type to see if we've found a member that meets the search
|
||||
// criteria.
|
||||
bool FoundPathToThisBase = false;
|
||||
if (Criteria.LookupBase) {
|
||||
switch (Criteria.Kind) {
|
||||
case MemberLookupCriteria::LK_Base:
|
||||
FoundPathToThisBase
|
||||
= (Context.getCanonicalType(BaseSpec->getType()) == Criteria.Base);
|
||||
} else {
|
||||
break;
|
||||
case MemberLookupCriteria::LK_NamedMember:
|
||||
Paths.ScratchPath.Decls = BaseRecord->lookup(Context, Criteria.Name);
|
||||
while (Paths.ScratchPath.Decls.first != Paths.ScratchPath.Decls.second) {
|
||||
if (isAcceptableLookupResult(*Paths.ScratchPath.Decls.first,
|
||||
|
@ -188,6 +190,7 @@ bool Sema::LookupInBases(CXXRecordDecl *Class,
|
|||
}
|
||||
++Paths.ScratchPath.Decls.first;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (FoundPathToThisBase) {
|
||||
|
|
|
@ -202,22 +202,29 @@ namespace clang {
|
|||
/// member of a C++ class. Objects of this type are used to direct
|
||||
/// Sema::LookupCXXClassMember.
|
||||
struct MemberLookupCriteria {
|
||||
/// LookupKind - the kind of lookup we're doing.
|
||||
enum LookupKind {
|
||||
LK_Base,
|
||||
LK_NamedMember
|
||||
};
|
||||
|
||||
/// MemberLookupCriteria - Constructs member lookup criteria to
|
||||
/// search for a base class of type Base.
|
||||
explicit MemberLookupCriteria(QualType Base)
|
||||
: LookupBase(true), Base(Base) { }
|
||||
: Kind(LK_Base), Base(Base) { }
|
||||
|
||||
/// MemberLookupCriteria - Constructs member lookup criteria to
|
||||
/// search for a class member with the given Name.
|
||||
explicit MemberLookupCriteria(DeclarationName Name,
|
||||
Sema::LookupNameKind NameKind,
|
||||
unsigned IDNS)
|
||||
: LookupBase(false), Name(Name), NameKind(NameKind), IDNS(IDNS) { }
|
||||
: Kind(LK_NamedMember), Name(Name), NameKind(NameKind), IDNS(IDNS) { }
|
||||
|
||||
/// LookupBase - True if we are looking for a base class (whose
|
||||
/// type is Base). If false, we are looking for a named member of
|
||||
/// Kind - The kind of lookup we're doing.
|
||||
/// LK_Base if we are looking for a base class (whose
|
||||
/// type is Base). LK_NamedMember if we are looking for a named member of
|
||||
/// the class (with the name Name).
|
||||
bool LookupBase;
|
||||
LookupKind Kind;
|
||||
|
||||
/// Base - The type of the base class we're searching for, if
|
||||
/// LookupBase is true.
|
||||
|
|
Loading…
Reference in New Issue