File: complete_issue-55711.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 (65 lines) | stat: -rw-r--r-- 1,372 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
// RUN: %batch-code-completion

// https://github.com/apple/swift/issues/55711
// https://forums.swift.org/t/code-completion-enhancement-request/38677

enum AIdentifier {
  case a
}

enum BIdentifier {
  case b
}

struct X { }
struct Y { }

struct A <T> {
  private init(){}
  static func foo (arg: Bool) -> A<X> { A<X>() }
  static func bar (arg: Int) -> A<Y> { A<Y>() }
}

struct B {
  static var baz: B { B() }
}

func C<T>(_ identifier: AIdentifier, _ a: ()->A<T>) -> D<T> { }
func C(_ identifier: BIdentifier, _ b: ()->B) { }

struct D <T> {
    func sink (_ handler: @escaping (T)->()) { }
}

func test() {
  C(.a) {
    .#^A^#
  }
  C(.a) {
    ()
    return .#^A_MULTISTMT?check=A^#
  }
// A: Begin completions, 2 items
// A-DAG: Decl[StaticMethod]/CurrNominal/TypeRelation[Convertible]: foo({#arg: Bool#})[#A<X>#];
// A-DAG: Decl[StaticMethod]/CurrNominal/TypeRelation[Convertible]: bar({#arg: Int#})[#A<Y>#];
}

func test() {
  C(.b) {
    .#^B^#
  }
// B: Begin completions, 2 items
// B-DAG: Decl[StaticVar]/CurrNominal/Flair[ExprSpecific]/TypeRelation[Convertible]: baz[#B#]; name=baz
// B-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Convertible]: init()[#B#]; name=init()
}

func test() {
  C(.a) {
    .foo(arg: true)
  }
  .sink { value in
    value.#^D^#
  }
// D: Begin completions, 1 items
// D-DAG: Keyword[self]/CurrNominal:          self[#X#];
}