// RUN: %target-swift-frontend -g -Xllvm -sil-print-debuginfo -emit-silgen %s | %FileCheck %s

func nop1() {}
func nop2() {}

enum Binary {
  case On
  case Off
}

func isOn(_ b: Binary) -> Bool {
  return b == .On
}

// CHECK: [[LOC:loc "[^"]+"]]

// First, check that we don't assign fresh locations to each case statement,
// except for any relevant debug value instructions.
// CHECK-LABEL: sil hidden @$S16switch_debuginfo5test11iySi_tF
func test1(i: Int) {
  switch i {
           // CHECK-NOT: [[LOC]]:[[@LINE+1]]
  case 0:  // CHECK: debug_value {{.*}} : $Int, let, name "$match", [[LOC]]:[[@LINE]]
           // CHECK-NOT: [[LOC]]:[[@LINE-1]]
    nop1()

           // CHECK-NOT: [[LOC]]:[[@LINE+1]]
  case 1:  // CHECK: debug_value {{.*}} : $Int, let, name "$match", [[LOC]]:[[@LINE]]
           // CHECK-NOT: [[LOC]]:[[@LINE-1]]
    nop1()

  default: // CHECK-NOT: [[LOC]]:[[@LINE]]
    nop1()
  }
}

// Next, check that case statements and switch subjects have the same locations.
// CHECK-LABEL: sil hidden @$S16switch_debuginfo5test21sySS_tF
func test2(s: String) {
  switch s {
  case "a": // CHECK: string_literal utf8 "a", [[LOC]]:[[@LINE-1]]:10
    nop1()
  case "b": // CHECK: string_literal utf8 "b", [[LOC]]:[[@LINE-3]]:10
    nop2()
  default:
    nop1()
  }
}

// Fallthrough shouldn't affect case statement locations.
// CHECK-LABEL: sil hidden @$S16switch_debuginfo5test31sySS_tF
func test3(s: String) {
  switch s {
  case "a", "b":
    // CHECK: string_literal utf8 "a", [[LOC]]:[[@LINE-2]]:10
    // CHECK: string_literal utf8 "b", [[LOC]]:[[@LINE-3]]:10
    nop1()
    fallthrough
  case "b", "c":
    // CHECK: string_literal utf8 "b", [[LOC]]:[[@LINE-7]]:10
    // CHECK: string_literal utf8 "c", [[LOC]]:[[@LINE-8]]:10
    nop2()
    fallthrough
  default:
    nop1()
  }
}

// It should be possible to set breakpoints on where clauses.
// CHECK-LABEL: sil hidden @$S16switch_debuginfo5test41byAA6BinaryO_tF
func test4(b: Binary) {
  switch b {
  case let _        // CHECK-NOT: [[LOC]]:[[@LINE]]
    where isOn(b):  // CHECK: [[LOC]]:[[@LINE]]:11
    nop1()
  case let _        // CHECK-NOT: [[LOC]]:[[@LINE]]
    where !isOn(b): // CHECK: [[LOC]]:[[@LINE]]:11
    nop2()
  default:
    nop1()
  }
}

// Check that we set the right locations before/after nested switches.
// CHECK-LABEL: sil hidden @$S16switch_debuginfo5test51sySS_tF
func test5(s: String) {
  switch s {
  case "a":         // CHECK: string_literal utf8 "a", [[LOC]]:[[@LINE-1]]:10
    switch "b" {
    case "b":       // CHECK: string_literal utf8 "b", [[LOC]]:[[@LINE-1]]:12
      nop1()
    default:
      nop2()
    }
    if "c" == "c" { // CHECK: string_literal utf8 "c", [[LOC]]:[[@LINE]]
      nop1()
    }
  default:
    nop1()
  }
  if "d" == "d" {   // CHECK: string_literal utf8 "d", [[LOC]]:[[@LINE]]
    nop1()
  }
}
