File: typecontext_basic.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (100 lines) | stat: -rw-r--r-- 4,214 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// 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