Files
swift-mirror/test/Sema/const_enum_elements.swift
2022-03-12 10:04:28 -08:00

33 lines
1.0 KiB
Swift

// RUN: %target-typecheck-verify-swift
enum CarKind {
static let wagon = "Wagon"
case coupe
case sedan
case other(String)
}
extension CarKind {
static var myCoupe: CarKind {
return .coupe
}
}
func getCarKind() -> CarKind { return .sedan }
func drive(_ k1: _const CarKind, k2: _const CarKind) {}
func main() {
drive(.coupe, k2: .sedan)
drive(.sedan, k2: .coupe)
drive(CarKind.coupe, k2: CarKind.sedan)
drive(CarKind.sedan, k2: CarKind.coupe)
drive(.other(""), k2: .sedan) // expected-error {{expect a compile-time constant literal}}
drive(.other(CarKind.wagon), k2: .sedan) // expected-error {{expect a compile-time constant literal}}
drive(.myCoupe, k2: .sedan) // expected-error {{expect a compile-time constant literal}}
drive(.coupe, k2: .myCoupe) // expected-error {{expect a compile-time constant literal}}
drive(.coupe, k2: getCarKind()) // expected-error {{expect a compile-time constant literal}}
drive(getCarKind(), k2: .coupe) // expected-error {{expect a compile-time constant literal}}
}