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
diff --git a/lib/Sema/IdentifierResolver.cpp b/lib/Sema/IdentifierResolver.cpp
index 781d89a..6efedb4 100644
--- a/lib/Sema/IdentifierResolver.cpp
+++ b/lib/Sema/IdentifierResolver.cpp
@@ -43,39 +43,6 @@
 
 
 //===----------------------------------------------------------------------===//
-// 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 @@
     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 50b894a..067900e 100644
--- a/lib/Sema/IdentifierResolver.h
+++ b/lib/Sema/IdentifierResolver.h
@@ -28,58 +28,6 @@
 /// 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