]> granicus.if.org Git - clang/commitdiff
Don't create a typedef for the injected-class-name
authorDouglas Gregor <dgregor@apple.com>
Mon, 10 Nov 2008 14:41:22 +0000 (14:41 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 10 Nov 2008 14:41:22 +0000 (14:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58987 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp

index c10fd8b3c269b3f77e0d2aaa1e104cf926027a40..dd00998d41049a044c274c8bf8bea33d84a6e49a 100644 (file)
@@ -400,11 +400,7 @@ void Sema::ActOnStartCXXClassDef(Scope *S, DeclTy *D, SourceLocation LBrace) {
     //   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 @@ bool Sema::CheckDestructorDeclarator(Declarator &D, QualType &R,
   //   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: