Skip to content

Commit 8db4b67

Browse files
committed
Tests: Consolidate takesInOut() helper in availability_accessors.swift.
NFC.
1 parent 0f511e1 commit 8db4b67

File tree

1 file changed

+40
-44
lines changed

1 file changed

+40
-44
lines changed

test/Sema/availability_accessors.swift

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ struct BaseStruct<T: ValueProto> {
8383
}
8484
}
8585

86-
func takesIntInOut(_ i: inout Int) -> Int {
87-
return 0
86+
@discardableResult func takesInOut<T>(_ t: inout T) -> T {
87+
return t
8888
}
8989

90-
func testRValueLoads_Struct() {
90+
func testDiscardedRValueLoads_Struct() {
9191
var x = BaseStruct<StructValue>() // expected-warning {{variable 'x' was never mutated; consider changing to 'let' constant}}
9292

9393
_ = x.available
@@ -111,7 +111,7 @@ func testRValueLoads_Struct() {
111111
_ = x.unavailableGetterAndSetter[0].b // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
112112
}
113113

114-
func testRValueLoads_Class() {
114+
func testDiscardedRValueLoads_Class() {
115115
var x = BaseStruct<ClassValue>() // expected-warning {{variable 'x' was never mutated; consider changing to 'let' constant}}
116116

117117
_ = x.available
@@ -184,70 +184,70 @@ func testLValueAssignments_Class(_ someValue: ClassValue) {
184184
x.unavailableGetterAndSetter[0].b = 1 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
185185
}
186186

187-
func testKeyPathLoads_Struct() {
187+
func testDiscardedKeyPathLoads_Struct() {
188188
let a = [0]
189189
var x = BaseStruct<StructValue>()
190190

191191
_ = x[keyPath: \.available]
192192
_ = x[keyPath: \.available.a]
193193
_ = x[keyPath: \.available[0]]
194194
_ = x[keyPath: \.available[0].b]
195-
_ = a[keyPath: \.[takesIntInOut(&x.available.a.b)]]
196-
_ = a[keyPath: \.[takesIntInOut(&x.available[0].b)]]
195+
_ = a[keyPath: \.[takesInOut(&x.available.a.b)]]
196+
_ = a[keyPath: \.[takesInOut(&x.available[0].b)]]
197197

198198
_ = x[keyPath: \.unavailableGetter] // expected-error {{getter for 'unavailableGetter' is unavailable}}
199199
_ = x[keyPath: \.unavailableGetter.a] // expected-error {{getter for 'unavailableGetter' is unavailable}}
200200
_ = x[keyPath: \.unavailableGetter[0]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
201201
_ = x[keyPath: \.unavailableGetter[0].b] // expected-error {{getter for 'unavailableGetter' is unavailable}}
202-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetter.a.b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
203-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetter[0].b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
202+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetter.a.b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
203+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetter[0].b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
204204

205205
_ = x[keyPath: \.unavailableSetter]
206206
_ = x[keyPath: \.unavailableSetter.a]
207207
_ = x[keyPath: \.unavailableSetter[0]]
208208
_ = x[keyPath: \.unavailableSetter[0].b]
209-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableSetter.a.b)]] // expected-error {{setter for 'unavailableSetter' is unavailable}}
210-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableSetter[0].b)]] // expected-error {{setter for 'unavailableSetter' is unavailable}}
209+
_ = a[keyPath: \.[takesInOut(&x.unavailableSetter.a.b)]] // expected-error {{setter for 'unavailableSetter' is unavailable}}
210+
_ = a[keyPath: \.[takesInOut(&x.unavailableSetter[0].b)]] // expected-error {{setter for 'unavailableSetter' is unavailable}}
211211

212212
_ = x[keyPath: \.unavailableGetterAndSetter] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
213213
_ = x[keyPath: \.unavailableGetterAndSetter.a] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
214214
_ = x[keyPath: \.unavailableGetterAndSetter[0]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
215215
_ = x[keyPath: \.unavailableGetterAndSetter[0].b] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
216-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter.a.b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
217-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter[0].b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
216+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter.a.b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
217+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter[0].b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
218218
}
219219

220-
func testKeyPathLoads_Class() {
220+
func testDiscardedKeyPathLoads_Class() {
221221
let a = [0]
222222
var x = BaseStruct<ClassValue>() // expected-warning {{variable 'x' was never mutated; consider changing to 'let' constant}}
223223

224224
_ = x[keyPath: \.available]
225225
_ = x[keyPath: \.available.a]
226226
_ = x[keyPath: \.available[0]]
227227
_ = x[keyPath: \.available[0].b]
228-
_ = a[keyPath: \.[takesIntInOut(&x.available.a.b)]]
229-
_ = a[keyPath: \.[takesIntInOut(&x.available[0].b)]]
228+
_ = a[keyPath: \.[takesInOut(&x.available.a.b)]]
229+
_ = a[keyPath: \.[takesInOut(&x.available[0].b)]]
230230

231231
_ = x[keyPath: \.unavailableGetter] // expected-error {{getter for 'unavailableGetter' is unavailable}}
232232
_ = x[keyPath: \.unavailableGetter.a] // expected-error {{getter for 'unavailableGetter' is unavailable}}
233233
_ = x[keyPath: \.unavailableGetter[0]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
234234
_ = x[keyPath: \.unavailableGetter[0].b] // expected-error {{getter for 'unavailableGetter' is unavailable}}
235-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetter.a.b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
236-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetter[0].b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
235+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetter.a.b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
236+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetter[0].b)]] // expected-error {{getter for 'unavailableGetter' is unavailable}}
237237

238238
_ = x[keyPath: \.unavailableSetter]
239239
_ = x[keyPath: \.unavailableSetter.a]
240240
_ = x[keyPath: \.unavailableSetter[0]]
241241
_ = x[keyPath: \.unavailableSetter[0].b]
242-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableSetter.a.b)]]
243-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableSetter[0].b)]]
242+
_ = a[keyPath: \.[takesInOut(&x.unavailableSetter.a.b)]]
243+
_ = a[keyPath: \.[takesInOut(&x.unavailableSetter[0].b)]]
244244

245245
_ = x[keyPath: \.unavailableGetterAndSetter] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
246246
_ = x[keyPath: \.unavailableGetterAndSetter.a] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
247247
_ = x[keyPath: \.unavailableGetterAndSetter[0]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
248248
_ = x[keyPath: \.unavailableGetterAndSetter[0].b] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
249-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter.a.b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
250-
_ = a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter[0].b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
249+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter.a.b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
250+
_ = a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter[0].b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
251251
}
252252

253253
func testKeyPathAssignments_Struct(_ someValue: StructValue) {
@@ -259,29 +259,29 @@ func testKeyPathAssignments_Struct(_ someValue: StructValue) {
259259
x[keyPath: \.available[0]] = someValue.a
260260
x[keyPath: \.available[0].b] = 1
261261
x[keyPath: \.available] = someValue
262-
a[keyPath: \.[takesIntInOut(&x.available.a.b)]] = 0
263-
a[keyPath: \.[takesIntInOut(&x.available[0].b)]] = 0
262+
a[keyPath: \.[takesInOut(&x.available.a.b)]] = 0
263+
a[keyPath: \.[takesInOut(&x.available[0].b)]] = 0
264264

265265
x[keyPath: \.unavailableGetter] = someValue
266266
x[keyPath: \.unavailableGetter.a] = someValue.a // FIXME: missing diagnostic for getter
267267
x[keyPath: \.unavailableGetter[0]] = someValue.a // FIXME: missing diagnostic for getter
268268
x[keyPath: \.unavailableGetter[0].b] = 1 // FIXME: missing diagnostic for getter
269-
a[keyPath: \.[takesIntInOut(&x.unavailableGetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
270-
a[keyPath: \.[takesIntInOut(&x.unavailableGetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
269+
a[keyPath: \.[takesInOut(&x.unavailableGetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
270+
a[keyPath: \.[takesInOut(&x.unavailableGetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
271271

272272
x[keyPath: \.unavailableSetter] = someValue // expected-error {{setter for 'unavailableSetter' is unavailable}}
273273
x[keyPath: \.unavailableSetter.a] = someValue.a // expected-error {{setter for 'unavailableSetter' is unavailable}}
274274
x[keyPath: \.unavailableSetter[0]] = someValue.a // expected-error {{setter for 'unavailableSetter' is unavailable}}
275275
x[keyPath: \.unavailableSetter[0].b] = 1 // expected-error {{setter for 'unavailableSetter' is unavailable}}
276-
a[keyPath: \.[takesIntInOut(&x.unavailableSetter.a.b)]] = 0 // expected-error {{setter for 'unavailableSetter' is unavailable}}
277-
a[keyPath: \.[takesIntInOut(&x.unavailableSetter[0].b)]] = 0 // expected-error {{setter for 'unavailableSetter' is unavailable}}
276+
a[keyPath: \.[takesInOut(&x.unavailableSetter.a.b)]] = 0 // expected-error {{setter for 'unavailableSetter' is unavailable}}
277+
a[keyPath: \.[takesInOut(&x.unavailableSetter[0].b)]] = 0 // expected-error {{setter for 'unavailableSetter' is unavailable}}
278278

279279
x[keyPath: \.unavailableGetterAndSetter] = someValue // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
280280
x[keyPath: \.unavailableGetterAndSetter.a] = someValue.a // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
281281
x[keyPath: \.unavailableGetterAndSetter[0]] = someValue.a // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
282282
x[keyPath: \.unavailableGetterAndSetter[0].b] = 1 // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
283-
a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
284-
a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
283+
a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
284+
a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
285285
}
286286

287287
func testKeyPathAssignments_Class(_ someValue: ClassValue) {
@@ -293,15 +293,15 @@ func testKeyPathAssignments_Class(_ someValue: ClassValue) {
293293
x[keyPath: \.available[0]] = someValue.a
294294
x[keyPath: \.available[0].b] = 1
295295
x[keyPath: \.available] = someValue
296-
a[keyPath: \.[takesIntInOut(&x.available.a.b)]] = 0
297-
a[keyPath: \.[takesIntInOut(&x.available[0].b)]] = 0
296+
a[keyPath: \.[takesInOut(&x.available.a.b)]] = 0
297+
a[keyPath: \.[takesInOut(&x.available[0].b)]] = 0
298298

299299
x[keyPath: \.unavailableGetter] = someValue
300300
x[keyPath: \.unavailableGetter.a] = someValue.a // FIXME: missing diagnostic for getter
301301
x[keyPath: \.unavailableGetter[0]] = someValue.a // FIXME: missing diagnostic for getter
302302
x[keyPath: \.unavailableGetter[0].b] = 1 // FIXME: missing diagnostic for getter
303-
a[keyPath: \.[takesIntInOut(&x.unavailableGetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
304-
a[keyPath: \.[takesIntInOut(&x.unavailableGetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
303+
a[keyPath: \.[takesInOut(&x.unavailableGetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
304+
a[keyPath: \.[takesInOut(&x.unavailableGetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetter' is unavailable}}
305305

306306
x[keyPath: \.unavailableSetter] = someValue // expected-error {{setter for 'unavailableSetter' is unavailable}}
307307
// FIXME: spurious unavailable setter error
@@ -310,16 +310,16 @@ func testKeyPathAssignments_Class(_ someValue: ClassValue) {
310310
x[keyPath: \.unavailableSetter[0]] = someValue.a // expected-error {{setter for 'unavailableSetter' is unavailable}}
311311
// FIXME: spurious unavailable setter error
312312
x[keyPath: \.unavailableSetter[0].b] = 1 // expected-error {{setter for 'unavailableSetter' is unavailable}}
313-
a[keyPath: \.[takesIntInOut(&x.unavailableSetter.a.b)]] = 0
314-
a[keyPath: \.[takesIntInOut(&x.unavailableSetter[0].b)]] = 0
313+
a[keyPath: \.[takesInOut(&x.unavailableSetter.a.b)]] = 0
314+
a[keyPath: \.[takesInOut(&x.unavailableSetter[0].b)]] = 0
315315

316316
x[keyPath: \.unavailableGetterAndSetter] = someValue // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
317317
x[keyPath: \.unavailableGetterAndSetter.a] = someValue.a // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
318318
x[keyPath: \.unavailableGetterAndSetter[0]] = someValue.a // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
319319
// FIXME: spurious unavailable setter error
320320
x[keyPath: \.unavailableGetterAndSetter[0].b] = 1 // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
321-
a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
322-
a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
321+
a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter.a.b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
322+
a[keyPath: \.[takesInOut(&x.unavailableGetterAndSetter[0].b)]] = 0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
323323
}
324324

325325
func testMutatingStructMember() {
@@ -351,9 +351,7 @@ func testMutatingStructMember() {
351351
_ = a[x.unavailableGetterAndSetter[0].setToZero()] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
352352
}
353353

354-
func testPassAsInOutParameter_Struct() {
355-
func takesInOut<T>(_ t: inout T) {}
356-
354+
func testIgnoredApplyOfFuncWithInOutParam_Struct() {
357355
var x = BaseStruct<StructValue>()
358356

359357
takesInOut(&x.available)
@@ -377,9 +375,7 @@ func testPassAsInOutParameter_Struct() {
377375
takesInOut(&x.unavailableGetterAndSetter[0].b) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
378376
}
379377

380-
func testPassAsInOutParameter_Class() {
381-
func takesInOut<T>(_ t: inout T) {}
382-
378+
func testIgnoredApplyOfFuncWithInOutParam_Class() {
383379
var x = BaseStruct<ClassValue>()
384380

385381
takesInOut(&x.available)

0 commit comments

Comments
 (0)