mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
If there is a type context, hide literal suggesetions that don't match it, unless they are keywords and we have filtered to their names. Incidentally fix an output buffering issue when combining filtering with the -raw flag in complete-test. Part of rdar://problem/23865118
79 lines
3.2 KiB
Swift
79 lines
3.2 KiB
Swift
()
|
|
// RUN: %sourcekitd-test -req=complete -pos=1:2 %s -- %s | FileCheck %s -check-prefix=KEYWORDS
|
|
// RUN: %sourcekitd-test -req=complete.open -pos=1:2 %s -- %s | FileCheck %s -check-prefix=LITERALS
|
|
|
|
// KEYWORDS-NOT: source.lang.swift.literal
|
|
// KEYWORDS: key.name: "nil"
|
|
// KEYWORDS-NOT: source.lang.swift.literal
|
|
// 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: ]
|