summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Marton <martongabesz@gmail.com>2018-05-17 09:46:07 +0000
committerGabor Marton <martongabesz@gmail.com>2018-05-17 09:46:07 +0000
commitde8bf2678b054d6c4eee7db2afacb8ec9e795fcc (patch)
tree12881cf282355436080af1c7941e83bd5764f63c
parent6e89528c557fe7e41b2c4946d75d1e5b36f62fd5 (diff)
downloadbcm5719-llvm-de8bf2678b054d6c4eee7db2afacb8ec9e795fcc.tar.gz
bcm5719-llvm-de8bf2678b054d6c4eee7db2afacb8ec9e795fcc.zip
[ASTImporter] Fix missing implict CXXRecordDecl
Summary: Implicit CXXRecordDecl is not added to its DeclContext during import, but in the original AST it is. This patch fixes this. Reviewers: xazax.hun, a.sidorin, szepet Subscribers: rnkovacs, dkrupp, cfe-commits Differential Revision: https://reviews.llvm.org/D46958 llvm-svn: 332588
-rw-r--r--clang/lib/AST/ASTImporter.cpp2
-rw-r--r--clang/unittests/AST/ASTImporterTest.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index 254eb7643d4..6fa4617cf06 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -2110,7 +2110,7 @@ Decl *ASTNodeImporter::VisitRecordDecl(RecordDecl *D) {
D2 = D2CXX;
D2->setAccess(D->getAccess());
D2->setLexicalDeclContext(LexicalDC);
- if (!DCXX->getDescribedClassTemplate())
+ if (!DCXX->getDescribedClassTemplate() || DCXX->isImplicit())
LexicalDC->addDeclInternal(D2);
Importer.Imported(D, D2);
diff --git a/clang/unittests/AST/ASTImporterTest.cpp b/clang/unittests/AST/ASTImporterTest.cpp
index 9eec1d20bac..a4c823008d9 100644
--- a/clang/unittests/AST/ASTImporterTest.cpp
+++ b/clang/unittests/AST/ASTImporterTest.cpp
@@ -1348,7 +1348,7 @@ TEST_P(ASTImporterTestBase,
Verifier.match(To, cxxRecordDecl(hasFieldOrder({"a", "b", "c"}))));
}
-TEST_P(ASTImporterTestBase, DISABLED_ShouldImportImplicitCXXRecordDecl) {
+TEST_P(ASTImporterTestBase, ShouldImportImplicitCXXRecordDecl) {
Decl *From, *To;
std::tie(From, To) = getImportedDecl(
R"(
OpenPOWER on IntegriCloud