1
1
// RUN: %empty-directory(%t)
2
- // RUN: %target-swift-frontend -target %target-cpu-apple-macosx10.9 -typecheck -verify %s
2
+ // RUN: %target-swift-frontend -target %target-cpu-apple-macosx10.50 -typecheck -verify %s
3
3
4
4
// REQUIRES: OS=macosx
5
5
@@ -8,14 +8,14 @@ struct SetterConditionallyAvailable<T> {
8
8
var wrappedValue : T {
9
9
get { fatalError ( ) }
10
10
11
- @available ( macOS 10 . 10 , * )
11
+ @available ( macOS 10 . 51 , * )
12
12
set { fatalError ( ) }
13
13
}
14
14
15
15
var projectedValue : T {
16
16
get { fatalError ( ) }
17
17
18
- @available ( macOS 10 . 10 , * )
18
+ @available ( macOS 10 . 51 , * )
19
19
set { fatalError ( ) }
20
20
}
21
21
}
@@ -25,14 +25,48 @@ struct ModifyConditionallyAvailable<T> {
25
25
var wrappedValue : T {
26
26
get { fatalError ( ) }
27
27
28
- @available ( macOS 10 . 10 , * )
28
+ @available ( macOS 10 . 51 , * )
29
29
_modify { fatalError ( ) }
30
30
}
31
31
32
32
var projectedValue : T {
33
33
get { fatalError ( ) }
34
34
35
- @available ( macOS 10 . 10 , * )
35
+ @available ( macOS 10 . 51 , * )
36
+ _modify { fatalError ( ) }
37
+ }
38
+ }
39
+
40
+ @propertyWrapper
41
+ struct SetterMoreAvailable < T> {
42
+ var wrappedValue : T {
43
+ get { fatalError ( ) }
44
+
45
+ @available ( macOS 10 . 49 , * )
46
+ set { fatalError ( ) }
47
+ }
48
+
49
+ var projectedValue : T {
50
+ get { fatalError ( ) }
51
+
52
+ @available ( macOS 10 . 49 , * )
53
+ set { fatalError ( ) }
54
+ }
55
+ }
56
+
57
+ @propertyWrapper
58
+ struct ModifyMoreAvailable < T> {
59
+ var wrappedValue : T {
60
+ get { fatalError ( ) }
61
+
62
+ @available ( macOS 10 . 49 , * )
63
+ _modify { fatalError ( ) }
64
+ }
65
+
66
+ var projectedValue : T {
67
+ get { fatalError ( ) }
68
+
69
+ @available ( macOS 10 . 49 , * )
36
70
_modify { fatalError ( ) }
37
71
}
38
72
}
@@ -41,7 +75,7 @@ struct Butt {
41
75
var modify_conditionally_available : Int {
42
76
get { fatalError ( ) }
43
77
44
- @available ( macOS 10 . 10 , * )
78
+ @available ( macOS 10 . 51 , * )
45
79
_modify { fatalError ( ) }
46
80
}
47
81
@@ -50,16 +84,26 @@ struct Butt {
50
84
51
85
@ModifyConditionallyAvailable
52
86
var wrapped_modify_conditionally_available : Int
87
+
88
+ @SetterMoreAvailable
89
+ var wrapped_setter_more_available : Int
90
+
91
+ @ModifyMoreAvailable
92
+ var wrapped_modify_more_available : Int
53
93
}
54
94
55
- func butt( x: inout Butt ) { // expected-note*{{}}
56
- x. modify_conditionally_available = 0 // expected-error{{only available in macOS 10.10 or newer}} expected-note{{}}
57
- x. wrapped_setter_conditionally_available = 0 // expected-error{{only available in macOS 10.10 or newer}} expected-note{{}}
58
- x. wrapped_modify_conditionally_available = 0 // expected-error{{only available in macOS 10.10 or newer}} expected-note{{}}
59
- x. $wrapped_setter_conditionally_available = 0 // expected-error{{only available in macOS 10.10 or newer}} expected-note{{}}
60
- x. $wrapped_modify_conditionally_available = 0 // expected-error{{only available in macOS 10.10 or newer}} expected-note{{}}
95
+ func butt( x: inout Butt ) { // expected-note * {{}}
96
+ x. modify_conditionally_available = 0 // expected-error {{only available in macOS 10.51 or newer}} expected-note{{}}
97
+ x. wrapped_setter_conditionally_available = 0 // expected-error {{only available in macOS 10.51 or newer}} expected-note{{}}
98
+ x. wrapped_modify_conditionally_available = 0 // expected-error {{only available in macOS 10.51 or newer}} expected-note{{}}
99
+ x. $wrapped_setter_conditionally_available = 0 // expected-error {{only available in macOS 10.51 or newer}} expected-note{{}}
100
+ x. $wrapped_modify_conditionally_available = 0 // expected-error {{only available in macOS 10.51 or newer}} expected-note{{}}
101
+ x. wrapped_setter_more_available = 0
102
+ x. wrapped_modify_more_available = 0
103
+ x. $wrapped_setter_more_available = 0
104
+ x. $wrapped_modify_more_available = 0
61
105
62
- if #available( macOS 10 . 10 , * ) {
106
+ if #available( macOS 10 . 51 , * ) {
63
107
x. modify_conditionally_available = 0
64
108
x. wrapped_setter_conditionally_available = 0
65
109
x. wrapped_modify_conditionally_available = 0
@@ -68,6 +112,25 @@ func butt(x: inout Butt) { // expected-note*{{}}
68
112
}
69
113
}
70
114
115
+ @available ( macOS, unavailable)
116
+ extension Butt {
117
+ @available ( iOS, unavailable)
118
+ struct Nested { // expected-note {{has been explicitly marked unavailable here}}
119
+ @SetterMoreAvailable
120
+ var wrapped_setter_more_available : Int // expected-note 2 {{has been explicitly marked unavailable here}}
121
+
122
+ @ModifyMoreAvailable
123
+ var wrapped_modify_more_available : Int // expected-note 2 {{has been explicitly marked unavailable here}}
124
+ }
125
+ }
126
+
127
+ func testButtNested( x: inout Butt . Nested ) { // expected-error {{'Nested' is unavailable in macOS}}
128
+ x. wrapped_setter_more_available = 0 // expected-error {{is unavailable in macOS}}
129
+ x. wrapped_modify_more_available = 0 // expected-error {{is unavailable in macOS}}
130
+ x. $wrapped_setter_more_available = 0 // expected-error {{is unavailable in macOS}}
131
+ x. $wrapped_modify_more_available = 0 // expected-error {{is unavailable in macOS}}
132
+ }
133
+
71
134
@available ( macOS 11 . 0 , * )
72
135
struct LessAvailable {
73
136
@SetterConditionallyAvailable
0 commit comments