@@ -218,6 +218,44 @@ class SubClassOverridingPotentiallyUnavailableMethod : ClassWithPotentiallyUnava
218218 }
219219}
220220
221+ protocol BaseProto {
222+ associatedtype A
223+
224+ var property : A { get set } // expected-note {{overridden declaration is here}}
225+
226+ @available ( OSX 10 . 51 , * )
227+ var newProperty : A { get set } // expected-note {{overridden declaration is here}}
228+
229+ func method( ) // expected-note {{overridden declaration is here}}
230+ }
231+
232+ protocol RefinesBaseProto_AsAvailableOverrides : BaseProto {
233+ var property : A { get set }
234+
235+ @available ( OSX 10 . 51 , * )
236+ var newProperty : A { get set }
237+
238+ func method( )
239+ }
240+
241+ protocol RefinesBaseProto_LessAvailableOverrides : BaseProto {
242+ @available ( OSX 10 . 52 , * )
243+ var property : A { get set } // expected-error {{overriding 'property' must be as available as declaration it overrides}}
244+
245+ @available ( OSX 10 . 52 , * )
246+ var newProperty : A { get set } // expected-error {{overriding 'newProperty' must be as available as declaration it overrides}}
247+
248+ @available ( OSX 10 . 52 , * )
249+ func method( ) // expected-error {{overriding 'method' must be as available as declaration it overrides}}
250+ }
251+
252+ @available ( OSX 10 . 52 , * )
253+ protocol RefinesBaseProto_LessAvailable : BaseProto {
254+ var property : A { get set }
255+ var newProperty : A { get set }
256+ func method( )
257+ }
258+
221259class ClassWithPotentiallyUnavailableOverloadedMethod {
222260 @available ( OSX, introduced: 10.9 )
223261 func overloadedMethod( ) { }
0 commit comments