mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
ns_error_domain can now be used to communicate with the ClangImporter when an enum has an associated error domain string. In this case, when we import it as a Swift enum, we can also synthesize a conformance to _BridgedNSError. This allows the creation of something like NS_ERROR_ENUM, in which the developer can declare an enum for the purposes of error handling. Adds Sema and executable tests demonstrating this funcionality. In order for the imported ns_error_domain bridging to work, we have to at some point forcibly pull in a _BridgedNSError conformance, as one will not be pulled in normally. This is a problem, and is explicitly signaled in the provided test case
25 lines
662 B
Swift
25 lines
662 B
Swift
// RUN: %target-swift-frontend -emit-sil %s -import-objc-header %S/Inputs/enum-new.h -verify
|
|
// REQUIRES: OS=macosx
|
|
|
|
_ = .Red as Color
|
|
_ = .Cyan as MoreColor
|
|
|
|
func test() {
|
|
switch getColor() {
|
|
case .Red, .Blue, .Green: break
|
|
} // no-error
|
|
|
|
switch getMoreColor() {
|
|
case .Yellow, .Magenta, .Black, .Cyan: break
|
|
} // no-error
|
|
|
|
switch getColorOptions() {
|
|
case ColorOptions.Pastel: break
|
|
case ColorOptions.Swift: break
|
|
} // expected-error {{switch must be exhaustive, consider adding a default clause}}
|
|
|
|
switch 5 as Int16 {
|
|
case Zero: break // no-error
|
|
} // expected-error {{switch must be exhaustive, consider adding a default clause}}
|
|
}
|