Skip to content

Commit 34cf1f2

Browse files
committed
Merge remote-tracking branch 'origin/main' into rebranch
2 parents 624c3d0 + 352632b commit 34cf1f2

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

include/swift/AST/ModuleDependencies.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,6 @@ class ModuleDependencyInfo {
690690
std::string ImportedModuleName = module.front().Item.str().str();
691691
auto submodulePath = module.getSubmodulePath();
692692
if (submodulePath.size() > 0 && !submodulePath[0].Item.empty()) {
693-
assert(submodulePath.size() == 1 && "Unsupported Clang submodule import");
694693
auto submoduleComponent = submodulePath[0];
695694
// Special case: a submodule named "Foo.Private" can be moved to a top-level
696695
// module named "Foo_Private". ClangImporter has special support for this.

lib/DependencyScan/ScanDependencies.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,8 @@ static void discoverCrossImportOverlayDependencies(
673673
// secondary module, and add the overlay names to the
674674
// dependencies list.
675675
for (auto overlayName : overlayMap[Id.first]) {
676-
if (std::find_if(allDependencies.begin(),
676+
if (overlayName.str() != mainModuleName &&
677+
std::find_if(allDependencies.begin(),
677678
allDependencies.end(),
678679
[&](ModuleDependencyID Id) {
679680
return Id.first == overlayName.str();
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: mkdir -p %t/clang-module-cache
3+
// 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/CHeaders/ExtraCModules -I %S/Inputs/Swift -emit-dependencies -emit-dependencies-path %t/deps.d -swift-version 4 -module-name _cross_import_E
4+
// Check the contents of the JSON output
5+
// RUN: %validate-json %t/deps.json | %FileCheck %s
6+
7+
// REQUIRES: executable_test
8+
// REQUIRES: objc_interop
9+
10+
// Ordinarily, importing `E` and `SubE` triggers a cross-import of `_cross_import_E`, but not here, because we are building `_cross_import_E` Swift module itself.
11+
import EWrapper
12+
import SubEWrapper
13+
14+
// CHECK: "swift": "_cross_import_E"
15+
// CHECK: "directDependencies": [
16+
// CHECK-DAG: "swift": "EWrapper"
17+
// CHECK-DAG: "swift": "SubEWrapper"
18+
// CHECK-DAG: "swift": "Swift"
19+
// CHECK-DAG: "swift": "SwiftOnoneSupport"
20+
// CHECK-DAG: "swift": "_Concurrency"
21+
// CHECK-DAG: "swift": "_StringProcessing"
22+
// CHECK-DAG: "clang": "_SwiftConcurrencyShims"
23+
// CHECK-NOT: "swift": "_cross_import_E"
24+
// CHECK: ]
25+
26+

0 commit comments

Comments
 (0)