Don't create a typedef for the injected-class-name

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58987 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index c10fd8b..dd00998 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -400,11 +400,7 @@
     //   class itself; this is known as the injected-class-name. For
     //   purposes of access checking, the injected-class-name is treated
     //   as if it were a public member name.
-    // FIXME: this should probably have its own kind of type node.
-    TypedefDecl *InjectedClassName 
-      = TypedefDecl::Create(Context, Dcl, LBrace, Dcl->getIdentifier(),
-                            Context.getTypeDeclType(Dcl), /*PrevDecl=*/0);
-    PushOnScopeChains(InjectedClassName, S);
+    PushOnScopeChains(Dcl, S);
   }
 }
 
@@ -924,15 +920,10 @@
   //   declaration.
   TypeDecl *DeclaratorTypeD = (TypeDecl *)D.getDeclaratorIdType();
   if (const TypedefDecl *TypedefD = dyn_cast<TypedefDecl>(DeclaratorTypeD)) {
-    if (TypedefD->getIdentifier() != 
-          cast<CXXRecordDecl>(CurContext)->getIdentifier()) {
-      // FIXME: This would be easier if we could just look at whether
-      // we found the injected-class-name.
-      Diag(D.getIdentifierLoc(), 
-           diag::err_destructor_typedef_name,
-           TypedefD->getName());
-      isInvalid = true;
-    }
+    Diag(D.getIdentifierLoc(), 
+         diag::err_destructor_typedef_name,
+         TypedefD->getName());
+    isInvalid = true;
   }
 
   // C++ [class.dtor]p2: