Files
swift-mirror/test/attr/attr_extensible.swift
Pavel Yaskevich 498430afaf [AST/Sema] Add @preEnumExtensibility attribute to downgrade warnings for extensible enums
Just like `@preconcurrency` for concurrency, this attribute is going
to allow exhaustiveness error downgrades for enums that were retroactively
marked as `@extensible`.
2025-05-02 09:07:22 -07:00

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 {
}