@@ -35,15 +35,10 @@ fileprivate(set)
35
35
public
36
36
var customSetter2 = 0
37
37
38
- // FIXME: rdar://104931420 folowing should not error
39
- // expected-error @+2{{cannot find 'package' in scope}}{{none}}
40
- // expected-error @+1{{cannot find 'set' in scope; did you mean 'Set'?}}{{9-12=Set}}
41
38
package ( set)
42
39
public
43
40
var customSetter3 = 0
44
41
45
- // FIXME: rdar://104931420 folowing should not error
46
- // expected-error @+1{{expected expression}}
47
42
public
48
43
package ( set)
49
44
var customSetter4 = 0
@@ -66,6 +61,14 @@ public(set) // expected-error {{duplicate modifier}}
66
61
private // expected-error {{duplicate modifier}}
67
62
var customSetterDuplicateAttrsAllAround = 0
68
63
64
+ private( set) // expected-note {{modifier already specified here}}
65
+ package ( set) // expected-error {{duplicate modifier}}
66
+ var customSetterDuplicateAttr2 = 0
67
+
68
+ package ( set) // expected-note {{modifier already specified here}}
69
+ public( set) // expected-error {{duplicate modifier}}
70
+ public var customSetterDuplicateAttr3 = 0
71
+
69
72
private( get) // expected-error{{expected 'set' as subject of 'private' modifier}}
70
73
var invalidSubject = 0
71
74
@@ -75,6 +78,13 @@ var invalidSubject2 = 0
75
78
private( a bunch of rando m tokens) // expected-error{{expected 'set' as subject of 'private' modifier}} expected-error{{expected declaration}}
76
79
var invalidSubject3 = 0
77
80
81
+
82
+ package ( get) // expected-error{{expected 'set' as subject of 'package' modifier}}
83
+ var invalidSubject4 = 0
84
+
85
+ package ( 42 ) // expected-error{{expected 'set' as subject of 'package' modifier}}
86
+ var invalidSubject5 = 0
87
+
78
88
private( set // expected-error{{expected ')' in 'private' modifier}}
79
89
var unterminatedSubject = 0
80
90
@@ -132,7 +142,9 @@ private protocol TestProtocol {
132
142
public( set) func publicSetFunc( ) { } // expected-error {{'public' modifier cannot be applied to this declaration}} {{1-13=}}
133
143
134
144
public( set) var defaultVis = 0 // expected-error {{internal variable cannot have a public setter}}
135
-
145
+ package ( set) var defaultVisPkg = 0 // expected-error {{internal variable cannot have a package setter}}
146
+ package ( set) package var defaultVisPkgPkg = 0 // expected-warning {{'package(set)' modifier is redundant for a package var}}
147
+ package ( set) public var defaultVisPkgOK = 0 // OK
136
148
internal( set) private var privateVis = 0 // expected-error {{private variable cannot have an internal setter}}
137
149
private( set) var defaultVisOK = 0
138
150
private( set) public var publicVis = 0
@@ -144,8 +156,15 @@ private(set) var computedRW: Int {
144
156
get { return 42 }
145
157
set { }
146
158
}
159
+
160
+ package ( set) public var computedPkg : Int { // expected-error {{'package(set)' modifier cannot be applied to read-only variables}} {{1-14=}}
161
+ return 42
162
+ }
163
+
147
164
private( set) let constant = 42 // expected-error {{'private(set)' modifier cannot be applied to constants}} {{1-14=}}
148
165
166
+ package ( set) public let constantPkg = 42 // expected-error {{'package(set)' modifier cannot be applied to constants}} {{1-14=}}
167
+
149
168
public struct Properties {
150
169
private( set) var stored = 42
151
170
private( set) var computed : Int { // expected-error {{'private(set)' modifier cannot be applied to read-only properties}} {{3-16=}}
@@ -155,14 +174,30 @@ public struct Properties {
155
174
get { return 42 }
156
175
set { }
157
176
}
177
+
178
+ package ( set) public var computedRWPkg : Int {
179
+ get { return 42 }
180
+ set { }
181
+ }
182
+
183
+ public package ( set) var computedR : Int { // expected-error {{'package(set)' modifier cannot be applied to read-only properties}} {{10-23=}}
184
+ return 42
185
+ }
186
+
158
187
private( set) let constant = 42 // expected-error {{'private(set)' modifier cannot be applied to read-only properties}} {{3-16=}}
188
+ package ( set) public let constantPkg = 42 // expected-error {{'package(set)' modifier cannot be applied to read-only properties}} {{3-16=}}
189
+ package ( set) var defaultVisPkg = 42 // expected-error {{internal property cannot have a package setter}}
159
190
public( set) var defaultVis = 0 // expected-error {{internal property cannot have a public setter}}
160
191
open( set) var defaultVis2 = 0 // expected-error {{internal property cannot have an open setter}}
161
192
162
193
public( set) subscript( a a: Int ) -> Int { // expected-error {{internal subscript cannot have a public setter}}
163
194
get { return 0 }
164
195
set { }
165
196
}
197
+ package ( set) subscript( p p: Int ) -> Int { // expected-error {{internal subscript cannot have a package setter}}
198
+ get { return 0 }
199
+ set { }
200
+ }
166
201
internal( set) private subscript( b b: Int ) -> Int { // expected-error {{private subscript cannot have an internal setter}}
167
202
get { return 0 }
168
203
set { }
@@ -180,6 +215,10 @@ public struct Properties {
180
215
}
181
216
182
217
private extension Properties {
218
+ package ( set) var extPropPkg : Int { // expected-error {{private property cannot have a package setter}}
219
+ get { return 42 }
220
+ set { }
221
+ }
183
222
public( set) var extProp : Int { // expected-error {{private property cannot have a public setter}}
184
223
get { return 42 }
185
224
set { }
@@ -198,11 +237,13 @@ private(set) extension Properties : EmptyProto2 {} // expected-error {{'private'
198
237
package protocol EmptyProto3 { }
199
238
package protocol EmptyProto4 { }
200
239
public protocol EmptyProto5 { }
240
+ public protocol EmptyProto6 { }
201
241
202
242
private extension Properties : EmptyProto3 { } // expected-error {{'private' modifier cannot be used with extensions that declare protocol conformances}} {{1-9=}}
203
243
private( set) extension Properties : EmptyProto4 { } // expected-error {{'private' modifier cannot be applied to this declaration}} {{1-14=}}
204
244
205
245
package extension Properties : EmptyProto5 { } // expected-error {{'package' modifier cannot be used with extensions that declare protocol conformances}} {{1-9=}}
246
+ package ( set) extension Properties : EmptyProto6 { } // expected-error {{'package' modifier cannot be applied to this declaration}} {{1-14=}}
206
247
207
248
public struct PublicStruct { }
208
249
package struct PackageStruct { } // expected-note * {{declared here}}
0 commit comments