// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=GLOBAL_1 > %t
// RUN: %FileCheck %s -check-prefix=GLOBAL_1 < %t
// RUN: %FileCheck %s -check-prefix=NONTRIVIAL < %t

// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=METHOD_1 > %t
// RUN: %FileCheck %s -check-prefix=METHOD_1 < %t
// RUN: %FileCheck %s -check-prefix=NONTRIVIAL < %t

// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=METHOD_2 > %t
// RUN: %FileCheck %s -check-prefix=GLOBAL_1 < %t
// RUN: %FileCheck %s -check-prefix=METHOD_1 < %t
// RUN: %FileCheck %s -check-prefix=NONTRIVIAL < %t

// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=METHOD_3 > %t
// RUN: %FileCheck %s -check-prefix=METHOD_1 < %t
// RUN: %FileCheck %s -check-prefix=NONTRIVIAL < %t

// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=STATIC_METHOD_1 > %t
// RUN: %FileCheck %s -check-prefix=STATIC_METHOD_1 < %t

// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=METHOD_4 > %t
// RUN: %FileCheck %s -check-prefix=METHOD_4 < %t
// RUN: %FileCheck %s -check-prefix=NONTRIVIAL < %t

// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=CLASS_METHOD_1 > %t
// RUN: %FileCheck %s -check-prefix=CLASS_METHOD_1 < %t

// NONTRIVIAL-NOT: nonTrivial{{.*}} {|}

func global1(_: ()->()) {}
func global2(label: ()->()) {}
func global3(_: () throws -> ()) rethrows {}
func global4(x: Int = 0, y: Int = 2, _: ()->()) {}
func nonTrivial1(_: (Int) -> ()) {}
func nonTrivial2(_: () -> Int) {}
func nonTrivial3(x: Int, _: () -> Int) {}

func test1() {
  #^GLOBAL_1^#
}
// GLOBAL_1: Begin completions
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global1 {|}[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global2 {|}[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global3 {|}[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global4 {|}[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global1({#() -> ()##() -> ()#})[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global2({#label: () -> ()##() -> ()#})[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global3({#() throws -> ()##() throws -> ()#})[' rethrows'][#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global4({#() -> ()##() -> ()#})[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      global4({#x: Int#}, {#y: Int#}, {#() -> ()##() -> ()#})[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      nonTrivial1({#(Int) -> ()##(Int) -> ()#})[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      nonTrivial2({#() -> Int##() -> Int#})[#Void#]
// GLOBAL_1-DAG: Decl[FreeFunction]/CurrModule:      nonTrivial3({#x: Int#}, {#() -> Int##() -> Int#})[#Void#]
// GLOBAL_1: End completions

struct S {
  func method1(_: ()->()) {}
  static func method2(_: ()->()) {}
  func nonTrivial1(_: (Int)->()) {}
  func nonTrivial2(_: @autoclosure ()->()) {}
  func test2() {
    self.#^METHOD_1^#
  }
// METHOD_1: Begin completions
// METHOD_1: Decl[InstanceMethod]/CurrNominal:   method1 {|}[#Void#]
// METHOD_1: Decl[InstanceMethod]/CurrNominal:   method1({#() -> ()##() -> ()#})[#Void#]
// METHOD_1: Decl[InstanceMethod]/CurrNominal:   nonTrivial1({#(Int) -> ()##(Int) -> ()#})[#Void#]
// METHOD_1: Decl[InstanceMethod]/CurrNominal:   nonTrivial2({#()#})[#Void#]
// METHOD_1: End completions

  func test3() {
    #^METHOD_2^#
  }
}

func test4() {
  S().#^METHOD_3^#
}
func test5() {
  S.#^STATIC_METHOD_1^#
}
// STATIC_METHOD_1-NOT: {|}
// STATIC_METHOD_1: Decl[StaticMethod]/CurrNominal:     method2 {|}[#Void#]
// STATIC_METHOD_1-NOT: {|}

class C {
  func method1(_: ()->()) {}
  class func method2(_: ()->()) {}
  func nonTrivial1(_: (Int)->()) {}
  func nonTrivial2(_: @autoclosure ()->()) {}
  func test6() {
    self.#^METHOD_4^#
  }
// METHOD_4: Begin completions
// METHOD_4: Decl[InstanceMethod]/CurrNominal:   method1 {|}[#Void#]
// METHOD_4: Decl[InstanceMethod]/CurrNominal:   method1({#() -> ()##() -> ()#})[#Void#]
// METHOD_4: Decl[InstanceMethod]/CurrNominal:   nonTrivial1({#(Int) -> ()##(Int) -> ()#})[#Void#]
// METHOD_4: End completions

  func test7() {
    C.#^CLASS_METHOD_1^#
  }
// CLASS_METHOD_1-NOT: {|}
// CLASS_METHOD_1: Decl[StaticMethod]/CurrNominal:     method2 {|}[#Void#]
// CLASS_METHOD_1-NOT: {|}
}
