Skip to content

Commit 46e738d

Browse files
authored
Merge pull request #22234 from jketema/jketema/swift-fix
Swift: Recurse clang submodules when computing extension indexes
2 parents 478878c + 2b871e9 commit 46e738d

2 files changed

Lines changed: 18 additions & 8 deletions

File tree

swift/extractor/mangler/SwiftMangler.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "swift/extractor/mangler/SwiftMangler.h"
22
#include "swift/extractor/infra/SwiftDispatcher.h"
3-
#include "swift/extractor/trap/generated/decl/TrapClasses.h"
43
#include "swift/logging/SwiftLogging.h"
54

65
#include <swift/AST/Module.h>
@@ -170,15 +169,12 @@ void SwiftMangler::indexExtensionsAndFilePrivateValues(llvm::ArrayRef<swift::Dec
170169
}
171170
}
172171

173-
void SwiftMangler::indexClangExtensionsAndFilePrivateValues(
172+
uint32_t SwiftMangler::indexClangSubmoduleExtensionsAndFilePrivateValues(
174173
const clang::Module* clangModule,
175-
swift::ClangModuleLoader* moduleLoader) {
176-
if (!moduleLoader) {
177-
return;
178-
}
179-
180-
auto index = 0u;
174+
swift::ClangModuleLoader* moduleLoader,
175+
uint32_t index) {
181176
for (const auto& submodule : clangModule->submodules()) {
177+
index = indexClangSubmoduleExtensionsAndFilePrivateValues(submodule, moduleLoader, index);
182178
if (auto* swiftSubmodule = moduleLoader->getWrapperForModule(submodule)) {
183179
llvm::SmallVector<swift::Decl*> children;
184180
swiftSubmodule->getTopLevelDecls(children);
@@ -191,6 +187,17 @@ void SwiftMangler::indexClangExtensionsAndFilePrivateValues(
191187
}
192188
}
193189
}
190+
return index;
191+
}
192+
193+
void SwiftMangler::indexClangExtensionsAndFilePrivateValues(
194+
const clang::Module* clangModule,
195+
swift::ClangModuleLoader* moduleLoader) {
196+
if (!moduleLoader) {
197+
return;
198+
}
199+
200+
indexClangSubmoduleExtensionsAndFilePrivateValues(clangModule, moduleLoader, 0u);
194201
}
195202

196203
SwiftMangledName SwiftMangler::visitGenericTypeParamDecl(const swift::GenericTypeParamDecl* decl) {

swift/extractor/mangler/SwiftMangler.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@ class SwiftMangler : private swift::TypeVisitor<SwiftMangler, SwiftMangledName>,
126126

127127
bool isExtensionOrFilePrivateValue(const swift::Decl* decl);
128128
void indexExtensionsAndFilePrivateValues(llvm::ArrayRef<swift::Decl*> siblings);
129+
uint32_t indexClangSubmoduleExtensionsAndFilePrivateValues(const clang::Module* clangModule,
130+
swift::ClangModuleLoader* moduleLoader,
131+
uint32_t index);
129132
void indexClangExtensionsAndFilePrivateValues(const clang::Module* clangModule,
130133
swift::ClangModuleLoader* moduleLoader);
131134
ExtensionOrFilePrivateValueIndex getExtensionOrFilePrivateValueIndex(const swift::Decl* decl,

0 commit comments

Comments
 (0)