Skip to content

Commit 7e0a41e

Browse files
committed
[TypeLoc] Extend HyperobjectTypeLoc to maintain complete information on hyperobject types for AST-based tools.
1 parent a29f696 commit 7e0a41e

13 files changed

Lines changed: 814 additions & 28 deletions

File tree

Lines changed: 287 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
# RUN: clangd -lit-test < %s | FileCheck %s
2+
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off","initializationOptions":{"fallbackFlags":["-fopencilk"]}}}
3+
---
4+
{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///hyper.cpp","languageId":"cpp","version":1,"text":"void add_long(void *l, void *r) {*(long *)l += *(long *)r;}\nvoid zero_long(void *v) {*(long *)v = 0;}\ntypedef long cilk_reducer(zero_long, add_long) long_hyper;\nlong_hyper sum = 0;\nusing long_hyper2 = long cilk_reducer(zero_long, add_long);\nlong_hyper2 sum2 = 0;\nlong cilk_reducer(zero_long, add_long) sum3 = 0;"}}}
5+
---
6+
{"jsonrpc":"2.0","id":1,"method":"textDocument/references","params":{
7+
"textDocument":{"uri":"test:///hyper.cpp"},
8+
"position":{"line":0,"character":5},
9+
"context":{"includeDeclaration": false}
10+
}}
11+
# CHECK: "id": 1
12+
# CHECK-NEXT: "jsonrpc": "2.0",
13+
# CHECK-NEXT: "result": [
14+
# CHECK-NEXT: {
15+
# CHECK-NEXT: "range": {
16+
# CHECK-NEXT: "end": {
17+
# CHECK-NEXT: "character": 45,
18+
# CHECK-NEXT: "line": 2
19+
# CHECK-NEXT: },
20+
# CHECK-NEXT: "start": {
21+
# CHECK-NEXT: "character": 37,
22+
# CHECK-NEXT: "line": 2
23+
# CHECK-NEXT: }
24+
# CHECK-NEXT: },
25+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
26+
# CHECK-NEXT: },
27+
# CHECK-NEXT: {
28+
# CHECK-NEXT: "range": {
29+
# CHECK-NEXT: "end": {
30+
# CHECK-NEXT: "character": 57,
31+
# CHECK-NEXT: "line": 4
32+
# CHECK-NEXT: },
33+
# CHECK-NEXT: "start": {
34+
# CHECK-NEXT: "character": 49,
35+
# CHECK-NEXT: "line": 4
36+
# CHECK-NEXT: }
37+
# CHECK-NEXT: },
38+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
39+
# CHECK-NEXT: },
40+
# CHECK-NEXT: {
41+
# CHECK-NEXT: "range": {
42+
# CHECK-NEXT: "end": {
43+
# CHECK-NEXT: "character": 37,
44+
# CHECK-NEXT: "line": 6
45+
# CHECK-NEXT: },
46+
# CHECK-NEXT: "start": {
47+
# CHECK-NEXT: "character": 29,
48+
# CHECK-NEXT: "line": 6
49+
# CHECK-NEXT: }
50+
# CHECK-NEXT: },
51+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
52+
# CHECK-NEXT: }
53+
# CHECK-NEXT: ]
54+
---
55+
{"jsonrpc":"2.0","id":1,"method":"textDocument/references","params":{
56+
"textDocument":{"uri":"test:///hyper.cpp"},
57+
"position":{"line":1,"character":5},
58+
"context":{"includeDeclaration": false}
59+
}}
60+
# CHECK: "id": 1
61+
# CHECK-NEXT: "jsonrpc": "2.0",
62+
# CHECK-NEXT: "result": [
63+
# CHECK-NEXT: {
64+
# CHECK-NEXT: "range": {
65+
# CHECK-NEXT: "end": {
66+
# CHECK-NEXT: "character": 35,
67+
# CHECK-NEXT: "line": 2
68+
# CHECK-NEXT: },
69+
# CHECK-NEXT: "start": {
70+
# CHECK-NEXT: "character": 26,
71+
# CHECK-NEXT: "line": 2
72+
# CHECK-NEXT: }
73+
# CHECK-NEXT: },
74+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
75+
# CHECK-NEXT: },
76+
# CHECK-NEXT: {
77+
# CHECK-NEXT: "range": {
78+
# CHECK-NEXT: "end": {
79+
# CHECK-NEXT: "character": 47,
80+
# CHECK-NEXT: "line": 4
81+
# CHECK-NEXT: },
82+
# CHECK-NEXT: "start": {
83+
# CHECK-NEXT: "character": 38,
84+
# CHECK-NEXT: "line": 4
85+
# CHECK-NEXT: }
86+
# CHECK-NEXT: },
87+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
88+
# CHECK-NEXT: },
89+
# CHECK-NEXT: {
90+
# CHECK-NEXT: "range": {
91+
# CHECK-NEXT: "end": {
92+
# CHECK-NEXT: "character": 27,
93+
# CHECK-NEXT: "line": 6
94+
# CHECK-NEXT: },
95+
# CHECK-NEXT: "start": {
96+
# CHECK-NEXT: "character": 18,
97+
# CHECK-NEXT: "line": 6
98+
# CHECK-NEXT: }
99+
# CHECK-NEXT: },
100+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
101+
# CHECK-NEXT: }
102+
# CHECK-NEXT: ]
103+
---
104+
{"jsonrpc":"2.0","id":1,"method":"textDocument/references","params":{
105+
"textDocument":{"uri":"test:///hyper.cpp"},
106+
"position":{"line":2,"character":47},
107+
"context":{"includeDeclaration": false}
108+
}}
109+
# CHECK: "id": 1
110+
# CHECK-NEXT: "jsonrpc": "2.0",
111+
# CHECK-NEXT: "result": [
112+
# CHECK-NEXT: {
113+
# CHECK-NEXT: "range": {
114+
# CHECK-NEXT: "end": {
115+
# CHECK-NEXT: "character": 10,
116+
# CHECK-NEXT: "line": 3
117+
# CHECK-NEXT: },
118+
# CHECK-NEXT: "start": {
119+
# CHECK-NEXT: "character": 0,
120+
# CHECK-NEXT: "line": 3
121+
# CHECK-NEXT: }
122+
# CHECK-NEXT: },
123+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
124+
# CHECK-NEXT: }
125+
# CHECK-NEXT: ]
126+
---
127+
---
128+
{"jsonrpc":"2.0","id":1,"method":"textDocument/references","params":{
129+
"textDocument":{"uri":"test:///hyper.cpp"},
130+
"position":{"line":4,"character":6},
131+
"context":{"includeDeclaration": false}
132+
}}
133+
# CHECK: "id": 1
134+
# CHECK-NEXT: "jsonrpc": "2.0",
135+
# CHECK-NEXT: "result": [
136+
# CHECK-NEXT: {
137+
# CHECK-NEXT: "range": {
138+
# CHECK-NEXT: "end": {
139+
# CHECK-NEXT: "character": 11,
140+
# CHECK-NEXT: "line": 5
141+
# CHECK-NEXT: },
142+
# CHECK-NEXT: "start": {
143+
# CHECK-NEXT: "character": 0,
144+
# CHECK-NEXT: "line": 5
145+
# CHECK-NEXT: }
146+
# CHECK-NEXT: },
147+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
148+
# CHECK-NEXT: }
149+
# CHECK-NEXT: ]
150+
---
151+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///hyper.cpp"},"position":{"line":2,"character":26}}}
152+
# CHECK: "id": 1,
153+
# CHECK-NEXT: "jsonrpc": "2.0",
154+
# CHECK-NEXT: "result": [
155+
# CHECK-NEXT: {
156+
# CHECK-NEXT: "range": {
157+
# CHECK-NEXT: "end": {
158+
# CHECK-NEXT: "character": 14,
159+
# CHECK-NEXT: "line": 1
160+
# CHECK-NEXT: },
161+
# CHECK-NEXT: "start": {
162+
# CHECK-NEXT: "character": 5,
163+
# CHECK-NEXT: "line": 1
164+
# CHECK-NEXT: }
165+
# CHECK-NEXT: },
166+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
167+
# CHECK-NEXT: }
168+
# CHECK-NEXT: ]
169+
---
170+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///hyper.cpp"},"position":{"line":2,"character":37}}}
171+
# CHECK: "id": 1,
172+
# CHECK-NEXT: "jsonrpc": "2.0",
173+
# CHECK-NEXT: "result": [
174+
# CHECK-NEXT: {
175+
# CHECK-NEXT: "range": {
176+
# CHECK-NEXT: "end": {
177+
# CHECK-NEXT: "character": 13,
178+
# CHECK-NEXT: "line": 0
179+
# CHECK-NEXT: },
180+
# CHECK-NEXT: "start": {
181+
# CHECK-NEXT: "character": 5,
182+
# CHECK-NEXT: "line": 0
183+
# CHECK-NEXT: }
184+
# CHECK-NEXT: },
185+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
186+
# CHECK-NEXT: }
187+
# CHECK-NEXT: ]
188+
---
189+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///hyper.cpp"},"position":{"line":3,"character":0}}}
190+
# CHECK: "id": 1,
191+
# CHECK-NEXT: "jsonrpc": "2.0",
192+
# CHECK-NEXT: "result": [
193+
# CHECK-NEXT: {
194+
# CHECK-NEXT: "range": {
195+
# CHECK-NEXT: "end": {
196+
# CHECK-NEXT: "character": 57,
197+
# CHECK-NEXT: "line": 2
198+
# CHECK-NEXT: },
199+
# CHECK-NEXT: "start": {
200+
# CHECK-NEXT: "character": 47,
201+
# CHECK-NEXT: "line": 2
202+
# CHECK-NEXT: }
203+
# CHECK-NEXT: },
204+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
205+
# CHECK-NEXT: }
206+
# CHECK-NEXT: ]
207+
---
208+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///hyper.cpp"},"position":{"line":4,"character":38}}}
209+
# CHECK: "id": 1,
210+
# CHECK-NEXT: "jsonrpc": "2.0",
211+
# CHECK-NEXT: "result": [
212+
# CHECK-NEXT: {
213+
# CHECK-NEXT: "range": {
214+
# CHECK-NEXT: "end": {
215+
# CHECK-NEXT: "character": 14,
216+
# CHECK-NEXT: "line": 1
217+
# CHECK-NEXT: },
218+
# CHECK-NEXT: "start": {
219+
# CHECK-NEXT: "character": 5,
220+
# CHECK-NEXT: "line": 1
221+
# CHECK-NEXT: }
222+
# CHECK-NEXT: },
223+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
224+
# CHECK-NEXT: }
225+
# CHECK-NEXT: ]
226+
---
227+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///hyper.cpp"},"position":{"line":4,"character":49}}}
228+
# CHECK: "id": 1,
229+
# CHECK-NEXT: "jsonrpc": "2.0",
230+
# CHECK-NEXT: "result": [
231+
# CHECK-NEXT: {
232+
# CHECK-NEXT: "range": {
233+
# CHECK-NEXT: "end": {
234+
# CHECK-NEXT: "character": 13,
235+
# CHECK-NEXT: "line": 0
236+
# CHECK-NEXT: },
237+
# CHECK-NEXT: "start": {
238+
# CHECK-NEXT: "character": 5,
239+
# CHECK-NEXT: "line": 0
240+
# CHECK-NEXT: }
241+
# CHECK-NEXT: },
242+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
243+
# CHECK-NEXT: }
244+
# CHECK-NEXT: ]
245+
---
246+
---
247+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///hyper.cpp"},"position":{"line":6,"character":18}}}
248+
# CHECK: "id": 1,
249+
# CHECK-NEXT: "jsonrpc": "2.0",
250+
# CHECK-NEXT: "result": [
251+
# CHECK-NEXT: {
252+
# CHECK-NEXT: "range": {
253+
# CHECK-NEXT: "end": {
254+
# CHECK-NEXT: "character": 14,
255+
# CHECK-NEXT: "line": 1
256+
# CHECK-NEXT: },
257+
# CHECK-NEXT: "start": {
258+
# CHECK-NEXT: "character": 5,
259+
# CHECK-NEXT: "line": 1
260+
# CHECK-NEXT: }
261+
# CHECK-NEXT: },
262+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
263+
# CHECK-NEXT: }
264+
# CHECK-NEXT: ]
265+
---
266+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///hyper.cpp"},"position":{"line":6,"character":30}}}
267+
# CHECK: "id": 1,
268+
# CHECK-NEXT: "jsonrpc": "2.0",
269+
# CHECK-NEXT: "result": [
270+
# CHECK-NEXT: {
271+
# CHECK-NEXT: "range": {
272+
# CHECK-NEXT: "end": {
273+
# CHECK-NEXT: "character": 13,
274+
# CHECK-NEXT: "line": 0
275+
# CHECK-NEXT: },
276+
# CHECK-NEXT: "start": {
277+
# CHECK-NEXT: "character": 5,
278+
# CHECK-NEXT: "line": 0
279+
# CHECK-NEXT: }
280+
# CHECK-NEXT: },
281+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
282+
# CHECK-NEXT: }
283+
# CHECK-NEXT: ]
284+
---
285+
{"jsonrpc":"2.0","id":2,"method":"shutdown"}
286+
---
287+
{"jsonrpc":"2.0","method":"exit"}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# RUN: clangd -lit-test < %s | FileCheck %s
2+
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off","initializationOptions":{"fallbackFlags":["-fopencilk"]}}}
3+
---
4+
{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///hyper.cpp","languageId":"cpp","version":1,"text":"typedef long size_t;\nstruct reducer_base {\nprotected:\n reducer_base() = default;\npublic:\n virtual ~reducer_base() = default;\n virtual size_t view_size() const = 0;\n virtual reducer_base *identity(void *view) = 0;\n virtual void reduce(reducer_base *l, reducer_base *r) = 0;\n};\ntemplate <typename T> struct opadd_hyper : public reducer_base {\nvirtual size_t view_size() const override;\n virtual reducer_base *identity(void *v) override;\n virtual void reduce(reducer_base *l, reducer_base *r) override;\n};\nusing long_hyper = opadd_hyper<long> cilk_reducer;\nlong_hyper sum;"}}}
5+
---
6+
{"jsonrpc":"2.0","id":1,"method":"textDocument/references","params":{
7+
"textDocument":{"uri":"test:///hyper.cpp"},
8+
"position":{"line":10,"character":29},
9+
"context":{"includeDeclaration": false}
10+
}}
11+
# CHECK: "id": 1
12+
# CHECK-NEXT: "jsonrpc": "2.0",
13+
# CHECK-NEXT: "result": [
14+
# CHECK-NEXT: {
15+
# CHECK-NEXT: "range": {
16+
# CHECK-NEXT: "end": {
17+
# CHECK-NEXT: "character": 30,
18+
# CHECK-NEXT: "line": 15
19+
# CHECK-NEXT: },
20+
# CHECK-NEXT: "start": {
21+
# CHECK-NEXT: "character": 19,
22+
# CHECK-NEXT: "line": 15
23+
# CHECK-NEXT: }
24+
# CHECK-NEXT: },
25+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
26+
# CHECK-NEXT: }
27+
# CHECK-NEXT: ]
28+
---
29+
{"jsonrpc":"2.0","id":1,"method":"textDocument/references","params":{
30+
"textDocument":{"uri":"test:///hyper.cpp"},
31+
"position":{"line":15,"character":6},
32+
"context":{"includeDeclaration": false}
33+
}}
34+
# CHECK: "id": 1
35+
# CHECK-NEXT: "jsonrpc": "2.0",
36+
# CHECK-NEXT: "result": [
37+
# CHECK-NEXT: {
38+
# CHECK-NEXT: "range": {
39+
# CHECK-NEXT: "end": {
40+
# CHECK-NEXT: "character": 10,
41+
# CHECK-NEXT: "line": 16
42+
# CHECK-NEXT: },
43+
# CHECK-NEXT: "start": {
44+
# CHECK-NEXT: "character": 0,
45+
# CHECK-NEXT: "line": 16
46+
# CHECK-NEXT: }
47+
# CHECK-NEXT: },
48+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
49+
# CHECK-NEXT: }
50+
# CHECK-NEXT: ]
51+
---
52+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{
53+
"textDocument":{"uri":"test:///hyper.cpp"},
54+
"position":{"line":15,"character":19}}}
55+
# CHECK: "id": 1,
56+
# CHECK-NEXT: "jsonrpc": "2.0",
57+
# CHECK-NEXT: "result": [
58+
# CHECK-NEXT: {
59+
# CHECK-NEXT: "range": {
60+
# CHECK-NEXT: "end": {
61+
# CHECK-NEXT: "character": 40,
62+
# CHECK-NEXT: "line": 10
63+
# CHECK-NEXT: },
64+
# CHECK-NEXT: "start": {
65+
# CHECK-NEXT: "character": 29,
66+
# CHECK-NEXT: "line": 10
67+
# CHECK-NEXT: }
68+
# CHECK-NEXT: },
69+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
70+
# CHECK-NEXT: }
71+
# CHECK-NEXT: ]
72+
---
73+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{
74+
"textDocument":{"uri":"test:///hyper.cpp"},
75+
"position":{"line":16,"character":0}}}
76+
# CHECK: "id": 1,
77+
# CHECK-NEXT: "jsonrpc": "2.0",
78+
# CHECK-NEXT: "result": [
79+
# CHECK-NEXT: {
80+
# CHECK-NEXT: "range": {
81+
# CHECK-NEXT: "end": {
82+
# CHECK-NEXT: "character": 16,
83+
# CHECK-NEXT: "line": 15
84+
# CHECK-NEXT: },
85+
# CHECK-NEXT: "start": {
86+
# CHECK-NEXT: "character": 6,
87+
# CHECK-NEXT: "line": 15
88+
# CHECK-NEXT: }
89+
# CHECK-NEXT: },
90+
# CHECK-NEXT: "uri": "{{.*}}/hyper.cpp"
91+
# CHECK-NEXT: }
92+
# CHECK-NEXT: ]
93+
---
94+
{"jsonrpc":"2.0","id":2,"method":"shutdown"}
95+
---
96+
{"jsonrpc":"2.0","method":"exit"}

0 commit comments

Comments
 (0)