Skip to content

Commit 072dd06

Browse files
committed
[Dependency Scanning] Record all bridging header module dependencies in the scanning result
Add them to the set of direct dependencies of the Swift module the bridging header belongs to, therefore also ensuiring that their module info will be contained in in the output graph. Part of rdar://105742859
1 parent 1e49c3b commit 072dd06

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

lib/DependencyScan/ScanDependencies.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,7 @@ resolveDirectDependencies(CompilerInstance &instance, ModuleDependencyID module,
365365

366366
assert(bridgingModuleDependencies);
367367
for (const auto &clangDep : *bridgingModuleDependencies) {
368+
result.insert({clangDep, ModuleDependencyKind::Clang});
368369
findAllImportedClangModules(ctx, clangDep, cache, allClangModules,
369370
knownModules);
370371
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: mkdir -p %t/clang-module-cache
3+
4+
// RUN: %target-swift-frontend -scan-dependencies -module-cache-path %t/clang-module-cache %s -o %t/deps.json -I %S/Inputs/CHeaders -I %S/Inputs/Swift -import-objc-header %S/Inputs/CHeaders/Bridging.h -swift-version 4
5+
// RUN: %FileCheck %s < %t/deps.json
6+
7+
import E
8+
9+
// CHECK: "swift": "deps"
10+
// CHECK: "directDependencies": [
11+
// CHECK-NEXT: {
12+
// CHECK-DAG: "swift": "E"
13+
// CHECK-DAG: "swift": "Swift"
14+
// CHECK-DAG: "swift": "SwiftOnoneSupport"
15+
// CHECK-DAG: "swift": "_Concurrency"
16+
// CHECK-DAG: "clang": "_SwiftConcurrencyShims"
17+
// CHECK-DAG: "swift": "_StringProcessing"
18+
// The source of dependency on clang:F is the bridging header, ensure it is captured here
19+
// CHECK-DAG: "clang": "F"
20+
// CHECK-DAG: "swift": "F"
21+
22+
// CHECK: "bridgingHeader": {
23+
// CHECK-NEXT: "path": "{{.*}}Bridging.h",
24+
// CHECK-NEXT: "sourceFiles": [
25+
// CHECK-NEXT: "{{.*}}Bridging.h",
26+
// CHECK-NEXT: "{{.*}}BridgingOther.h"
27+
// CHECK-NEXT: ],
28+
// CHECK-NEXT: "moduleDependencies": [
29+
// CHECK-NEXT: "F"

0 commit comments

Comments
 (0)