22
33// Test with -enable-module-selectors-in-module-interface
44// RUN: %empty-directory(%t/enabled)
5- // RUN: %target-swift-emit-module-interface(%t/enabled/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -enable-module-selectors-in-module-interface
5+ // RUN: %target-swift-emit-module-interface(%t/enabled/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -enable-module-selectors-in-module-interface 2>%t/enabled/stderr.txt
66// RUN: %FileCheck --input-file %t/enabled/TestCase.swiftinterface %s --check-prefixes CHECK,CHECK-ENABLED
7+ // RUN: %FileCheck --input-file %t/enabled/stderr.txt %s --allow-empty --check-prefix DIAG-PRESERVE-NOT-OVERRIDDEN
78// RUN: %target-swift-typecheck-module-from-interface(%t/enabled/TestCase.swiftinterface) %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase
89
910// Test with -disable-module-selectors-in-module-interface
1011// RUN: %empty-directory(%t/disabled)
11- // RUN: %target-swift-emit-module-interface(%t/disabled/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -disable-module-selectors-in-module-interface
12+ // RUN: %target-swift-emit-module-interface(%t/disabled/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -disable-module-selectors-in-module-interface 2>%t/disabled/stderr.txt
1213// RUN: %FileCheck --input-file %t/disabled/TestCase.swiftinterface %s --check-prefixes CHECK,CHECK-DISABLED
14+ // RUN: %FileCheck --input-file %t/disabled/stderr.txt %s --allow-empty --check-prefix DIAG-PRESERVE-NOT-OVERRIDDEN
1315// RUN: %target-swift-typecheck-module-from-interface(%t/disabled/TestCase.swiftinterface) %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase
1416
1517// Test default behavior
1618// RUN: %empty-directory(%t/default)
17- // RUN: %target-swift-emit-module-interface(%t/default/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase
19+ // RUN: %target-swift-emit-module-interface(%t/default/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase 2>%t/default/stderr.txt
1820// RUN: %FileCheck --input-file %t/default/TestCase.swiftinterface %s --check-prefixes CHECK,CHECK-DISABLED
21+ // RUN: %FileCheck --input-file %t/default/stderr.txt %s --allow-empty --check-prefix DIAG-PRESERVE-NOT-OVERRIDDEN
1922// RUN: %target-swift-typecheck-module-from-interface(%t/default/TestCase.swiftinterface) %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase
2023
2124// Test with -enable-module-selectors-in-module-interface and blocklist
2225// RUN: %empty-directory(%t/blocked)
23- // RUN: %target-swift-emit-module-interface(%t/blocked/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -enable-module-selectors-in-module-interface -blocklist-file %S/Inputs/module_selector/blocklist.yml
26+ // RUN: %target-swift-emit-module-interface(%t/blocked/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -enable-module-selectors-in-module-interface -blocklist-file %S/Inputs/module_selector/blocklist.yml 2>%t/blocked/stderr.txt
2427// RUN: %FileCheck --input-file %t/blocked/TestCase.swiftinterface %s --check-prefixes CHECK,CHECK-DISABLED
28+ // RUN: %FileCheck --input-file %t/blocked/stderr.txt %s --allow-empty --check-prefix DIAG-PRESERVE-NOT-OVERRIDDEN
2529// RUN: %target-swift-typecheck-module-from-interface(%t/blocked/TestCase.swiftinterface) %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase
2630
31+ // Test with -module-interface-preserve-types-as-written and -disable-module-selectors-in-module-interface
32+ // RUN: %empty-directory(%t/disabled-preserve)
33+ // RUN: %target-swift-emit-module-interface(%t/disabled-preserve/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -module-interface-preserve-types-as-written -disable-module-selectors-in-module-interface 2>%t/disabled-preserve/stderr.txt
34+ // RUN: %FileCheck --input-file %t/disabled-preserve/TestCase.swiftinterface %s --check-prefixes CHECK,CHECK-PRESERVE
35+ // RUN: %FileCheck --input-file %t/disabled-preserve/stderr.txt %s --allow-empty --check-prefix DIAG-PRESERVE-NOT-OVERRIDDEN
36+ // RUN: %target-swift-typecheck-module-from-interface(%t/disabled-preserve/TestCase.swiftinterface) %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase
37+
38+ // Test with -module-interface-preserve-types-as-written and -enable-module-selectors-in-module-interface
39+ // RUN: %empty-directory(%t/enabled-preserve)
40+ // RUN: %target-swift-emit-module-interface(%t/enabled-preserve/TestCase.swiftinterface) %s %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase -module-interface-preserve-types-as-written -enable-module-selectors-in-module-interface 2>%t/enabled-preserve/stderr.txt
41+ // RUN: %FileCheck --input-file %t/enabled-preserve/TestCase.swiftinterface %s --check-prefixes CHECK,CHECK-ENABLED
42+ // RUN: %FileCheck --input-file %t/enabled-preserve/stderr.txt %s --check-prefix DIAG-PRESERVE-OVERRIDDEN
43+ // RUN: %target-swift-typecheck-module-from-interface(%t/enabled-preserve/TestCase.swiftinterface) %clang-importer-sdk -F %clang-importer-sdk-path/frameworks -I %S/Inputs/module_selector -target %target-stable-abi-triple -module-name TestCase
44+
2745// CHECK: import enums_using_attributes
2846import enums_using_attributes
2947
3048// CHECK-LABEL: public struct Struct<T> :
3149// CHECK-ENABLED-SAME: Swift::Hashable where T : Swift::Hashable {
3250// CHECK-DISABLED-SAME: Swift.Hashable where T : Swift.Hashable {
51+ // CHECK-PRESERVE-SAME: Hashable where T : Swift.Hashable {
52+ // Preserve quirk: Hashable qualified in constraint?
3353public struct Struct < T: Hashable > : Hashable {
3454 // CHECK: public let integer:
3555 // CHECK-ENABLED-SAME: Swift::Int
3656 // CHECK-DISABLED-SAME: Swift.Int
57+ // CHECK-PRESERVE-SAME: Int
3758 public let integer : Int = 42
3859
3960 // CHECK: public let enumeration:
4061 // CHECK-ENABLED-SAME: enums_using_attributes::CFEnumWithAttr
4162 // CHECK-DISABLED-SAME: enums_using_attributes.CFEnumWithAttr
63+ // CHECK-PRESERVE-SAME: CFEnumWithAttr
4264 public let enumeration : CFEnumWithAttr = CFEnumWithAttr . first
4365
4466 // CHECK: public let t: T?
@@ -47,31 +69,37 @@ public struct Struct<T: Hashable>: Hashable {
4769 // CHECK: public static func ==
4870 // CHECK-ENABLED-SAME: (a: TestCase::Struct<T>, b: TestCase::Struct<T>) -> Swift::Bool
4971 // CHECK-DISABLED-SAME: (a: TestCase.Struct<T>, b: TestCase.Struct<T>) -> Swift.Bool
72+ // CHECK-PRESERVE-SAME: (a: TestCase.Struct<T>, b: TestCase.Struct<T>) -> Swift.Bool
5073
5174 // CHECK: public func hash
5275 // CHECK-ENABLED-SAME: (into hasher: inout Swift::Hasher)
5376 // CHECK-DISABLED-SAME: (into hasher: inout Swift.Hasher)
77+ // CHECK-PRESERVE-SAME: (into hasher: inout Swift.Hasher)
5478
5579 // CHECK: public var hashValue:
5680 // CHECK-ENABLED-SAME: Swift::Int {
5781 // CHECK-DISABLED-SAME: Swift.Int {
82+ // CHECK-PRESERVE-SAME: Swift.Int {
5883
5984 // CHECK: }
6085}
6186
6287// CHECK-ENABLED: extension TestCase::Struct {
6388// CHECK-DISABLED: extension TestCase.Struct {
89+ // CHECK-PRESERVE: extension Struct {
6490extension Struct {
6591 // CHECK-LABEL: public enum Nested {
6692 public enum Nested {
6793 // CHECK: case integer
6894 // CHECK-ENABLED-SAME: (Swift::Int)
6995 // CHECK-DISABLED-SAME: (Swift.Int)
96+ // CHECK-PRESERVE-SAME: (Int)
7097 case integer( Int )
7198
7299 // CHECK: case enumeration
73100 // CHECK-ENABLED-SAME: (enums_using_attributes::CFEnumWithAttr)
74101 // CHECK-DISABLED-SAME: (enums_using_attributes.CFEnumWithAttr)
102+ // CHECK-PRESERVE-SAME: (CFEnumWithAttr)
75103 case enumeration( CFEnumWithAttr )
76104
77105 // CHECK: case t(T)
@@ -80,6 +108,7 @@ extension Struct {
80108 // CHECK: case `struct`
81109 // CHECK-ENABLED-SAME: (TestCase::Struct<T>)
82110 // CHECK-DISABLED-SAME: (TestCase.Struct<T>)
111+ // CHECK-PRESERVE-SAME: (Struct)
83112 case `struct`( Struct )
84113
85114 // CHECK: }
@@ -90,25 +119,31 @@ extension Struct {
90119
91120// CHECK-ENABLED: extension Swift::Int {
92121// CHECK-DISABLED: extension Swift.Int {
122+ // CHECK-PRESERVE: extension Int {
123+ // Preserve quirk: Int has no module selector?
93124extension Swift : : Int {
94125 // CHECK-LABEL: public enum RetroactiveNested {
95126 public enum RetroactiveNested { }
96127}
97128
98129// CHECK-ENABLED: extension Swift::Int.TestCase::RetroactiveNested {
99130// CHECK-DISABLED: extension Swift.Int.RetroactiveNested {
131+ // CHECK-PRESERVE: extension Int.RetroactiveNested {
100132extension Int . RetroactiveNested {
101133 public func anchor( ) { }
102134}
103135
104136// CHECK-LABEL: public func fn<T>
105137// CHECK-ENABLED-SAME: (_: TestCase::Struct<T>, _: TestCase::Struct<T>.TestCase::Nested)
106138// CHECK-DISABLED-SAME: (_: TestCase.Struct<T>, _: TestCase.Struct<T>.Nested)
139+ // CHECK-PRESERVE-SAME: (_: Struct<T>, _: Struct<T>.Nested)
107140public func fn< T: Hashable > ( _: Struct < T > , _: Struct < T > . Nested ) { }
108141
109142// CHECK-LABEL: public func fn2<T>
110143// CHECK-ENABLED-SAME: (_: T) where T : Swift::Identifiable, T.ID == TestCase::Struct<Swift::Int>
111144// CHECK-DISABLED-SAME: (_: T) where T : Swift.Identifiable, T.ID == TestCase.Struct<Swift.Int>
145+ // CHECK-PRESERVE-SAME: (_: T) where T : Swift.Identifiable, T.ID == TestCase.Struct<Swift.Int>
146+ // Preserve quirk: Still qualified in constraints?
112147@available ( SwiftStdlib 5 . 1 , * )
113148public func fn2< T: Identifiable > ( _: T ) where T. ID == Struct < Int > { }
114149
@@ -118,22 +153,31 @@ public protocol Proto {
118153 // CHECK: associatedtype AssocType :
119154 // CHECK-ENABLED-SAME: Swift::Identifiable
120155 // CHECK-DISABLED-SAME: Swift.Identifiable
156+ // CHECK-PRESERVE-SAME: Identifiable
121157 associatedtype AssocType : Identifiable
122158
123159 // CHECK: typealias TypeAlias =
124160 // CHECK-ENABLED-SAME: TestCase::Struct<Swift::Int>
125161 // CHECK-DISABLED-SAME: TestCase.Struct<Swift.Int>
162+ // CHECK-PRESERVE-SAME: Struct<Int>
126163 typealias TypeAlias = Struct < Int >
127164
128165 // CHECK: typealias ID =
129- // CHECK-SAME: Self.AssocType.ID
166+ // CHECK-ENABLED-SAME: Self.AssocType.ID
167+ // CHECK-DISABLED-SAME: Self.AssocType.ID
168+ // CHECK-PRESERVE-SAME: AssocType.ID
130169 typealias ID = AssocType . ID
131170
132- // CHECK: func requirement() -> Self.AssocType.ID
171+ // CHECK: func requirement() ->
172+ // CHECK-ENABLED-SAME: Self.AssocType.ID
173+ // CHECK-DISABLED-SAME: Self.AssocType.ID
174+ // CHECK-PRESERVE-SAME: AssocType.ID
133175 func requirement( ) -> AssocType . ID
134176
135177 // CHECK: func requirement2() ->
136- // CHECK-SAME: Self.TypeAlias.Nested
178+ // CHECK-ENABLED-SAME: Self.TypeAlias.Nested
179+ // CHECK-DISABLED-SAME: Self.TypeAlias.Nested
180+ // CHECK-PRESERVE-SAME: TypeAlias.Nested
137181 func requirement2( ) -> TypeAlias . Nested
138182
139183 // CHECK: }
@@ -157,15 +201,19 @@ public struct ProtoSet<T: Proto> {
157201 // CHECK: let ids:
158202 // CHECK-ENABLED-SAME: Swift::Set<T.ID>
159203 // CHECK-DISABLED-SAME: Swift.Set<T.ID>
204+ // CHECK-PRESERVE-SAME: Set<T.ID>
160205 public let ids : Set < T . ID >
161206
162207 // CHECK: let texts:
163208 // CHECK-ENABLED-SAME: Swift::Set<T.Text>
164209 // CHECK-DISABLED-SAME: Swift.Set<T.Text>
210+ // CHECK-PRESERVE-SAME: Set<T.Text>
165211 public let texts : Set < T . Text >
166212
167213 // CHECK: let singleText:
168214 // CHECK-SAME: T.Text
169215 public let singleText : T . Text
170216}
171217
218+ // DIAG-PRESERVE-OVERRIDDEN: warning: ignoring -module-interface-preserve-types-as-written (overridden by -enable-module-selectors-in-module-interface)
219+ // DIAG-PRESERVE-NOT-OVERRIDDEN-NOT: warning: ignoring -module-interface-preserve-types-as-written (overridden by -enable-module-selectors-in-module-interface)
0 commit comments