mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Just like `@preconcurrency` for concurrency, this attribute is going to allow exhaustiveness error downgrades for enums that were retroactively marked as `@extensible`.
50 lines
1.5 KiB
Swift
50 lines
1.5 KiB
Swift
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ExtensibleAttribute
|
|
|
|
// REQUIRES: swift_feature_ExtensibleAttribute
|
|
|
|
@extensible
|
|
public enum E1 { // Ok
|
|
}
|
|
|
|
@extensible // expected-error {{'@extensible' attribute can only be applied to public or package declarations, but 'E2' is fileprivate}}
|
|
fileprivate enum E2 {}
|
|
|
|
@extensible // expected-error {{cannot use '@extensible' together with '@frozen'}}
|
|
@frozen
|
|
public enum E3 {
|
|
}
|
|
|
|
@extensible // expected-error {{'@extensible' attribute can only be applied to public or package declarations, but 'E4' is internal}}
|
|
@usableFromInline
|
|
enum E4 {}
|
|
|
|
@extensible // expected-error {{@extensible may only be used on 'enum' declarations}}
|
|
struct Test {
|
|
@extensible // expected-error {{@extensible may only be used on 'enum' declarations}}
|
|
var v: Int {
|
|
@extensible // expected-error {{@extensible may only be used on 'enum' declarations}}
|
|
get { 0 }
|
|
}
|
|
|
|
@extensible // expected-error {{@extensible may only be used on 'enum' declarations}}
|
|
var v2: String = ""
|
|
|
|
@extensible // expected-error {{@extensible may only be used on 'enum' declarations}}
|
|
func test() {}
|
|
|
|
@extensible // expected-error {{@extensible may only be used on 'enum' declarations}}
|
|
subscript(a: Int) -> Bool {
|
|
get { false }
|
|
set { }
|
|
}
|
|
}
|
|
|
|
@preEnumExtensibility
|
|
@extensible
|
|
public enum PE {
|
|
}
|
|
|
|
@preEnumExtensibility // expected-error {{@preEnumExtensibility can only be used together with '@extensible' attribute}}
|
|
public enum WrongPreE {
|
|
}
|