func testAmbiguousFunctionReference() { func foo(a: Int) {} func foo(a: String) {} // RUN: %sourcekitd-test -req=cursor -pos=%(line + 1):7 %s -- %s | %FileCheck %s --check-prefix LOCAL_FUNC _ = foo // RUN: %sourcekitd-test -req=cursor -pos=%(line + 1):7 %s -- %s | %FileCheck %s --check-prefix LOCAL_FUNC _ = foo(a: UInt(1)) // LOCAL_FUNC: source.lang.swift.ref.function.free // LOCAL_FUNC: func foo(a: Int) // LOCAL_FUNC: SECONDARY SYMBOLS BEGIN // LOCAL_FUNC: source.lang.swift.ref.function.free // LOCAL_FUNC: func foo(a: String) // LOCAL_FUNC: SECONDARY SYMBOLS END } func testAmbiguousFunctionResult() { func foo() -> Int {} func foo() -> String {} // RUN: %sourcekitd-test -req=cursor -pos=%(line + 1):7 %s -- %s | %FileCheck %s --check-prefix AMBIGUOUS_FUNC_RESULT let value = foo() // AMBIGUOUS_FUNC_RESULT: source.lang.swift.ref.var.local // AMBIGUOUS_FUNC_RESULT: let value: Int // AMBIGUOUS_FUNC_RESULT: SECONDARY SYMBOLS BEGIN // AMBIGUOUS_FUNC_RESULT: source.lang.swift.ref.var.local // AMBIGUOUS_FUNC_RESULT: let value: String // AMBIGUOUS_FUNC_RESULT: SECONDARY SYMBOLS END } struct TestDeduplicateResults { // The constraints system produces multiple solutions here for the argument type but // all reference the same declaration. Check that we de-duplicate them and that we // don’t report any secondary sybmols. static func staticFunc(_ duration: Int) {} func test() { // RUN: %sourcekitd-test -req=cursor -pos=%(line + 1):10 %s -- %s | %FileCheck %s --check-prefix STATIC_FUNC Self.staticFunc(1 * 1e9) } // STATIC_FUNC: source.lang.swift.ref.function.method.static // STATIC_FUNC: static func staticFunc(_ duration: Int) // STATIC_FUNC: SECONDARY SYMBOLS BEGIN // STATIC_FUNC-NEXT: SECONDARY SYMBOLS END }