Files
swift-mirror/test/Interpreter/union.swift
Joe Groff 2094d23d48 Add an Interpreter test that round-trips trivial unions.
Singleton, no-payload, and trivial single-payload unions can now be constructed and switch-ed.

Swift SVN r7363
2013-08-20 17:01:18 +00:00

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)