@@ -17,12 +17,33 @@ struct Available51Wrapper<T> {
17
17
18
18
@available ( * , unavailable)
19
19
@propertyWrapper
20
- struct UnavailableWrapper < T> { // expected-note 6 {{'UnavailableWrapper' has been explicitly marked unavailable here}}
20
+ struct UnavailableWrapper < T> { // expected-note 8 {{'UnavailableWrapper' has been explicitly marked unavailable here}}
21
21
var wrappedValue : T
22
22
}
23
23
24
+ @propertyWrapper
25
+ struct WrappedValueUnavailableOnMacOS < T> {
26
+ init ( wrappedValue: T ) { fatalError ( ) }
27
+
28
+ @available ( macOS, unavailable)
29
+ var wrappedValue : T { // expected-note 6 {{'wrappedValue' has been explicitly marked unavailable here}}
30
+ get { fatalError ( ) }
31
+ set { fatalError ( ) }
32
+ }
33
+ }
34
+
35
+ @propertyWrapper
36
+ struct WrappedValueAvailable51 < T> {
37
+ init ( wrappedValue: T ) { fatalError ( ) }
38
+
39
+ @available ( macOS 51 , * )
40
+ var wrappedValue : T {
41
+ get { fatalError ( ) }
42
+ set { fatalError ( ) }
43
+ }
44
+ }
24
45
25
- struct AlwaysAvailableStruct { // expected-note 2 {{add @available attribute to enclosing struct}}
46
+ struct AlwaysAvailableStruct { // expected-note 3 {{add @available attribute to enclosing struct}}
26
47
@AlwaysAvailableWrapper var alwaysAvailableExplicit : S
27
48
@AlwaysAvailableWrapper var alwaysAvailableInferred = S ( )
28
49
@@ -31,6 +52,9 @@ struct AlwaysAvailableStruct { // expected-note 2 {{add @available attribute to
31
52
32
53
@UnavailableWrapper var unavailableExplicit : S // expected-error {{'UnavailableWrapper' is unavailable}}
33
54
@UnavailableWrapper var unavailableInferred = S ( ) // expected-error {{'UnavailableWrapper' is unavailable}}
55
+
56
+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValue : S // expected-error {{'wrappedValue' is unavailable in macOS}}
57
+ @WrappedValueAvailable51 var wrappedValueAavailable51 : S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
34
58
}
35
59
36
60
@available ( macOS 51 , * )
@@ -43,6 +67,9 @@ struct Available51Struct {
43
67
44
68
@UnavailableWrapper var unavailableExplicit : S // expected-error {{'UnavailableWrapper' is unavailable}}
45
69
@UnavailableWrapper var unavailableInferred = S ( ) // expected-error {{'UnavailableWrapper' is unavailable}}
70
+
71
+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValue : S // expected-error {{'wrappedValue' is unavailable in macOS}}
72
+ @WrappedValueAvailable51 var wrappedValueAavailable51 : S
46
73
}
47
74
48
75
@available ( * , unavailable)
@@ -55,24 +82,57 @@ struct UnavailableStruct {
55
82
56
83
@UnavailableWrapper var unavailableExplicit : S
57
84
@UnavailableWrapper var unavailableInferred = S ( )
85
+
86
+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValue : S // expected-error {{'wrappedValue' is unavailable in macOS}}
87
+ @WrappedValueAvailable51 var wrappedValueAavailable51 : S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
58
88
}
59
89
60
- func alwaysAvailableFunc( // expected-note {{add @available attribute to enclosing global function}}
90
+ @available ( macOS, unavailable)
91
+ struct UnavailableOnMacOSStruct {
92
+ @AlwaysAvailableWrapper var alwaysAvailableExplicit : S
93
+ @AlwaysAvailableWrapper var alwaysAvailableInferred = S ( )
94
+
95
+ @Available51Wrapper var available51Explicit : S // expected-error {{'Available51Wrapper' is only available in macOS 51 or newer}}
96
+ @Available51Wrapper var available51Inferred = S ( ) // expected-error {{'Available51Wrapper' is only available in macOS 51 or newer}}
97
+
98
+ @UnavailableWrapper var unavailableExplicit : S // expected-error {{'UnavailableWrapper' is unavailable}}
99
+ @UnavailableWrapper var unavailableInferred = S ( ) // expected-error {{'UnavailableWrapper' is unavailable}}
100
+
101
+ @WrappedValueUnavailableOnMacOS var unavailableWrappedValue : S
102
+ @WrappedValueAvailable51 var wrappedValueAavailable51 : S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
103
+ }
104
+
105
+ func alwaysAvailableFunc( // expected-note 2 {{add @available attribute to enclosing global function}}
61
106
@AlwaysAvailableWrapper _ alwaysAvailable: S ,
62
107
@Available51Wrapper _ available51: S , // expected-error {{'Available51Wrapper' is only available in macOS 51 or newer}}
63
- @UnavailableWrapper _ unavailable: S // expected-error {{'UnavailableWrapper' is unavailable}}
108
+ @UnavailableWrapper _ unavailable: S , // expected-error {{'UnavailableWrapper' is unavailable}}
109
+ @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S , // expected-error {{'wrappedValue' is unavailable in macOS}}
110
+ @WrappedValueAvailable51 _ wrappedValueAavailable51: S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
64
111
) { }
65
112
66
113
@available ( macOS 51 , * )
67
114
func available51Func(
68
115
@AlwaysAvailableWrapper _ alwaysAvailable: S ,
69
116
@Available51Wrapper _ available51: S ,
70
- @UnavailableWrapper _ unavailable: S // expected-error {{'UnavailableWrapper' is unavailable}}
117
+ @UnavailableWrapper _ unavailable: S , // expected-error {{'UnavailableWrapper' is unavailable}}
118
+ @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S , // expected-error {{'wrappedValue' is unavailable in macOS}}
119
+ @WrappedValueAvailable51 _ wrappedValueAavailable51: S
71
120
) { }
72
121
73
122
@available ( * , unavailable)
74
123
func unavailableFunc(
75
124
@AlwaysAvailableWrapper _ alwaysAvailable: S ,
76
125
@Available51Wrapper _ available51: S ,
77
- @UnavailableWrapper _ unavailable: S
126
+ @UnavailableWrapper _ unavailable: S ,
127
+ @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S , // expected-error {{'wrappedValue' is unavailable in macOS}}
128
+ @WrappedValueAvailable51 _ wrappedValueAavailable51: S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
129
+ ) { }
130
+
131
+ @available ( macOS, unavailable)
132
+ func unavailableOnMacOSFunc(
133
+ @AlwaysAvailableWrapper _ alwaysAvailable: S ,
134
+ @Available51Wrapper _ available51: S ,
135
+ @UnavailableWrapper _ unavailable: S ,
136
+ @WrappedValueUnavailableOnMacOS _ unavailableWrappedValue: S ,
137
+ @WrappedValueAvailable51 _ wrappedValueAavailable51: S // expected-error {{'wrappedValue' is only available in macOS 51 or newer}}
78
138
) { }
0 commit comments