mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Surface these results in the codecomplete code path (they're already there in the codecomplete.open code path) so we can use them from IDEs. For now, just use ad-hoc filtering to show them when the type matches (or there is no expected type). Ideally we would make this filtering configurable like we do in the codecomplete.open code path. rdar://problem/25836544
92 lines
3.7 KiB
Swift
92 lines
3.7 KiB
Swift
()
|
|
let var1 = 1
|
|
let var2: Int = 1
|
|
// XFAIL: broken_std_regex
|
|
// RUN: %sourcekitd-test -req=complete -pos=1:2 %s -- %s | FileCheck %s -check-prefix=COMPLETE_1
|
|
// RUN: %sourcekitd-test -req=complete -pos=2:12 %s -- %s | FileCheck %s -check-prefix=COMPLETE_1
|
|
// RUN: %sourcekitd-test -req=complete -pos=3:17 %s -- %s | FileCheck %s -check-prefix=COMPLETE_2
|
|
|
|
// COMPLETE_1-NOT: source.lang.swift.literal
|
|
// COMPLETE_1: source.lang.swift.literal.color
|
|
// COMPLETE_1: source.lang.swift.literal.image
|
|
// COMPLETE_1-NOT: source.lang.swift.literal
|
|
// COMPLETE_1: key.name: "nil"
|
|
// COMPLETE_1-NOT: source.lang.swift.literal
|
|
|
|
// COMPLETE_2-NOT: source.lang.swift.literal
|
|
// COMPLETE_2: key.name: "nil"
|
|
// COMPLETE_2-NOT: source.lang.swift.literal
|
|
|
|
// RUN: %sourcekitd-test -req=complete.open -pos=1:2 %s -- %s | FileCheck %s -check-prefix=LITERALS
|
|
// LITERALS: key.kind: source.lang.swift.literal.string
|
|
// LITERALS: key.sourcetext: "\"<#{{.*}}#>\""
|
|
// LITERALS: key.kind: source.lang.swift.literal.boolean
|
|
// LITERALS: key.kind: source.lang.swift.literal.array
|
|
// LITERALS: key.sourcetext: "[<#{{.*}}#>]"
|
|
// LITERALS: key.kind: source.lang.swift.literal.dictionary
|
|
// LITERALS: key.sourcetext: "[<#{{.*}}#>: <#{{.*}}#>]"
|
|
// LITERALS: key.kind: source.lang.swift.literal.tuple
|
|
// LITERALS: key.sourcetext: "(<#{{.*}}#>)"
|
|
// LITERALS: key.kind: source.lang.swift.literal.nil
|
|
|
|
// RUN: %complete-test -tok=STMT1 %s -raw | FileCheck %s -check-prefix=STMT
|
|
// RUN: %complete-test -tok=STMT2 %s -raw | FileCheck %s -check-prefix=STMT
|
|
// RUN: %complete-test -tok=STMT3 %s -raw | FileCheck %s -check-prefix=STMT
|
|
// STMT-NOT: source.lang.swift.literal
|
|
|
|
#^STMT1^#
|
|
|
|
if true {
|
|
#^STMT2^#
|
|
}
|
|
func foo(_ x: Int) {
|
|
#^STMT3^#
|
|
}
|
|
|
|
// RUN: %complete-test -tok=EXPR1 %s -raw | FileCheck %s -check-prefix=LITERALS
|
|
// RUN: %complete-test -tok=EXPR2 %s -raw | FileCheck %s -check-prefix=LITERALS
|
|
// RUN: %complete-test -tok=EXPR3 %s -raw | FileCheck %s -check-prefix=LITERALS
|
|
let x1 = #^EXPR1^#
|
|
x1 + #^EXPR2^#
|
|
if #^EXPR3^# { }
|
|
|
|
// RUN: %complete-test -tok=EXPR4 %s -raw | FileCheck %s -check-prefix=LITERAL_INT
|
|
foo(#^EXPR4^#)
|
|
// LITERAL_INT-NOT: source.lang.swift.literal
|
|
// LITERAL_INT: key.kind: source.lang.swift.literal.integer
|
|
// LITERAL_INT-NOT: source.lang.swift.literal
|
|
|
|
// RUN: %complete-test -tok=EXPR5 %s -raw | FileCheck %s -check-prefix=LITERAL_TUPLE
|
|
let x2: (String, Int) = #^EXPR5^#
|
|
// LITERAL_TUPLE-NOT: source.lang.swift.literal
|
|
// LITERAL_TUPLE: key.kind: source.lang.swift.literal.tuple
|
|
// LITERAL_TUPLE-NOT: source.lang.swift.literal
|
|
|
|
// RUN: %complete-test -tok=EXPR6 %s -raw | FileCheck %s -check-prefix=LITERAL_NO_TYPE
|
|
// When there is a type context that doesn't match, we should see no literals
|
|
// except the keywords and they should be prioritized like keywords not
|
|
// literals.
|
|
struct Opaque {}
|
|
let x3: Opaque = #^EXPR6,,colo,ni,tru,fals^#
|
|
// LITERAL_NO_TYPE-LABEL: Results for filterText: [
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: ]
|
|
// LITERAL_NO_TYPE-LABEL: Results for filterText: colo [
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: ]
|
|
// LITERAL_NO_TYPE-LABEL: Results for filterText: ni [
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: key.kind: source.lang.swift.literal.nil
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: ]
|
|
// LITERAL_NO_TYPE-LABEL: Results for filterText: tru [
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: key.kind: source.lang.swift.literal.boolean
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: ]
|
|
// LITERAL_NO_TYPE-LABEL: Results for filterText: fals [
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: key.kind: source.lang.swift.literal.boolean
|
|
// LITERAL_NO_TYPE-NOT: source.lang.swift.literal
|
|
// LITERAL_NO_TYPE: ]
|