File: cursor_symbol_graph_generics.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 (215 lines) | stat: -rw-r--r-- 6,679 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215

struct Simple<T: Equatable, U: Sequence> {
  func simple<V>(v: V) where V: Hashable {}
  func assoc<V>(v: V, w: T, p: U) where U.Element == T, V: Equatable {}
}

extension Simple where T == Int {
  func concrete(t: T) {}
  func testCall(x: U) where U.Element == T {
    assoc(v: "hello", w: 1, p: x)
  }
}

func foo() {
  Simple<String, [String]>.init().assoc(v: 1, w: "a", p: ["hello"])
}


// RUN:  %sourcekitd-test -req=cursor -pos=3:8 -req-opts=retrieve_symbol_graph=1 %s -- %s -target %target-triple | %FileCheck -check-prefix=SIMPLE %s
// RUN:  %sourcekitd-test -req=cursor -pos=4:8 -req-opts=retrieve_symbol_graph=1 %s -- %s -target %target-triple | %FileCheck -check-prefix=ASSOC %s
// RUN:  %sourcekitd-test -req=cursor -pos=8:8 -req-opts=retrieve_symbol_graph=1 %s -- %s -target %target-triple | %FileCheck -check-prefix=CONCRETE %s
// RUN:  %sourcekitd-test -req=cursor -pos=10:5 -req-opts=retrieve_symbol_graph=1 %s -- %s -target %target-triple | %FileCheck -check-prefix=ASSOCCALL_EXT  %s
// RUN:  %sourcekitd-test -req=cursor -pos=15:35 -req-opts=retrieve_symbol_graph=1 %s -- %s -target %target-triple | %FileCheck -check-prefix=ASSOCCALL_MEMBER  %s

// SIMPLE: "functionSignature": {
// SIMPLE:         "spelling": "v"
// SIMPLE:         "spelling": ": "
// SIMPLE:         "spelling": "V"
// SIMPLE: }
// SIMPLE: "swiftGenerics": {
// SIMPLE:   "constraints": [
// SIMPLE:     {
// SIMPLE:       "kind": "conformance",
// SIMPLE:       "lhs": "T",
// SIMPLE:       "rhs": "Equatable"
// SIMPLE:     },
// SIMPLE:     {
// SIMPLE:       "kind": "conformance",
// SIMPLE:       "lhs": "U",
// SIMPLE:       "rhs": "Sequence"
// SIMPLE:     },
// SIMPLE:     {
// SIMPLE:       "kind": "conformance",
// SIMPLE:       "lhs": "V",
// SIMPLE:       "rhs": "Hashable"
// SIMPLE:     }
// SIMPLE:   ],
// SIMPLE:   "parameters": [
// SIMPLE:     {
// SIMPLE:       "depth": 0,
// SIMPLE:       "index": 0,
// SIMPLE:       "name": "T"
// SIMPLE:     },
// SIMPLE:     {
// SIMPLE:       "depth": 0,
// SIMPLE:       "index": 1,
// SIMPLE:       "name": "U"
// SIMPLE:     },
// SIMPLE:     {
// SIMPLE:       "depth": 1,
// SIMPLE:       "index": 0,
// SIMPLE:       "name": "V"
// SIMPLE:     }
// SIMPLE:   ]
// SIMPLE: }


// ASSOC: "functionSignature": {
// ASSOC:         "spelling": "v"
// ASSOC:         "spelling": ": "
// ASSOC:         "spelling": "V"
// ASSOC:         "spelling": "w"
// ASSOC:         "spelling": ": "
// ASSOC:         "spelling": "T"
// ASSOC:         "spelling": "p"
// ASSOC:         "spelling": ": "
// ASSOC:         "spelling": "U"
// ASSOC: }
// ASSOC: "swiftGenerics": {
// ASSOC:   "constraints": [
// ASSOC:     {
// ASSOC:       "kind": "conformance",
// ASSOC:       "lhs": "T",
// ASSOC:       "rhs": "Equatable"
// ASSOC:     },
// ASSOC:     {
// ASSOC:       "kind": "sameType",
// ASSOC:       "lhs": "T",
// ASSOC:       "rhs": "U.Element"
// ASSOC:     },
// ASSOC:     {
// ASSOC:       "kind": "conformance",
// ASSOC:       "lhs": "U",
// ASSOC:       "rhs": "Sequence"
// ASSOC:     }
// ASSOC:   ],
// ASSOC:   "parameters": [
// ASSOC:     {
// ASSOC:       "depth": 0,
// ASSOC:       "index": 0,
// ASSOC:       "name": "T"
// ASSOC:     },
// ASSOC:     {
// ASSOC:       "depth": 0,
// ASSOC:       "index": 1,
// ASSOC:       "name": "U"
// ASSOC:     },
// ASSOC:     {
// ASSOC:       "depth": 1,
// ASSOC:       "index": 0,
// ASSOC:       "name": "V"
// ASSOC:     }
// ASSOC:   ]
// ASSOC: }


// CONCRETE: "functionSignature": {
// CONCRETE:         "spelling": "t"
// CONCRETE:         "spelling": ": "
// CONCRETE:         "spelling": "T"
// CONCRETE: }
// CONCRETE: "swiftGenerics": {
// CONCRETE:   "constraints": [
// CONCRETE:     {
// CONCRETE:       "kind": "sameType",
// CONCRETE:       "lhs": "T",
// CONCRETE:       "rhs": "Int"
// CONCRETE:     },
// CONCRETE:     {
// CONCRETE:       "kind": "conformance",
// CONCRETE:       "lhs": "U",
// CONCRETE:       "rhs": "Sequence"
// CONCRETE:     }
// CONCRETE:   ],
// CONCRETE:   "parameters": [
// CONCRETE:     {
// CONCRETE:       "depth": 0,
// CONCRETE:       "index": 0,
// CONCRETE:       "name": "T"
// CONCRETE:     },
// CONCRETE:     {
// CONCRETE:       "depth": 0,
// CONCRETE:       "index": 1,
// CONCRETE:       "name": "U"
// CONCRETE:     }
// CONCRETE:   ]
// CONCRETE: }


// ASSOCCALL_EXT: "functionSignature": {
// ASSOCCALL_EXT:         "spelling": "v"
// ASSOCCALL_EXT:         "spelling": ": "
// ASSOCCALL_EXT:         "spelling": "V"
// ASSOCCALL_EXT:         "spelling": "w"
// ASSOCCALL_EXT:         "spelling": ": "
// ASSOCCALL_EXT:         "spelling": "Int"
// ASSOCCALL_EXT:         "spelling": "p"
// ASSOCCALL_EXT:         "spelling": ": "
// ASSOCCALL_EXT:         "spelling": "U"
// ASSOCCALL_EXT: "swiftGenerics": {
// ASSOCCALL_EXT:   "constraints": [
// ASSOCCALL_EXT:     {
// ASSOCCALL_EXT:       "kind": "conformance",
// ASSOCCALL_EXT:       "lhs": "U",
// ASSOCCALL_EXT:       "rhs": "Sequence"
// ASSOCCALL_EXT:     },
// ASSOCCALL_EXT:     {
// ASSOCCALL_EXT:       "kind": "conformance",
// ASSOCCALL_EXT:       "lhs": "V",
// ASSOCCALL_EXT:       "rhs": "Equatable"
// ASSOCCALL_EXT:     }
// ASSOCCALL_EXT:   ],
// ASSOCCALL_EXT:   "parameters": [
// ASSOCCALL_EXT:     {
// ASSOCCALL_EXT:       "depth": 0,
// ASSOCCALL_EXT:       "index": 1,
// ASSOCCALL_EXT:       "name": "U"
// ASSOCCALL_EXT:     },
// ASSOCCALL_EXT:     {
// ASSOCCALL_EXT:       "depth": 1,
// ASSOCCALL_EXT:       "index": 0,
// ASSOCCALL_EXT:       "name": "V"
// ASSOCCALL_EXT:     }
// ASSOCCALL_EXT:   ]
// ASSOCCALL_EXT: }


// ASSOCCALL_MEMBER: "functionSignature": {
// ASSOCCALL_MEMBER:         "spelling": "v"
// ASSOCCALL_MEMBER:         "spelling": ": "
// ASSOCCALL_MEMBER:         "spelling": "V"
// ASSOCCALL_MEMBER:         "spelling": "w"
// ASSOCCALL_MEMBER:         "spelling": ": "
// ASSOCCALL_MEMBER:         "spelling": "String"
// ASSOCCALL_MEMBER:         "spelling": "p"
// ASSOCCALL_MEMBER:         "spelling": ": ["
// ASSOCCALL_MEMBER:         "spelling": "String"
// ASSOCCALL_MEMBER:         "spelling": "]"
// ASSOCCALL_MEMBER: },
// ASSOCCALL_MEMBER: "swiftGenerics": {
// ASSOCCALL_MEMBER:   "constraints": [
// ASSOCCALL_MEMBER:     {
// ASSOCCALL_MEMBER:       "kind": "conformance",
// ASSOCCALL_MEMBER:       "lhs": "V",
// ASSOCCALL_MEMBER:       "rhs": "Equatable"
// ASSOCCALL_MEMBER:     }
// ASSOCCALL_MEMBER:   ],
// ASSOCCALL_MEMBER:   "parameters": [
// ASSOCCALL_MEMBER:     {
// ASSOCCALL_MEMBER:       "depth": 1,
// ASSOCCALL_MEMBER:       "index": 0,
// ASSOCCALL_MEMBER:       "name": "V"
// ASSOCCALL_MEMBER:     }
// ASSOCCALL_MEMBER:   ]
// ASSOCCALL_MEMBER: }