Skip to content

Commit bf2d247

Browse files
committed
[Serialization] Remark on transitive dependencies
1 parent abe377c commit bf2d247

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,6 +1031,11 @@ REMARK(module_loaded,none,
10311031
"%select{| (overlay for a clang dependency)}1"
10321032
"; source: '%2', loaded: '%3'",
10331033
(Identifier, unsigned, StringRef, StringRef))
1034+
1035+
REMARK(transitive_dependency_behavior,none,
1036+
"%1 has %select{a required|an optional|an ignored}2 "
1037+
"transitive dependency on '%0'",
1038+
(StringRef, Identifier, unsigned))
10341039

10351040
REMARK(explicit_interface_build_skipped,none,
10361041
"Skipped rebuilding module at %0 - up-to-date",

lib/Serialization/ModuleFile.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "ModuleFormat.h"
1818
#include "swift/Serialization/SerializationOptions.h"
1919
#include "swift/Subsystems.h"
20+
#include "swift/AST/DiagnosticsSema.h"
2021
#include "swift/AST/ASTContext.h"
2122
#include "swift/AST/ASTMangler.h"
2223
#include "swift/AST/GenericSignature.h"
@@ -197,6 +198,14 @@ Status ModuleFile::associateWithFileContext(FileUnit *file, SourceLoc diagLoc,
197198
ModuleLoadingBehavior transitiveBehavior =
198199
getTransitiveLoadingBehavior(dependency);
199200

201+
if (ctx.LangOpts.EnableModuleLoadingRemarks) {
202+
ctx.Diags.diagnose(diagLoc,
203+
diag::transitive_dependency_behavior,
204+
dependency.Core.getPrettyPrintedPath(),
205+
M->getName(),
206+
unsigned(transitiveBehavior));
207+
}
208+
200209
// Skip this dependency?
201210
if (transitiveBehavior == ModuleLoadingBehavior::Ignored)
202211
continue;

test/ModuleInterface/loading-remarks.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@ import SwiftDependency
4949
import SwiftNonResilientDependency
5050
import DirectMixedDependency
5151

52+
// CHECK: remark: 'Swift' has a required transitive dependency on 'SwiftShims'
5253
// CHECK: remark: loaded module 'SwiftShims'; source: '{{.*}}module.modulemap', loaded: '{{.*}}SwiftShims-{{.*}}.pcm'
5354
// CHECK: remark: loaded module 'Swift'; source: '{{.*}}Swift.swiftmodule{{.*}}.swiftinterface', loaded: '{{.*}}Swift.swiftmodule{{.*}}.swiftmodule'
55+
// CHECK: remark: 'SwiftDependency' has a required transitive dependency on 'Swift'
5456
// CHECK: remark: loaded module 'SwiftDependency'; source: '{{.*}}SwiftDependency.swiftinterface', loaded: '{{.*}}SwiftDependency-{{.*}}.swiftmodule'
5557
// CHECK: remark: loaded module 'SwiftNonResilientDependency'; source: '{{.*}}SwiftNonResilientDependency.swiftmodule', loaded: '{{.*}}SwiftNonResilientDependency.swiftmodule'
5658
// CHECK: remark: loaded module 'IndirectMixedDependency' (overlay for a clang dependency); source: '{{.*}}IndirectMixedDependency.swiftinterface', loaded: '{{.*}}IndirectMixedDependency-{{.*}}.swiftmodule'

test/Serialization/package-dependencies.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ package import PackageDep
2525
// RUN: -package-name MyPackage -I %t \
2626
// RUN: -enable-experimental-feature AccessLevelOnImport \
2727
// RUN: -Rmodule-loading 2>&1 | %FileCheck -check-prefix=VISIBLE-PACKAGE-DEP %s
28-
// VISIBLE-PACKAGE-DEP: source: '{{.*}}PackageDep.swiftmodule'
28+
// VISIBLE-PACKAGE-DEP: loaded module 'PackageDep'
2929

3030
// RUN: %target-swift-frontend -typecheck %t/ResilientClient.swift \
3131
// RUN: -package-name NotMyPackage -I %t \
3232
// RUN: -enable-experimental-feature AccessLevelOnImport \
3333
// RUN: -Rmodule-loading 2>&1 | %FileCheck -check-prefix=HIDDEN-PACKAGE-DEP %s
34-
// HIDDEN-PACKAGE-DEP-NOT: PackageDep
34+
// HIDDEN-PACKAGE-DEP-NOT: loaded module 'PackageDep'
3535

3636
//--- ResilientClient.swift
3737
import ResilientDep

0 commit comments

Comments
 (0)