diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2009-02-17 20:21:51 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2009-02-17 20:21:51 +0000 |
commit | 7fd46dac4ab51de4d224f6bc7ce197913220a70c (patch) | |
tree | 2cd31f2aedf5c897e2a2aadb9ae0839101e6ecfc | |
parent | 0c00aac5d618f39afc406c5b2e07642930af1d56 (diff) |
Now that ObjC decls have DeclContexts too, remove an ugly hack from IdentifierResolver.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64802 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/IdentifierResolver.cpp | 35 | ||||
-rw-r--r-- | lib/Sema/IdentifierResolver.h | 52 |
2 files changed, 1 insertions, 86 deletions
diff --git a/lib/Sema/IdentifierResolver.cpp b/lib/Sema/IdentifierResolver.cpp index 781d89a0e9..6efedb4895 100644 --- a/lib/Sema/IdentifierResolver.cpp +++ b/lib/Sema/IdentifierResolver.cpp @@ -43,39 +43,6 @@ public: //===----------------------------------------------------------------------===// -// LookupContext Implementation -//===----------------------------------------------------------------------===// - -/// getContext - Returns translation unit context for non Decls and -/// for EnumConstantDecls returns the parent context of their EnumDecl. -DeclContext *IdentifierResolver::LookupContext::getContext(Decl *D) { - DeclContext *Ctx = D->getDeclContext(); - - if (!Ctx) // FIXME: HACK! We shouldn't end up with a NULL context here. - return TUCtx(); - - Ctx = Ctx->getLookupContext(); - - if (isa<TranslationUnitDecl>(Ctx)) - return TUCtx(); - - return Ctx; -} - -/// isEqOrContainedBy - Returns true of the given context is the same or a -/// parent of this one. -bool IdentifierResolver::LookupContext::isEqOrContainedBy( - const LookupContext &PC) const { - if (PC.isTU()) return true; - - for (LookupContext Next = *this; !Next.isTU(); Next = Next.getParent()) - if (Next.Ctx == PC.Ctx) return true; - - return false; -} - - -//===----------------------------------------------------------------------===// // IdDeclInfo Implementation //===----------------------------------------------------------------------===// @@ -155,7 +122,7 @@ bool IdentifierResolver::isDeclInScope(Decl *D, DeclContext *Ctx, return false; } - return LookupContext(D) == LookupContext(Ctx->getPrimaryContext()); + return D->getDeclContext()->getLookupContext() == Ctx->getPrimaryContext(); } /// AddDecl - Link the decl to its shadowed decl chain. diff --git a/lib/Sema/IdentifierResolver.h b/lib/Sema/IdentifierResolver.h index 50b894a725..067900eac1 100644 --- a/lib/Sema/IdentifierResolver.h +++ b/lib/Sema/IdentifierResolver.h @@ -28,58 +28,6 @@ namespace clang { /// implements efficent decl lookup based on a declaration name. class IdentifierResolver { - /// LookupContext - A wrapper for DeclContext. DeclContext is only part of - /// Decls, LookupContext can be used with all decls (assumes - /// translation unit context for non Decls). - class LookupContext { - const DeclContext *Ctx; - - /// TUCtx - Provides a common value for translation unit context for all - /// decls. - /// FIXME: When (if ?) all decls can point to their translation unit context - /// remove this hack. - static inline DeclContext *TUCtx() { - return reinterpret_cast<DeclContext*>(-1); - } - - /// getContext - Returns translation unit context for non Decls and - /// for EnumConstantDecls returns the parent context of their EnumDecl. - static DeclContext *getContext(Decl *D); - - public: - LookupContext(Decl *D) { - Ctx = getContext(D); - } - LookupContext(const DeclContext *DC) { - if (!DC || isa<TranslationUnitDecl>(DC)) - Ctx = TUCtx(); - else - Ctx = DC; - } - - bool isTU() const { - return (Ctx == TUCtx()); - } - - /// getParent - Returns the parent context. This should not be called for - /// a translation unit context. - LookupContext getParent() const { - assert(!isTU() && "TU has no parent!"); - return LookupContext(Ctx->getParent()); - } - - /// isEqOrContainedBy - Returns true of the given context is the same or a - /// parent of this one. - bool isEqOrContainedBy(const LookupContext &PC) const; - - bool operator==(const LookupContext &RHS) const { - return Ctx == RHS.Ctx; - } - bool operator!=(const LookupContext &RHS) const { - return Ctx != RHS.Ctx; - } - }; - /// IdDeclInfo - Keeps track of information about decls associated /// to a particular declaration name. IdDeclInfos are lazily /// constructed and assigned to a declaration name the first time a |