@@ -15,9 +15,15 @@ struct Available51Wrapper<T> {
1515 var wrappedValue : T
1616}
1717
18+ @available ( * , deprecated)
19+ @propertyWrapper
20+ struct DeprecatedWrapper < T> {
21+ var wrappedValue : T
22+ }
23+
1824@available ( * , unavailable)
1925@propertyWrapper
20- struct UnavailableWrapper < T> { // expected-note 6 {{'UnavailableWrapper' has been explicitly marked unavailable here}}
26+ struct UnavailableWrapper < T> { // expected-note 8 {{'UnavailableWrapper' has been explicitly marked unavailable here}}
2127 var wrappedValue : T
2228}
2329
@@ -26,7 +32,7 @@ struct WrappedValueUnavailableOnMacOS<T> {
2632 init ( wrappedValue: T ) { fatalError ( ) }
2733
2834 @available ( macOS, unavailable)
29- var wrappedValue : T { // expected-note 6 {{'wrappedValue' has been explicitly marked unavailable here}}
35+ var wrappedValue : T { // expected-note 9 {{'wrappedValue' has been explicitly marked unavailable here}}
3036 get { fatalError ( ) }
3137 set { fatalError ( ) }
3238 }
@@ -49,7 +55,10 @@ struct AlwaysAvailableStruct { // expected-note 3 {{add @available attribute to
4955
5056 @Available51Wrapper var available51Explicit : S // expected-error {{'Available51Wrapper' is only available in macOS 51 or newer}}
5157 @Available51Wrapper var available51Inferred = S ( ) // expected-error {{'Available51Wrapper' is only available in macOS 51 or newer}}
52-
58+
59+ @DeprecatedWrapper var deprecatedExplicit : S // expected-warning {{'DeprecatedWrapper' is deprecated}}
60+ @DeprecatedWrapper var deprecatedInferred = S ( ) // expected-warning {{'DeprecatedWrapper' is deprecated}}
61+
5362 @UnavailableWrapper var unavailableExplicit : S // expected-error {{'UnavailableWrapper' is unavailable}}
5463 @UnavailableWrapper var unavailableInferred = S ( ) // expected-error {{'UnavailableWrapper' is unavailable}}
5564
@@ -64,7 +73,10 @@ struct Available51Struct {
6473
6574 @Available51Wrapper var available51Explicit : S
6675 @Available51Wrapper var available51Inferred = S ( )
67-
76+
77+ @DeprecatedWrapper var deprecatedExplicit : S // expected-warning {{'DeprecatedWrapper' is deprecated}}
78+ @DeprecatedWrapper var deprecatedInferred = S ( ) // expected-warning {{'DeprecatedWrapper' is deprecated}}
79+
6880 @UnavailableWrapper var unavailableExplicit : S // expected-error {{'UnavailableWrapper' is unavailable}}
6981 @UnavailableWrapper var unavailableInferred = S ( ) // expected-error {{'UnavailableWrapper' is unavailable}}
7082
@@ -80,6 +92,9 @@ struct UnavailableStruct {
8092 @Available51Wrapper var available51Explicit : S
8193 @Available51Wrapper var available51Inferred = S ( )
8294
95+ @DeprecatedWrapper var deprecatedExplicit : S
96+ @DeprecatedWrapper var deprecatedInferred = S ( )
97+
8398 @UnavailableWrapper var unavailableExplicit : S
8499 @UnavailableWrapper var unavailableInferred = S ( )
85100
@@ -95,44 +110,79 @@ struct UnavailableOnMacOSStruct {
95110 @Available51Wrapper var available51Explicit : S
96111 @Available51Wrapper var available51Inferred = S ( )
97112
113+ @DeprecatedWrapper var deprecatedExplicit : S
114+ @DeprecatedWrapper var deprecatedInferred = S ( )
115+
98116 @UnavailableWrapper var unavailableExplicit : S
99117 @UnavailableWrapper var unavailableInferred = S ( )
100118
101119 @WrappedValueUnavailableOnMacOS var unavailableWrappedValue : S
102120 @WrappedValueAvailable51 var wrappedValueAavailable51 : S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
103121}
104122
105- func alwaysAvailableFunc( // expected-note 2 {{add @available attribute to enclosing global function}}
123+ func alwaysAvailableFunc( // expected-note 4 {{add @available attribute to enclosing global function}}
106124 @AlwaysAvailableWrapper _ alwaysAvailable: S ,
107125 @Available51Wrapper _ available51: S , // expected-error {{'Available51Wrapper' is only available in macOS 51 or newer}}
126+ @DeprecatedWrapper _ deprecated: S , // expected-warning {{'DeprecatedWrapper' is deprecated}}
108127 @UnavailableWrapper _ unavailable: S , // expected-error {{'UnavailableWrapper' is unavailable}}
109128 @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S , // expected-error {{'wrappedValue' is unavailable in macOS}}
110129 @WrappedValueAvailable51 _ wrappedValueAavailable51: S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
111- ) { }
130+ ) {
131+ @AlwaysAvailableWrapper var alwaysAvailableLocal = S ( )
132+ @Available51Wrapper var available51Local = S ( ) // expected-error {{'Available51Wrapper' is only available in macOS 51 or newer}}
133+ @DeprecatedWrapper var deprecatedLocal = S ( ) // expected-warning {{'DeprecatedWrapper' is deprecated}}
134+ @UnavailableWrapper var unavailableLocal = S ( ) // expected-error {{'UnavailableWrapper' is unavailable}}
135+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValueLocal = S ( ) // expected-error {{'wrappedValue' is unavailable}}
136+ @WrappedValueAvailable51 var wrappedValueAavailable51 = S ( ) // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
137+ }
112138
113139@available ( macOS 51 , * )
114140func available51Func(
115141 @AlwaysAvailableWrapper _ alwaysAvailable: S ,
116142 @Available51Wrapper _ available51: S ,
143+ @DeprecatedWrapper _ deprecated: S , // expected-warning {{'DeprecatedWrapper' is deprecated}}
117144 @UnavailableWrapper _ unavailable: S , // expected-error {{'UnavailableWrapper' is unavailable}}
118145 @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S , // expected-error {{'wrappedValue' is unavailable in macOS}}
119146 @WrappedValueAvailable51 _ wrappedValueAavailable51: S
120- ) { }
147+ ) {
148+ @AlwaysAvailableWrapper var alwaysAvailableLocal = S ( )
149+ @Available51Wrapper var available51Local = S ( )
150+ @DeprecatedWrapper var deprecatedLocal = S ( ) // expected-warning {{'DeprecatedWrapper' is deprecated}}
151+ @UnavailableWrapper var unavailableLocal = S ( ) // expected-error {{'UnavailableWrapper' is unavailable}}
152+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValueLocal = S ( ) // expected-error {{'wrappedValue' is unavailable}}
153+ @WrappedValueAvailable51 var wrappedValueAavailable51 = S ( )
154+ }
121155
122156@available ( * , unavailable)
123157func unavailableFunc(
124158 @AlwaysAvailableWrapper _ alwaysAvailable: S ,
125159 @Available51Wrapper _ available51: S ,
160+ @DeprecatedWrapper _ deprecated: S ,
126161 @UnavailableWrapper _ unavailable: S ,
127162 @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S , // expected-error {{'wrappedValue' is unavailable in macOS}}
128163 @WrappedValueAvailable51 _ wrappedValueAavailable51: S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
129- ) { }
164+ ) {
165+ @AlwaysAvailableWrapper var alwaysAvailableLocal = S ( )
166+ @Available51Wrapper var available51Local = S ( )
167+ @DeprecatedWrapper var deprecatedLocal = S ( )
168+ @UnavailableWrapper var unavailableLocal = S ( )
169+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValueLocal = S ( ) // expected-error {{'wrappedValue' is unavailable}}
170+ @WrappedValueAvailable51 var wrappedValueAavailable51 = S ( ) // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
171+ }
130172
131173@available ( macOS, unavailable)
132174func unavailableOnMacOSFunc(
133175 @AlwaysAvailableWrapper _ alwaysAvailable: S ,
134176 @Available51Wrapper _ available51: S ,
177+ @DeprecatedWrapper _ deprecated: S ,
135178 @UnavailableWrapper _ unavailable: S ,
136179 @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S ,
137180 @WrappedValueAvailable51 _ wrappedValueAavailable51: S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
138- ) { }
181+ ) {
182+ @AlwaysAvailableWrapper var alwaysAvailableLocal = S ( )
183+ @Available51Wrapper var available51Local = S ( )
184+ @DeprecatedWrapper var deprecatedLocal = S ( )
185+ @UnavailableWrapper var unavailableLocal = S ( )
186+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValueLocal = S ( )
187+ @WrappedValueAvailable51 var wrappedValueAavailable51 = S ( ) // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
188+ }
0 commit comments