From: Douglas Gregor Date: Mon, 10 Nov 2008 14:41:22 +0000 (+0000) Subject: Don't create a typedef for the injected-class-name X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=55c60954c273c225777276cbd9db477939c6f073;p=clang 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 c10fd8b3c2..dd00998d41 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -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(DeclaratorTypeD)) { - if (TypedefD->getIdentifier() != - cast(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: