11// RUN: %empty-directory(%t)
22// RUN: %target-swift-frontend -emit-module -o %t/Test.swiftmodule -emit-parseable-module-interface-path %t/Test.swiftinterface -module-name Test %s
3- // RUN: %FileCheck %s < %t/Test.swiftinterface
4- // RUN: %target-swift-frontend -emit-module -o /dev/null -merge-modules %t/Test.swiftmodule -disable-objc-attr-requires-foundation-module -emit-parseable-module-interface-path - -module-name Test | %FileCheck %s
3+ // RUN: %FileCheck %s --check-prefix FROMSOURCE --check-prefix CHECK < %t/Test.swiftinterface
4+ // RUN: %target-swift-frontend -emit-module -o /dev/null -merge-modules %t/Test.swiftmodule -disable-objc-attr-requires-foundation-module -emit-parseable-module-interface-path %t/TestFromModule.swiftinterface -module-name Test
5+ // RUN: %FileCheck %s --check-prefix FROMMODULE --check-prefix CHECK < %t/TestFromModule.swiftinterface
56
67// CHECK: public struct Foo : Hashable {
78public struct Foo : Hashable {
89 // CHECK: public var inlinableGetPublicSet: [[INT:(Swift.)?Int]] {
910 public var inlinableGetPublicSet : Int {
10- // CHECK: @inlinable get {
11- // CHECK-NEXT: return 3
12- // CHECK-NEXT: }
11+ // FROMSOURCE: @inlinable get {
12+ // FROMMODULE: @inlinable get{{$}}
13+ // FROMSOURCE-NEXT: return 3
14+ // FROMSOURCE-NEXT: }
1315 @inlinable
1416 get {
1517 return 3
@@ -35,11 +37,11 @@ public struct Foo: Hashable {
3537 // CHECK-NEXT: {{^}} }
3638 }
3739
38-
3940 // CHECK: @_transparent public var transparent: [[INT]] {
40- // CHECK-NEXT: get {
41- // CHECK-NEXT: return 34
42- // CHECK-NEXT: }
41+ // FROMMODULE-NEXT: get{{$}}
42+ // FROMSOURCE-NEXT: get {
43+ // FROMSOURCE-NEXT: return 34
44+ // FROMSOURCE-NEXT: }
4345 // CHECK-NEXT: }
4446 @_transparent
4547 public var transparent : Int {
@@ -52,17 +54,18 @@ public struct Foo: Hashable {
5254 get {
5355 return 34
5456 }
55- // CHECK-NEXT: @_transparent set[[NEWVALUE]] {
56- // CHECK-NOT: #if false
57- // CHECK-NOT: print("I should not appear")
58- // CHECK-NOT: #else
59- // CHECK-NOT: #if false
60- // CHECK-NOT: print("I also should not")
61- // CHECK-NOT: #else
62- // CHECK: print("I am set to \(newValue)")
63- // CHECK-NOT: #endif
64- // CHECK-NOT: #endif
65- // CHECK-NEXT: }
57+ // FROMMODULE-NEXT: @_transparent set[[NEWVALUE]]{{$}}
58+ // FROMSOURCE-NEXT: @_transparent set[[NEWVALUE]] {
59+ // FROMSOURCE-NOT: #if false
60+ // FROMSOURCE-NOT: print("I should not appear")
61+ // FROMSOURCE-NOT: #else
62+ // FROMSOURCE-NOT: #if false
63+ // FROMSOURCE-NOT: print("I also should not")
64+ // FROMSOURCE-NOT: #else
65+ // FROMSOURCE: print("I am set to \(newValue)")
66+ // FROMSOURCE-NOT: #endif
67+ // FROMSOURCE-NOT: #endif
68+ // FROMSOURCE-NEXT: }
6669 @_transparent
6770 set {
6871 #if false
@@ -80,20 +83,22 @@ public struct Foo: Hashable {
8083 // CHECK: @inlinable public var inlinableProperty: [[INT]] {
8184 @inlinable
8285 public var inlinableProperty : Int {
83- // CHECK: get {
84- // CHECK: return 32
85- // CHECK: }
86+ // FROMMODULE: get{{$}}
87+ // FROMSOURCE: get {
88+ // FROMSOURCE-NEXT: return 32
89+ // FROMSOURCE-NEXT: }
8690 get {
8791 return 32
8892 }
8993
90- // CHECK: set[[NEWVALUE]] {
91- // CHECK-NOT: #if true
92- // CHECK: print("I am set to \(newValue)")
93- // CHECK-NOT: #else
94- // CHECK-NOT: print("I should not appear")
95- // CHECK-NOT #endif
96- // CHECK: }
94+ // FROMMODULE: set[[NEWVALUE]]{{$}}
95+ // FROMSOURCE: set[[NEWVALUE]] {
96+ // FROMSOURCE-NOT: #if true
97+ // FROMSOURCE: print("I am set to \(newValue)")
98+ // FROMSOURCE-NOT: #else
99+ // FROMSOURCE-NOT: print("I should not appear")
100+ // FROMSOURCE-NOT #endif
101+ // FROMSOURCE: }
97102 set {
98103 #if true
99104 print ( " I am set to \( newValue) " )
@@ -107,16 +112,18 @@ public struct Foo: Hashable {
107112 // CHECK: @inlinable public var inlinableReadAndModify: [[INT]] {
108113 @inlinable
109114 public var inlinableReadAndModify : Int {
110- // CHECK: _read {
111- // CHECK-NEXT: yield 0
112- // CHECK-NEXT: }
115+ // FROMMODULE: _read{{$}}
116+ // FROMSOURCE: _read {
117+ // FROMSOURCE-NEXT: yield 0
118+ // FROMSOURCE-NEXT: }
113119 _read {
114120 yield 0
115121 }
116- // CHECK: _modify {
117- // CHECK-NEXT: var x = 0
118- // CHECK-NEXT: yield &x
119- // CHECK-NEXT: }
122+ // FROMMODULE: _modify{{$}}
123+ // FROMSOURCE: _modify {
124+ // FROMSOURCE-NEXT: var x = 0
125+ // FROMSOURCE-NEXT: yield &x
126+ // FROMSOURCE-NEXT: }
120127 _modify {
121128 var x = 0
122129 yield & x
@@ -126,9 +133,10 @@ public struct Foo: Hashable {
126133
127134 // CHECK: public var inlinableReadNormalModify: [[INT]] {
128135 public var inlinableReadNormalModify : Int {
129- // CHECK: @inlinable _read {
130- // CHECK-NEXT: yield 0
131- // CHECK-NEXT: }
136+ // FROMMODULE: @inlinable _read{{$}}
137+ // FROMSOURCE: @inlinable _read {
138+ // FROMSOURCE-NEXT: yield 0
139+ // FROMSOURCE-NEXT: }
132140 @inlinable _read {
133141 yield 0
134142 }
@@ -153,10 +161,11 @@ public struct Foo: Hashable {
153161 yield 0
154162 }
155163
156- // CHECK: @inlinable _modify {
157- // CHECK-NEXT: var x = 0
158- // CHECK-NEXT: yield &x
159- // CHECK-NEXT: }
164+ // FROMMODULE: @inlinable _modify{{$}}
165+ // FROMSOURCE: @inlinable _modify {
166+ // FROMSOURCE-NEXT: var x = 0
167+ // FROMSOURCE-NEXT: yield &x
168+ // FROMSOURCE-NEXT: }
160169 @inlinable _modify {
161170 var x = 0
162171 yield & x
@@ -176,12 +185,13 @@ public struct Foo: Hashable {
176185 // CHECK-NEXT: }
177186 }
178187
179- // CHECK: @inlinable public func inlinableMethod() {
180- // CHECK-NOT: #if NO
181- // CHECK-NOT: print("Hello, world!")
182- // CHECK-NOT: #endif
183- // CHECK: print("Goodbye, world!")
184- // CHECK-NEXT: }
188+ // FROMMODULE: @inlinable public func inlinableMethod(){{$}}
189+ // FROMSOURCE: @inlinable public func inlinableMethod() {
190+ // FROMSOURCE-NOT: #if NO
191+ // FROMSOURCE-NOT: print("Hello, world!")
192+ // FROMSOURCE-NOT: #endif
193+ // FROMSOURCE: print("Goodbye, world!")
194+ // FROMSOURCE-NEXT: }
185195 @inlinable
186196 public func inlinableMethod( ) {
187197 #if NO
@@ -191,9 +201,10 @@ public struct Foo: Hashable {
191201 }
192202
193203
194- // CHECK: @_transparent [[ATTRS:(mutating public|public mutating)]] func transparentMethod() {
195- // CHECK-NEXT: inlinableProperty = 4
196- // CHECK-NEXT: }
204+ // FROMMODULE: @_transparent [[ATTRS:(mutating public|public mutating)]] func transparentMethod(){{$}}
205+ // FROMSOURCE: @_transparent [[ATTRS:(mutating public|public mutating)]] func transparentMethod() {
206+ // FROMSOURCE-NEXT: inlinableProperty = 4
207+ // FROMSOURCE-NEXT: }
197208 @_transparent
198209 mutating public func transparentMethod( ) {
199210 inlinableProperty = 4
@@ -207,15 +218,17 @@ public struct Foo: Hashable {
207218
208219 // CHECK: public subscript(i: [[INT]]) -> [[INT]] {
209220 // CHECK-NEXT: get{{$}}
210- // CHECK-NEXT: @inlinable set[[NEWVALUE]] { print("set") }
221+ // FROMSOURCE-NEXT: @inlinable set[[NEWVALUE]] { print("set") }
222+ // FROMMODULE-NEXT: @inlinable set[[NEWVALUE]]{{$}}
211223 // CHECK-NEXT: }
212224 public subscript( i: Int ) -> Int {
213225 get { return 0 }
214226 @inlinable set { print ( " set " ) }
215227 }
216228
217229 // CHECK: public subscript(j: [[INT]], k: [[INT]]) -> [[INT]] {
218- // CHECK-NEXT: @inlinable get { return 0 }
230+ // FROMMODULE-NEXT: @inlinable get{{$}}
231+ // FROMSOURCE-NEXT: @inlinable get { return 0 }
219232 // CHECK-NEXT: set[[NEWVALUE]]{{$}}
220233 // CHECK-NEXT: }
221234 public subscript( j: Int , k: Int ) -> Int {
@@ -224,20 +237,23 @@ public struct Foo: Hashable {
224237 }
225238
226239 // CHECK: @inlinable public subscript(l: [[INT]], m: [[INT]], n: [[INT]]) -> [[INT]] {
227- // CHECK-NEXT: get { return 0 }
228- // CHECK-NEXT: set[[NEWVALUE]] { print("set") }
240+ // FROMMODULE-NEXT: get{{$}}
241+ // FROMSOURCE-NEXT: get { return 0 }
242+ // FROMMODULE-NEXT: set[[NEWVALUE]]{{$}}
243+ // FROMSOURCE-NEXT: set[[NEWVALUE]] { print("set") }
229244 // CHECK-NEXT: }
230245 @inlinable
231246 public subscript( l: Int , m: Int , n: Int ) -> Int {
232247 get { return 0 }
233248 set { print ( " set " ) }
234249 }
235250
236- // CHECK: public init(value: [[INT]]) {
237- // CHECK-NEXT: topLevelUsableFromInline()
238- // CHECK-NEXT: noAccessors = value
239- // CHECK-NEXT: hasDidSet = value
240- // CHECK-NEXT: }
251+ // FROMMODULE: @inlinable public init(value: [[INT]]){{$}}
252+ // FROMSOURCE: @inlinable public init(value: [[INT]]) {
253+ // FROMSOURCE-NEXT: topLevelUsableFromInline()
254+ // FROMSOURCE-NEXT: noAccessors = value
255+ // FROMSOURCE-NEXT: hasDidSet = value
256+ // FROMSOURCE-NEXT: }
241257 @inlinable public init ( value: Int ) {
242258 topLevelUsableFromInline ( )
243259 noAccessors = value
@@ -266,9 +282,10 @@ internal func topLevelUsableFromInline() {
266282 topLevelPrivate ( )
267283}
268284
269- // CHECK: @inlinable public func topLevelInlinable() {
270- // CHECK-NEXT: topLevelUsableFromInline()
271- // CHECK-NEXT: }
285+ // FROMMODULE: @inlinable public func topLevelInlinable(){{$}}
286+ // FROMSOURCE: @inlinable public func topLevelInlinable() {
287+ // FROMSOURCE-NEXT: topLevelUsableFromInline()
288+ // FROMSOURCE-NEXT: }
272289@inlinable public func topLevelInlinable( ) {
273290 topLevelUsableFromInline ( )
274291}
@@ -278,9 +295,10 @@ public class HasInlinableDeinit {
278295 // CHECK: public init(){{$}}
279296 public init ( ) { }
280297
281- // CHECK: [[OBJC:(@objc )?]]@inlinable deinit {
282- // CHECK-NEXT: print("goodbye")
283- // CHECK-NEXT: }
298+ // FROMMODULE: [[OBJC:(@objc )?]]@inlinable deinit{{$}}
299+ // FROMSOURCE: [[OBJC:(@objc )?]]@inlinable deinit {
300+ // FROMSOURCE-NEXT: print("goodbye")
301+ // FROMSOURCE-NEXT: }
284302 @inlinable deinit {
285303 print ( " goodbye " )
286304 }
0 commit comments