diff options
author | John McCall <rjmccall@apple.com> | 2009-12-15 22:29:06 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-12-15 22:29:06 +0000 |
commit | 6c1c1b8c6ca743a5b6b4c81f9ac56392c12c7457 (patch) | |
tree | 5657ec1ba1f94aa689e1438e5c33c32537439782 /lib/Sema/SemaTemplateInstantiateDecl.cpp | |
parent | 80737ad5e0a67d6e3dd0a0ba48446344215a5fd5 (diff) |
Link up member-class redeclarations during template instantiation.
This test courtesy of LLVM.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91462 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r-- | lib/Sema/SemaTemplateInstantiateDecl.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index 8d74bd76ca..69982be84b 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -645,6 +645,12 @@ Decl *TemplateDeclInstantiator::VisitCXXRecordDecl(CXXRecordDecl *D) { CXXRecordDecl *PrevDecl = 0; if (D->isInjectedClassName()) PrevDecl = cast<CXXRecordDecl>(Owner); + else if (D->getPreviousDeclaration()) { + NamedDecl *Prev = SemaRef.FindInstantiatedDecl(D->getPreviousDeclaration(), + TemplateArgs); + if (!Prev) return 0; + PrevDecl = cast<CXXRecordDecl>(Prev); + } CXXRecordDecl *Record = CXXRecordDecl::Create(SemaRef.Context, D->getTagKind(), Owner, |