You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sema: Suppress set accessor availability diagnostics in LoadExprs.
This fixes a regression from #72369.
The compiler now incorrectly diagnoses use of an unavailable setter in this
example:
```
func increaseBrightness(in window: UIWindow) {
// warning: setter for 'screen' was deprecated in iOS 13.0
window.screen.brightness = 1.0
}
```
While the setter is deprecated, it would not going to be called in the generated
code since `screen` is a reference type and there is no writeback through
the setter for `screen` after setting `brightness`.
Resolves rdar://129679658
x.unavailableGetter[0].b =1 // expected-error {{getter for 'unavailableGetter' is unavailable}}
174
174
175
175
x.unavailableSetter = someValue // expected-error {{setter for 'unavailableSetter' is unavailable}}
176
-
// FIXME: spurious unavailable setter error
177
-
x.unavailableSetter.a = someValue.a // expected-error {{setter for 'unavailableSetter' is unavailable}}
178
-
// FIXME: spurious unavailable setter error
179
-
x.unavailableSetter[0]= someValue.a // expected-error {{setter for 'unavailableSetter' is unavailable}}
180
-
// FIXME: spurious unavailable setter error
181
-
x.unavailableSetter[0].b =1 // expected-error {{setter for 'unavailableSetter' is unavailable}}
176
+
x.unavailableSetter.a = someValue.a
177
+
x.unavailableSetter[0]= someValue.a
178
+
x.unavailableSetter[0].b =1
182
179
183
180
x.unavailableGetterAndSetter = someValue // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
184
-
// FIXME: spurious unavailable setter error
185
-
x.unavailableGetterAndSetter.a = someValue.a // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
181
+
x.unavailableGetterAndSetter.a = someValue.a // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
186
182
// FIXME: missing diagnostic for getter
187
-
// FIXME: spurious unavailable setter error
188
-
x.unavailableGetterAndSetter[0]= someValue.a // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
189
-
// FIXME: spurious unavailable setter error
190
-
x.unavailableGetterAndSetter[0].b =1 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
183
+
x.unavailableGetterAndSetter[0]= someValue.a
184
+
x.unavailableGetterAndSetter[0].b =1 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
_ =x[keyPath: \.unavailableGetterAndSetter] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
252
246
_ =x[keyPath: \.unavailableGetterAndSetter.a] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
253
247
_ =x[keyPath: \.unavailableGetterAndSetter[0]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
254
248
_ =x[keyPath: \.unavailableGetterAndSetter[0].b] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
255
-
// FIXME: spurious unavailable setter error
256
-
_ =a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter.a.b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
257
-
// FIXME: spurious unavailable setter error
258
-
_ =a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter[0].b)]] // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter 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}}
x[keyPath: \.unavailableGetterAndSetter]= someValue // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
327
317
x[keyPath: \.unavailableGetterAndSetter.a]= someValue.a // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
328
318
x[keyPath: \.unavailableGetterAndSetter[0]]= someValue.a // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
329
319
// FIXME: spurious unavailable setter error
330
320
x[keyPath: \.unavailableGetterAndSetter[0].b]=1 // expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
331
-
// FIXME: spurious unavailable setter error
332
-
a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter.a.b)]]=0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
333
-
// FIXME: spurious unavailable setter error
334
-
a[keyPath: \.[takesIntInOut(&x.unavailableGetterAndSetter[0].b)]]=0 // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} 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}}
takesInOut(&x.unavailableGetter[0].b) // expected-error {{getter for 'unavailableGetter' is unavailable}}
406
394
407
395
takesInOut(&x.unavailableSetter) // expected-error {{setter for 'unavailableSetter' is unavailable}}
408
-
// FIXME: spurious unavailable setter error
409
-
takesInOut(&x.unavailableSetter.a) // expected-error {{setter for 'unavailableSetter' is unavailable}}
410
-
// FIXME: spurious unavailable setter error
411
-
takesInOut(&x.unavailableSetter[0]) // expected-error {{setter for 'unavailableSetter' is unavailable}}
412
-
// FIXME: spurious unavailable setter error
413
-
takesInOut(&x.unavailableSetter[0].b) // expected-error {{setter for 'unavailableSetter' is unavailable}}
396
+
takesInOut(&x.unavailableSetter.a)
397
+
takesInOut(&x.unavailableSetter[0])
398
+
takesInOut(&x.unavailableSetter[0].b)
414
399
415
400
takesInOut(&x.unavailableGetterAndSetter) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
416
-
// FIXME: spurious unavailable setter error
417
-
takesInOut(&x.unavailableGetterAndSetter.a) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
418
-
// FIXME: spurious unavailable setter error
419
-
takesInOut(&x.unavailableGetterAndSetter[0]) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
420
-
// FIXME: spurious unavailable setter error
421
-
takesInOut(&x.unavailableGetterAndSetter[0].b) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}} expected-error {{setter for 'unavailableGetterAndSetter' is unavailable}}
401
+
takesInOut(&x.unavailableGetterAndSetter.a) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
402
+
takesInOut(&x.unavailableGetterAndSetter[0]) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
403
+
takesInOut(&x.unavailableGetterAndSetter[0].b) // expected-error {{getter for 'unavailableGetterAndSetter' is unavailable}}
0 commit comments