1
1
// RUN: %empty-directory(%t)
2
2
// 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
5
6
6
7
// CHECK: public struct Foo : Hashable {
7
8
public struct Foo : Hashable {
8
9
// CHECK: public var inlinableGetPublicSet: [[INT:(Swift.)?Int]] {
9
10
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: }
13
15
@inlinable
14
16
get {
15
17
return 3
@@ -35,11 +37,11 @@ public struct Foo: Hashable {
35
37
// CHECK-NEXT: {{^}} }
36
38
}
37
39
38
-
39
40
// 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: }
43
45
// CHECK-NEXT: }
44
46
@_transparent
45
47
public var transparent : Int {
@@ -52,17 +54,18 @@ public struct Foo: Hashable {
52
54
get {
53
55
return 34
54
56
}
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: }
66
69
@_transparent
67
70
set {
68
71
#if false
@@ -80,20 +83,22 @@ public struct Foo: Hashable {
80
83
// CHECK: @inlinable public var inlinableProperty: [[INT]] {
81
84
@inlinable
82
85
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: }
86
90
get {
87
91
return 32
88
92
}
89
93
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: }
97
102
set {
98
103
#if true
99
104
print ( " I am set to \( newValue) " )
@@ -107,16 +112,18 @@ public struct Foo: Hashable {
107
112
// CHECK: @inlinable public var inlinableReadAndModify: [[INT]] {
108
113
@inlinable
109
114
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: }
113
119
_read {
114
120
yield 0
115
121
}
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: }
120
127
_modify {
121
128
var x = 0
122
129
yield & x
@@ -126,9 +133,10 @@ public struct Foo: Hashable {
126
133
127
134
// CHECK: public var inlinableReadNormalModify: [[INT]] {
128
135
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: }
132
140
@inlinable _read {
133
141
yield 0
134
142
}
@@ -153,10 +161,11 @@ public struct Foo: Hashable {
153
161
yield 0
154
162
}
155
163
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: }
160
169
@inlinable _modify {
161
170
var x = 0
162
171
yield & x
@@ -176,12 +185,13 @@ public struct Foo: Hashable {
176
185
// CHECK-NEXT: }
177
186
}
178
187
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: }
185
195
@inlinable
186
196
public func inlinableMethod( ) {
187
197
#if NO
@@ -191,9 +201,10 @@ public struct Foo: Hashable {
191
201
}
192
202
193
203
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: }
197
208
@_transparent
198
209
mutating public func transparentMethod( ) {
199
210
inlinableProperty = 4
@@ -207,15 +218,17 @@ public struct Foo: Hashable {
207
218
208
219
// CHECK: public subscript(i: [[INT]]) -> [[INT]] {
209
220
// 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]]{{$}}
211
223
// CHECK-NEXT: }
212
224
public subscript( i: Int ) -> Int {
213
225
get { return 0 }
214
226
@inlinable set { print ( " set " ) }
215
227
}
216
228
217
229
// 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 }
219
232
// CHECK-NEXT: set[[NEWVALUE]]{{$}}
220
233
// CHECK-NEXT: }
221
234
public subscript( j: Int , k: Int ) -> Int {
@@ -224,20 +237,23 @@ public struct Foo: Hashable {
224
237
}
225
238
226
239
// 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") }
229
244
// CHECK-NEXT: }
230
245
@inlinable
231
246
public subscript( l: Int , m: Int , n: Int ) -> Int {
232
247
get { return 0 }
233
248
set { print ( " set " ) }
234
249
}
235
250
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: }
241
257
@inlinable public init ( value: Int ) {
242
258
topLevelUsableFromInline ( )
243
259
noAccessors = value
@@ -266,9 +282,10 @@ internal func topLevelUsableFromInline() {
266
282
topLevelPrivate ( )
267
283
}
268
284
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: }
272
289
@inlinable public func topLevelInlinable( ) {
273
290
topLevelUsableFromInline ( )
274
291
}
@@ -278,9 +295,10 @@ public class HasInlinableDeinit {
278
295
// CHECK: public init(){{$}}
279
296
public init ( ) { }
280
297
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: }
284
302
@inlinable deinit {
285
303
print ( " goodbye " )
286
304
}
0 commit comments