|
1 |
| -// RUN: %target-typecheck-verify-swift -enable-experimental-feature KeyPathWithMethodMembers |
| 1 | +// RUN: %target-typecheck-verify-swift -enable-experimental-feature KeyPathWithMethodMembers -verify-additional-prefix non-resilient- |
| 2 | +// RUN: %target-typecheck-verify-swift -enable-experimental-feature KeyPathWithMethodMembers -enable-library-evolution -verify-additional-prefix resilient- |
2 | 3 | // REQUIRES: swift_feature_KeyPathWithMethodMembers
|
3 | 4 |
|
4 | 5 | var global = 42
|
@@ -198,6 +199,86 @@ class InvalidDerived : InvalidBase { subscript(dynamicMember: String) -> Int { g
|
198 | 199 | // expected-error @+1 {{value of type 'InvalidDerived' has no member 'dynamicallyLookedUp'}}
|
199 | 200 | _ = InvalidDerived().dynamicallyLookedUp
|
200 | 201 |
|
| 202 | +//===----------------------------------------------------------------------===// |
| 203 | +// Access level |
| 204 | +//===----------------------------------------------------------------------===// |
| 205 | + |
| 206 | +@dynamicMemberLookup |
| 207 | +public struct Accessible1 { |
| 208 | + public subscript(dynamicMember member: String) -> Int { |
| 209 | + return 42 |
| 210 | + } |
| 211 | +} |
| 212 | + |
| 213 | +@dynamicMemberLookup |
| 214 | +private struct Accessible2 { |
| 215 | + fileprivate subscript(dynamicMember member: String) -> Int { |
| 216 | + return 42 |
| 217 | + } |
| 218 | +} |
| 219 | + |
| 220 | +@dynamicMemberLookup |
| 221 | +open class Accessible3 { |
| 222 | + public subscript(dynamicMember member: String) -> Int { |
| 223 | + return 42 |
| 224 | + } |
| 225 | +} |
| 226 | + |
| 227 | +@dynamicMemberLookup |
| 228 | +open class Accessible4 { |
| 229 | + open subscript(dynamicMember member: String) -> Int { |
| 230 | + return 42 |
| 231 | + } |
| 232 | +} |
| 233 | + |
| 234 | +@dynamicMemberLookup |
| 235 | +public struct Accessible5 { |
| 236 | + subscript(dynamicMember member: String) -> Int { |
| 237 | + return 42 |
| 238 | + } |
| 239 | + |
| 240 | + public subscript(dynamicMember member: StaticString) -> Int { |
| 241 | + return 42 |
| 242 | + } |
| 243 | +} |
| 244 | + |
| 245 | +@dynamicMemberLookup |
| 246 | +public struct Inaccessible1 { |
| 247 | + // expected-non-resilient-warning @+2 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type; this will be an error in a future Swift language mode}}{{3-3=public }} |
| 248 | + // expected-resilient-error @+1 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type}}{{3-3=public }} |
| 249 | + subscript(dynamicMember member: String) -> Int { |
| 250 | + return 42 |
| 251 | + } |
| 252 | +} |
| 253 | + |
| 254 | +@dynamicMemberLookup |
| 255 | +public struct Inaccessible2 { |
| 256 | + // expected-non-resilient-warning @+3 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type; this will be an error in a future Swift language mode}}{{21-29=public}} |
| 257 | + // expected-resilient-error @+2 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type}}{{21-29=public}} |
| 258 | + // expected-error @+1 {{'@usableFromInline' attribute can only be applied to internal or package declarations, but subscript 'subscript(dynamicMember:)' is public}} |
| 259 | + @usableFromInline internal subscript(dynamicMember member: String) -> Int { |
| 260 | + return 42 |
| 261 | + } |
| 262 | +} |
| 263 | + |
| 264 | +@dynamicMemberLookup |
| 265 | +internal struct Inaccessible3 { |
| 266 | + // expected-non-resilient-warning @+2 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type; this will be an error in a future Swift language mode}}{{3-10=internal}} |
| 267 | + // expected-resilient-error @+1 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type}}{{3-10=internal}} |
| 268 | + private subscript(dynamicMember member: String) -> Int { |
| 269 | + return 42 |
| 270 | + } |
| 271 | +} |
| 272 | + |
| 273 | +@dynamicMemberLookup |
| 274 | +private struct Inaccessible4 { |
| 275 | + // expected-non-resilient-warning @+2 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type; this will be an error in a future Swift language mode}}{{3-10=fileprivate}} |
| 276 | + // expected-resilient-error @+1 {{'@dynamicMemberLookup' requires 'subscript(dynamicMember:)' to be as accessible as its enclosing type}}{{3-10=fileprivate}} |
| 277 | + private subscript(dynamicMember member: String) -> Int { |
| 278 | + return 42 |
| 279 | + } |
| 280 | +} |
| 281 | + |
201 | 282 | //===----------------------------------------------------------------------===//
|
202 | 283 | // Existentials
|
203 | 284 | //===----------------------------------------------------------------------===//
|
|
0 commit comments