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: