Skip to content

Commit df9323a

Browse files
committed
[cxx-interop] Fix SIL deserialization error, pt 2
1 parent 8b3252b commit df9323a

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

lib/ClangImporter/ImportDecl.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9519,12 +9519,6 @@ Decl *ClangImporter::Implementation::importDeclAndCacheImpl(
95199519
if (!SuperfluousTypedefsAreTransparent && TypedefIsSuperfluous)
95209520
return nullptr;
95219521

9522-
if (ClangDecl->getDeclContext()->isNamespace()) {
9523-
addEntryToLookupTable(*BridgingHeaderLookupTable,
9524-
const_cast<clang::NamedDecl *>(ClangDecl),
9525-
getNameImporter());
9526-
}
9527-
95289522
return Result;
95299523
}
95309524

lib/ClangImporter/SwiftLookupTable.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1925,13 +1925,24 @@ void importer::addEntryToLookupTable(SwiftLookupTable &table,
19251925
// Walk the members of any context that can have nested members.
19261926
if (isa<clang::TagDecl>(named) || isa<clang::ObjCInterfaceDecl>(named) ||
19271927
isa<clang::ObjCProtocolDecl>(named) ||
1928-
isa<clang::ObjCCategoryDecl>(named) || isa<clang::NamespaceDecl>(named)) {
1928+
isa<clang::ObjCCategoryDecl>(named)) {
19291929
clang::DeclContext *dc = cast<clang::DeclContext>(named);
19301930
for (auto member : dc->decls()) {
19311931
if (auto namedMember = dyn_cast<clang::NamedDecl>(member))
19321932
addEntryToLookupTable(table, namedMember, nameImporter);
19331933
}
19341934
}
1935+
if (isa<clang::NamespaceDecl>(named)) {
1936+
for (auto redecl : named->redecls()) {
1937+
auto *dc = cast<clang::DeclContext>(redecl);
1938+
for (auto member : dc->decls()) {
1939+
if (!member->isCanonicalDecl())
1940+
continue;
1941+
if (auto namedMember = dyn_cast<clang::NamedDecl>(member))
1942+
addEntryToLookupTable(table, namedMember, nameImporter);
1943+
}
1944+
}
1945+
}
19351946
}
19361947

19371948
/// Returns the nearest parent of \p module that is marked \c explicit in its

0 commit comments

Comments
 (0)