summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ExternalASTMerger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/ExternalASTMerger.cpp')
-rw-r--r--clang/lib/AST/ExternalASTMerger.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/AST/ExternalASTMerger.cpp b/clang/lib/AST/ExternalASTMerger.cpp
index 4f4a99794c5..f69b5d62840 100644
--- a/clang/lib/AST/ExternalASTMerger.cpp
+++ b/clang/lib/AST/ExternalASTMerger.cpp
@@ -44,6 +44,9 @@ public:
ToTag->setMustBuildLookupTable();
} else if (auto ToNamespace = dyn_cast<NamespaceDecl>(To)) {
ToNamespace->setHasExternalVisibleStorage();
+ } else if (auto ToContainer = dyn_cast<ObjCContainerDecl>(To)) {
+ ToContainer->setHasExternalLexicalStorage();
+ ToContainer->setMustBuildLookupTable();
}
return ASTImporter::Imported(From, To);
}
@@ -80,11 +83,12 @@ LookupSameContext(Source<TranslationUnitDecl *> SourceTU, const DeclContext *DC,
}
bool IsForwardDeclaration(Decl *D) {
- assert(!isa<ObjCInterfaceDecl>(D)); // TODO handle this case
if (auto TD = dyn_cast<TagDecl>(D)) {
return !TD->isThisDeclarationADefinition();
} else if (auto FD = dyn_cast<FunctionDecl>(D)) {
return !FD->isThisDeclarationADefinition();
+ } else if (auto OID = dyn_cast<ObjCInterfaceDecl>(D)) {
+ return OID->isThisDeclarationADefinition();
} else {
return false;
}
OpenPOWER on IntegriCloud