blob: 479e54b4835047ea0d3b95bba4ebab7723114603 [file] [log] [blame]
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TEST_1 | %FileCheck %s -check-prefix=CHECK_1
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TEST_2 | %FileCheck %s -check-prefix=CHECK_1
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TEST_3 | %FileCheck %s -check-prefix=CHECK_1
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TEST_4 | %FileCheck %s -check-prefix=CHECK_1
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TEST_5 | %FileCheck %s -check-prefix=CHECK_1
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TEST_6 | %FileCheck %s -check-prefix=CHECK_2
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TEST_7 | %FileCheck %s -check-prefix=CHECK_2
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=STMT_1 | %FileCheck %s -check-prefix=NO-CONTEXT
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=SUFFIX_1 | %FileCheck %s -check-prefix=NO-CONTEXT
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=SUFFIX_2 | %FileCheck %s -check-prefix=NO-CONTEXT
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=SUFFIX_3 | %FileCheck %s -check-prefix=NO-CONTEXT
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=SUFFIX_4 | %FileCheck %s -check-prefix=NO-CONTEXT
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=DECL_1 | %FileCheck %s -check-prefix=NO-CONTEXT
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TYPE_1 | %FileCheck %s -check-prefix=NO-CONTEXT
// RUN: %target-swift-ide-test -type-context-info -source-filename %s -code-completion-token=TYPE_2 | %FileCheck %s -check-prefix=NO-CONTEXT
enum Direction {
case east, west
case unknown(String)
}
struct Target : OptionSet {
/// Mine.
static let me: Target = .init(rawValue: 1 << 0)
/// Yours.
static let you: Target = .init(rawValue: 1 << 1)
/// Theirs.
static let them: Target = .init(rawValue: 1 << 2)
/// One for all.
static var all: Target {
return [.me, .you, .them]
}
}
class C {
func foo(x: Direction) {}
func foo(x: Target) {}
}
func test1(obj: C) -> Direction {
let _ = obj.foo(x: #^TEST_1^#
let _ = obj.foo(x: #^TEST_2^#)
let _ = obj.foo(x: #^TEST_3^#.east
let _ = obj.foo(x: .#^TEST_4^#
let _ = obj.foo(x: .#^TEST_5^#west
let _: Direction = #^TEST_6^#;
return #^TEST_7^#
}
// CHECK_1: -----BEGIN TYPE CONTEXT INFO-----
// CHECK_1-NEXT: - TypeName: Direction
// CHECK_1-NEXT: TypeUSR: $s14swift_ide_test9DirectionOD
// CHECK_1-NEXT: ImplicitMembers:
// CHECK_1-NEXT: - Name: east
// CHECK_1-NEXT: - Name: west
// CHECK_1-NEXT: - Name: unknown(_:)
// CHECK_1-NEXT: - TypeName: Target
// CHECK_1-NEXT: TypeUSR: $s14swift_ide_test6TargetVD
// CHECK_1-NEXT: ImplicitMembers:
// CHECK_1-NEXT: - Name: me
// CHECK_1-NEXT: DocBrief: "Mine."
// CHECK_1-NEXT: - Name: you
// CHECK_1-NEXT: DocBrief: "Yours."
// CHECK_1-NEXT: - Name: them
// CHECK_1-NEXT: DocBrief: "Theirs."
// CHECK_1-NEXT: - Name: all
// CHECK_1-NEXT: DocBrief: "One for all."
// CHECK_1-NEXT: -----END TYPE CONTEXT INFO-----
// CHECK_2: -----BEGIN TYPE CONTEXT INFO-----
// CHECK_2-NEXT: - TypeName: Direction
// CHECK_2-NEXT: TypeUSR: $s14swift_ide_test9DirectionOD
// CHECK_2-NEXT: ImplicitMembers:
// CHECK_2-NEXT: - Name: east
// CHECK_2-NEXT: - Name: west
// CHECK_2-NEXT: - Name: unknown(_:)
// CHECK_2-NEXT: -----END TYPE CONTEXT INFO-----
func test2(obj: C) {
#^STMT_1^#
let _ = obj #^SUFFIX_1^#
let _ = obj .#^SUFFIX_2^#
class Local1 : C {
func test () {
let _ = super #^SUFFIX_3^#
let _ = super .#^SUFFIX_4^#
}
#^DECL_1^#
}
let _: #^TYPE_1^#
class Local2 : #^TYPE_2^# {
}
}
// NO-CONTEXT-NOT: TypeName