forked from OSchip/llvm-project
[ASTImporter] Fix ClassTemplateSpecialization in wrong DC
Summary: ClassTemplateSpecialization is put in the wrong DeclContex if implicitly instantiated. This patch fixes it. Reviewers: a.sidorin, r.stahl, xazax.hun Subscribers: rnkovacs, dkrupp, cfe-commits Differential Revision: https://reviews.llvm.org/D47058 llvm-svn: 333269
This commit is contained in:
parent
b4a70b9f47
commit
b14056b7aa
|
@ -4320,9 +4320,13 @@ Decl *ASTNodeImporter::VisitClassTemplateSpecializationDecl(
|
|||
|
||||
D2->setTemplateSpecializationKind(D->getTemplateSpecializationKind());
|
||||
|
||||
// Add the specialization to this context.
|
||||
// Set the context of this specialization/instantiation.
|
||||
D2->setLexicalDeclContext(LexicalDC);
|
||||
LexicalDC->addDeclInternal(D2);
|
||||
|
||||
// Add to the DC only if it was an explicit specialization/instantiation.
|
||||
if (D2->isExplicitInstantiationOrSpecialization()) {
|
||||
LexicalDC->addDeclInternal(D2);
|
||||
}
|
||||
}
|
||||
Importer.Imported(D, D2);
|
||||
if (D->isCompleteDefinition() && ImportDefinition(D, D2))
|
||||
|
|
|
@ -1214,7 +1214,7 @@ TEST_P(ASTImporterTestBase, TUshouldNotContainTemplatedDeclOfTypeAlias) {
|
|||
|
||||
TEST_P(
|
||||
ASTImporterTestBase,
|
||||
DISABLED_TUshouldNotContainClassTemplateSpecializationOfImplicitInstantiation) {
|
||||
TUshouldNotContainClassTemplateSpecializationOfImplicitInstantiation) {
|
||||
|
||||
Decl *From, *To;
|
||||
std::tie(From, To) = getImportedDecl(
|
||||
|
|
Loading…
Reference in New Issue