mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Singleton, no-payload, and trivial single-payload unions can now be constructed and switch-ed. Swift SVN r7363
60 lines
976 B
Swift
60 lines
976 B
Swift
// RUN: %swift -i %s | FileCheck %s
|
|
|
|
union Singleton {
|
|
case x(Int, Char)
|
|
}
|
|
|
|
union NoPayload {
|
|
case x
|
|
case y
|
|
case z
|
|
}
|
|
|
|
union SinglePayloadTrivial {
|
|
case x(Char, Int)
|
|
case y
|
|
case z
|
|
}
|
|
|
|
var s = Singleton.x(1, 'a')
|
|
switch s {
|
|
case .x(var int, var char):
|
|
// CHECK: 1
|
|
println(int)
|
|
// CHECK: a
|
|
println(char)
|
|
}
|
|
|
|
func printNoPayload(v:NoPayload) {
|
|
switch v {
|
|
case .x:
|
|
println("NoPayload.x")
|
|
case .y:
|
|
println("NoPayload.y")
|
|
case .z:
|
|
println("NoPayload.z")
|
|
}
|
|
}
|
|
|
|
// CHECK: NoPayload.x
|
|
printNoPayload(.x)
|
|
// CHECK: NoPayload.y
|
|
printNoPayload(.y)
|
|
// CHECK: NoPayload.z
|
|
printNoPayload(.z)
|
|
|
|
func printSinglePayloadTrivial(v:SinglePayloadTrivial) {
|
|
switch v {
|
|
case .x(var char, var int):
|
|
println("SinglePayloadTrivial.x(\(char), \(int))")
|
|
case .y:
|
|
println("SinglePayloadTrivial.y")
|
|
case .z:
|
|
println("SinglePayloadTrivial.z")
|
|
}
|
|
}
|
|
|
|
printSinglePayloadTrivial(.x('b', 2))
|
|
printSinglePayloadTrivial(.y)
|
|
printSinglePayloadTrivial(.z)
|