diff options
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 19 |
1 files changed, 5 insertions, 14 deletions
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<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: |