Files
swift-mirror/test/expr/print/switch.swift
2022-01-11 14:24:17 -08:00

59 lines
1.2 KiB
Swift

// RUN: %target-swift-frontend -print-ast %s 2>&1 | %FileCheck %s
enum Payload {
case int(Int)
case keyValue(String, Int)
case empty
}
// CHECK-LABEL: internal func test(payload: Payload) -> Int? {
func test(payload: Payload) -> Int? {
switch payload {
case .int(let int):
return int
case .keyValue(_, let int):
return int
case .empty:
return nil
}
}
// CHECK-LABEL: switch payload {
// CHECK-LABEL: case .int(let int):
// CHECK-LABEL: return int
// CHECK-LABEL: case .keyValue(_, let int):
// CHECK-LABEL: return int
// CHECK-LABEL: case .empty:
// CHECK-LABEL: return nil
// CHECK-LABEL: }
// CHECK-LABEL:}
func process(payload: Payload) {
if case .empty = payload {
return
}
_ = test(payload: payload)
}
// CHECK-LABEL: internal func process(payload: Payload) {
// CHECK-LABEL: if .empty = payload {
// CHECK-LABEL: return
// CHECK-LABEL: }
// CHECK-LABEL: _ = test(payload: payload)
// CHECK-LABEL: }
func foo(_ x: Int?) {
switch x {
case let x?:
break
case nil:
break
}
}
// CHECK-LABEL: internal func foo(_ x: Int?) {
// CHECK-LABEL: switch x {
// CHECK-LABEL: case let x?:
// CHECK-LABEL: break
// CHECK-LABEL: case .none:
// CHECK-LABEL: break
// CHECK-LABEL: }
// CHECK-LABEL: }