Files
swift-mirror/test/ClangModules/enum-new.swift
Michael Ilseman 7c9d53a0a0 [Clang Importer] Import ns_error_domain attribute with _BridgedNSError
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
2016-02-04 17:23:28 -08:00

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