// RUN: not %swift -emit-sil -target %target-triple %s -emit-fixits-path %t.remap -I %S/Inputs -diagnostics-editor-mode
// RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %s.result

enum E1 : Int {
  case e1
  case e2
  case e3
  case e4
}

func foo1(_ e : E1) -> Int {
  switch(e) {
  case .e1:
    return 1
  case .e2:
<#code#>
case .e3:
<#code#>
case .e4:
<#code#>
}
}

func foo2(_ i : Int) -> Int {
  switch i {
  case 1:
    return 1
  default:
<#code#>
}
}

func foo3(_ c : Character) -> Character {
  switch c {
  case "a":
    return "a"
  default:
<#code#>
}
}

enum E2 {
  case e1(a: Int, s: Int)
  case e2(a: Int)
  case e3(a: Int)
  case e4(_: Int)
  case e5(_: Int, _: Int)
  case e6(a : Int, _: Int)
  case e7
  case e8(a : Int, Int, Int)
  case e9(Int, Int, Int)
}

func foo4(_ e : E2) -> Int {
  switch e {
  case .e2:
    return 1
  case .e1(let a, let s):
<#code#>
case .e3(let a):
<#code#>
case .e4(_):
<#code#>
case .e5(_, _):
<#code#>
case .e6(let a, _):
<#code#>
case .e7:
<#code#>
case .e8(let a, _, _):
<#code#>
case .e9(_, _, _):
<#code#>
}
}

func foo5(_ e : E1) -> Int {
  switch e {
  case _ where e.rawValue > 0:
    return 1
  case .e1:
<#code#>
case .e2:
<#code#>
case .e3:
<#code#>
case .e4:
<#code#>
}
}

func foo6(_ e : E2) -> Int {
  switch e {
  case let .e1(x, y):
    return x + y
  case .e2(let a):
<#code#>
case .e3(let a):
<#code#>
case .e4(_):
<#code#>
case .e5(_, _):
<#code#>
case .e6(let a, _):
<#code#>
case .e7:
<#code#>
case .e8(let a, _, _):
<#code#>
case .e9(_, _, _):
<#code#>
}
}

func foo7(_ e : E2) -> Int {
  switch e {
  case .e2(1): return 0
  case .e1: return 0
  case .e3: return 0
  case .e2(let a):
<#code#>
case .e4(_):
<#code#>
case .e5(_, _):
<#code#>
case .e6(let a, _):
<#code#>
case .e7:
<#code#>
case .e8(let a, _, _):
<#code#>
case .e9(_, _, _):
<#code#>
}
}
