-
-
Notifications
You must be signed in to change notification settings - Fork 285
/
test_go_to_definition.jl
399 lines (306 loc) Β· 11.4 KB
/
test_go_to_definition.jl
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
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
### A Pluto.jl notebook ###
# v0.17.5
using Markdown
using InteractiveUtils
# βββ‘ a3865853-58ad-4e27-bfbf-7223760ca026
md"""
# Methodical testing for the go-to-definition plugin
### FAQ
**Q:** Wait.. isn't it better to have this as javascript tests, so we can actually automate them and be sure that nothing breaks instead of relying on our flimsy human eyeballs?
**A:** Yes
"""
# βββ‘ c93bd0ce-dffe-4416-a007-79116ab1f1cb
macro >(expr)
nothing
end
# βββ‘ 91bd5444-154e-48f1-bd51-fbdcfc5cfc14
macro +(expr)
return esc(expr)
end
# βββ‘ cf229fd1-5bdc-4a44-8272-5ecc872a2fbd
md"""
### Reading guide for ["Definitions"](#Definitions)
Every section here consists of a couple of definitions, followed by a cell that references all of these. The test is pressing every reference and making sure it selects the right part in the definition cell.
"""
# βββ‘ 8d559967-84da-45c9-9e05-ce1adc36804c
md"""
### Reading guide for ["Usages"](#Usages)
There are some "predefined" variables: `x`, `y` and `z`; `@z`, `@z_str`; `X`, `Y` and `Z`. These are then used to make sure they get underlined. I decided that the `z`-s and `y`-s are intended to reference outside of the cell. If there is a way to override the variable locally in the cell or an identifier that isn't a reference, use `x` for that. There should be **no underlined `x`'s**.
"""
# βββ‘ 52620cb5-7d42-4d40-a3ae-6d9d29448014
md"## Definitions"
# βββ‘ 7527a5b8-7eeb-4ec7-abbe-34ed68415ce1
md"---"
# βββ‘ 0cdf94d0-dd1a-4a4a-b6c2-d2d290cd3224
import Example
# βββ‘ 2d145800-c22f-4bbe-a6f3-bca8bb79d513
import Example as ExampleAlias
# βββ‘ df05dcd2-fb6b-4907-ad80-6d231d6b6ce5
import Example: hello, domath as domath_alias
# βββ‘ f22e3e28-6cda-4dbd-bc30-d2f7c2411e91
import Example: hello as hello_alias
# βββ‘ 8948913b-9917-46c2-a91a-14386d269502
import Example.domath
# βββ‘ e152285a-9265-4a13-bf0d-cfc0ba418595
import Example.domath as another_domath_alias
# βββ‘ 90682238-2769-4f20-afcf-56ced93242ba
Example; ExampleAlias; hello; domath;
# βββ‘ e30de56d-5985-42e7-abde-1ec90c7484c9
hello_alias; domath_alias; another_domath_alias; # Pluto doesn't recognize aliases?
# βββ‘ 3be4e4b7-02f8-4f4c-bcab-2d796f38a93f
md"---"
# βββ‘ 1d2f2927-49d0-404e-a324-4ab4f677d89a
abstract type _abstract_type1 end
# βββ‘ 654566d0-9b46-49dd-a8ac-4d3f5708cba5
abstract type _abstract_type2{T} end
# βββ‘ 8e823381-7b06-44b1-99e0-565083bc2434
_abstract_type1; _abstract_type2;
# βββ‘ 709300fe-3b3d-471f-8fc1-608b904d18ed
md"---"
# βββ‘ 4f996030-0ff2-4ea2-aa48-ac92765072c8
struct _struct1 end;
# βββ‘ 670eb47b-225f-4626-9276-4cae08d90843
struct _struct2 x end;
# βββ‘ 5afc38cb-ae2b-495e-93f9-a7ca85773ca9
struct _struct4{T} <: _abstract_type2{T} end
# βββ‘ 327e846b-3edc-406a-936f-799475a7b3de
md"---"
# βββ‘ 955ae894-24a1-4f8a-999d-3e8d809e0eba
(_tuple1,) = (:x,);
# βββ‘ 09a24659-6646-40bb-8e7c-0d340d2b45da
(_tuple2, _tuple3, _tuple4...) = (:x1, :x2, :x3, :x4);
# βββ‘ a85d6a78-b212-46b0-bacc-ad880911f2cb
_tuple1; _tuple2; _tuple3; _tuple4;
# βββ‘ cb226d6d-f294-42b0-a40e-cb07e58fa776
md"---"
# βββ‘ 554ad95c-2edd-4ef9-b532-0ec7cf08243c
_baretuple1, = (:x,);
# βββ‘ d6e27295-77eb-4a84-98be-ea338a85f455
_baretuple2, _baretuple3... = (:x1, :x2, :x3);
# βββ‘ 06948715-85e7-4609-94b1-bb91123d928c
_baretuple1; _baretuple2; _baretuple3;
# βββ‘ 22032cef-5889-48d8-8709-bb7eeac89638
md"""
For both `_tuple4` and `_baretuple3`: JS side has these covered (shown by example below), but Pluto doesn't recognize it (thus it not working outside cells)
"""
# βββ‘ 31713a89-8656-4cf9-aee0-ac24c3430c0a
let
(_tuple2, _tuple3, _tuple4...) = (:x1, :x2, :x3, :x4);
_baretuple2, _baretuple3... = (:x1, :x2, :x3);
_baretuple3; _tuple4; # cmd+click me!
end;
# βββ‘ 0a8e5b66-daaa-4f32-8dd8-1e8b9ec35465
md"---"
# βββ‘ 4e3b5537-59b7-4d87-ae54-f1153c092ffa
const _const = :const;
# βββ‘ 5d2d43f0-5a17-407a-a9ee-a041010e5579
global _global = :global;
# βββ‘ e14b69ca-f325-440c-acb1-c33de71e75a2
_const; _global;
# βββ‘ f9737a60-9909-445c-8382-4dd00aa267ba
md"## Usages"
# βββ‘ a0f62011-92f2-44ad-b420-27217bcbd89c
md"### Predefined"
# βββ‘ 90a81bc8-cce9-49bd-a3c4-126c74a515d3
x = "Hi, I'm x";
# βββ‘ ad3ab162-2139-45b4-8877-18285f1c2fa8
y = "Hi, x";
# βββ‘ 18e25073-6ea7-4287-975d-84c05743930e
z = "I was expecting a joke";
# βββ‘ b7bd9512-a119-46e5-a6df-58b04e04bda0
_function3() = (x, z);
# βββ‘ 1c530e0e-770c-44b5-a13e-e5b905e3d84c
_function6(x) = x, z;
# βββ‘ a6eec43c-dc37-4113-a7e5-fafde8bdbd39
@Base.kwdef struct _struct3
x::Int = z
end;
# βββ‘ 0135431d-4b3f-4513-9982-937cc0b60837
_struct1; _struct2; _struct3; _struct4;
# βββ‘ 669cf7b9-b1cc-4f01-8dc3-b9a156f9de63
macro z end;
# βββ‘ 20804f0f-ca92-463d-afb7-604aeb6057f7
macro z_str end;
# βββ‘ 7781bce5-2dd8-4d06-8bfd-7589bea619dc
abstract type X end
# βββ‘ f9236dd2-4fd7-4d86-8dcb-cbc011da8b03
abstract type Y end
# βββ‘ 4a9d7bb3-9ca7-4af9-b7e1-e730fbc1c570
abstract type Z end
# βββ‘ 5d9701eb-46a3-483a-9b51-0e376031ae34
function _function1()::Z end;
# βββ‘ 24716c18-5a36-4b12-9ed5-43069c81f15b
function _function2(x...)::Z
x, z
end;
# βββ‘ 5365c683-75b7-4f29-8cbe-810167409686
_function4(x::Z) = begin x end;
# βββ‘ a85475ce-44ee-4b87-99b6-10b8b31d99fa
_function4(::Z) = (10, z, "hi");
# βββ‘ b2c9c60f-c107-4cbb-bc7e-3018117e9ecb
_function5(x)::Z = (x, z);
# βββ‘ 3f3440dc-4449-4a9f-b019-f2b5a3fc97b9
_function1; _function2; _function3; _function4; _function5; _function6;
# βββ‘ e5b3cb7a-bf0d-479e-a533-d5699abe6f2a
md"### Cases"
# βββ‘ 94c6fccc-ae3a-40bb-bf3f-a11f6d9244e2
@> sum(x for x in [1,2,3])
# βββ‘ 18ea6b86-9ed5-4a75-852e-13cbb7f4d8da
@> function f(x=z)::z
x, z
end
# βββ‘ d8de87c9-e516-4f5f-978a-4c53071c5656
@> function f(x=z; y)::z
x, y, z
end
# βββ‘ 6bc106ce-ebba-4487-859e-9701ebeda022
md"---"
# βββ‘ c283d772-e007-447a-aa88-a01d75d48e2e
@> z.@x
# βββ‘ fa2aaff3-9b8a-4cdc-919d-2de38f54018b
@> @z.x
# βββ‘ da330714-5130-470b-bd2a-6343c932f808
@> @z
# βββ‘ 196a17eb-1ded-40be-a00b-b5e4d7fa1070
md"---"
# βββ‘ 3e773c63-a8b7-4ad8-9dbb-74d519054f0f
@> struct x
x1
x2::z
x3::z = z
x4 = z
end
# βββ‘ eac662c8-369e-4bf3-9aec-5f9c46fc4f77
@> x::z = z
# βββ‘ 1d7c5c41-f5c8-40b3-b0b1-7da19572bef2
@> :(1 + $(z...) + 1)
# βββ‘ 7521b3c9-a1bd-4786-aa19-44fd1db90149
@> (x, y...) = z
# βββ‘ 4eb71552-16da-42bb-a9dc-f18e1b3e7190
@> z.@macro x = z
# βββ‘ 3f009423-6a36-41c2-ad74-de596a8519c1
@> begin
struct x end
struct x{y} end
struct x <: z end
struct x <: z{x,z} end
struct x{y} <: z{x,y,z} end
x, y, z
end
# βββ‘ fba1aebf-c00a-4750-89d3-a1b6e27c07a4
@> var"x" = 10;
# βββ‘ 0b34c665-9c93-40ab-9965-d0ae36a2190d
@> var"x";
# βββ‘ 29f7c36e-9b4d-4a91-83b3-162f1cd9e00c
@> (x=z) -> (x, z)
# βββ‘ a478a0e0-51ba-4261-ac9d-5b3333b5a8bf
@> f(z)
# βββ‘ 8ea3cd9e-c831-4140-977c-cc6cee5367b9
@> f(x=z)
# βββ‘ 499392fa-4c50-4d0b-b584-098355e9af48
md"---"
# βββ‘ 5749eb9d-f18f-4a91-8bb1-17d1c680d397
@> quote $(z) end
# βββ‘ 259004c3-770f-4fe2-9c84-4c6f5d5c879c
@> quote quote $(x) end end
# βββ‘ 91f8bfee-102a-437d-8c40-d7c694f0a384
@> quote quote $$(z) end end
# βββ‘ 00000000-0000-0000-0000-000000000001
PLUTO_PROJECT_TOML_CONTENTS = """
[deps]
Example = "7876af07-990d-54b4-ab0e-23690620f79a"
[compat]
Example = "~0.5.3"
"""
# βββ‘ 00000000-0000-0000-0000-000000000002
PLUTO_MANIFEST_TOML_CONTENTS = """
# This file is machine-generated - editing it directly is not advised
[[Example]]
git-tree-sha1 = "46e44e869b4d90b96bd8ed1fdcf32244fddfb6cc"
uuid = "7876af07-990d-54b4-ab0e-23690620f79a"
version = "0.5.3"
"""
# βββ‘ Cell order:
# ββa3865853-58ad-4e27-bfbf-7223760ca026
# ββc93bd0ce-dffe-4416-a007-79116ab1f1cb
# ββ91bd5444-154e-48f1-bd51-fbdcfc5cfc14
# ββcf229fd1-5bdc-4a44-8272-5ecc872a2fbd
# ββ8d559967-84da-45c9-9e05-ce1adc36804c
# ββ52620cb5-7d42-4d40-a3ae-6d9d29448014
# β β5d9701eb-46a3-483a-9b51-0e376031ae34
# β β24716c18-5a36-4b12-9ed5-43069c81f15b
# β βb7bd9512-a119-46e5-a6df-58b04e04bda0
# β β5365c683-75b7-4f29-8cbe-810167409686
# β βa85475ce-44ee-4b87-99b6-10b8b31d99fa
# β βb2c9c60f-c107-4cbb-bc7e-3018117e9ecb
# β β1c530e0e-770c-44b5-a13e-e5b905e3d84c
# β β3f3440dc-4449-4a9f-b019-f2b5a3fc97b9
# ββ7527a5b8-7eeb-4ec7-abbe-34ed68415ce1
# β β0cdf94d0-dd1a-4a4a-b6c2-d2d290cd3224
# β β2d145800-c22f-4bbe-a6f3-bca8bb79d513
# β βdf05dcd2-fb6b-4907-ad80-6d231d6b6ce5
# β βf22e3e28-6cda-4dbd-bc30-d2f7c2411e91
# β β8948913b-9917-46c2-a91a-14386d269502
# β βe152285a-9265-4a13-bf0d-cfc0ba418595
# β β90682238-2769-4f20-afcf-56ced93242ba
# β βe30de56d-5985-42e7-abde-1ec90c7484c9
# ββ3be4e4b7-02f8-4f4c-bcab-2d796f38a93f
# β β1d2f2927-49d0-404e-a324-4ab4f677d89a
# β β654566d0-9b46-49dd-a8ac-4d3f5708cba5
# β β8e823381-7b06-44b1-99e0-565083bc2434
# ββ709300fe-3b3d-471f-8fc1-608b904d18ed
# β β4f996030-0ff2-4ea2-aa48-ac92765072c8
# β β670eb47b-225f-4626-9276-4cae08d90843
# β βa6eec43c-dc37-4113-a7e5-fafde8bdbd39
# β β5afc38cb-ae2b-495e-93f9-a7ca85773ca9
# β β0135431d-4b3f-4513-9982-937cc0b60837
# ββ327e846b-3edc-406a-936f-799475a7b3de
# β β955ae894-24a1-4f8a-999d-3e8d809e0eba
# β β09a24659-6646-40bb-8e7c-0d340d2b45da
# β βa85d6a78-b212-46b0-bacc-ad880911f2cb
# ββcb226d6d-f294-42b0-a40e-cb07e58fa776
# β β554ad95c-2edd-4ef9-b532-0ec7cf08243c
# β βd6e27295-77eb-4a84-98be-ea338a85f455
# β β06948715-85e7-4609-94b1-bb91123d928c
# ββ22032cef-5889-48d8-8709-bb7eeac89638
# β β31713a89-8656-4cf9-aee0-ac24c3430c0a
# ββ0a8e5b66-daaa-4f32-8dd8-1e8b9ec35465
# β β4e3b5537-59b7-4d87-ae54-f1153c092ffa
# β β5d2d43f0-5a17-407a-a9ee-a041010e5579
# β βe14b69ca-f325-440c-acb1-c33de71e75a2
# ββf9737a60-9909-445c-8382-4dd00aa267ba
# ββa0f62011-92f2-44ad-b420-27217bcbd89c
# β β90a81bc8-cce9-49bd-a3c4-126c74a515d3
# β βad3ab162-2139-45b4-8877-18285f1c2fa8
# β β18e25073-6ea7-4287-975d-84c05743930e
# β β669cf7b9-b1cc-4f01-8dc3-b9a156f9de63
# β β20804f0f-ca92-463d-afb7-604aeb6057f7
# β β7781bce5-2dd8-4d06-8bfd-7589bea619dc
# β βf9236dd2-4fd7-4d86-8dcb-cbc011da8b03
# β β4a9d7bb3-9ca7-4af9-b7e1-e730fbc1c570
# ββe5b3cb7a-bf0d-479e-a533-d5699abe6f2a
# β β94c6fccc-ae3a-40bb-bf3f-a11f6d9244e2
# β β18ea6b86-9ed5-4a75-852e-13cbb7f4d8da
# β βd8de87c9-e516-4f5f-978a-4c53071c5656
# ββ6bc106ce-ebba-4487-859e-9701ebeda022
# β βc283d772-e007-447a-aa88-a01d75d48e2e
# β βfa2aaff3-9b8a-4cdc-919d-2de38f54018b
# β βda330714-5130-470b-bd2a-6343c932f808
# ββ196a17eb-1ded-40be-a00b-b5e4d7fa1070
# β β3e773c63-a8b7-4ad8-9dbb-74d519054f0f
# β βeac662c8-369e-4bf3-9aec-5f9c46fc4f77
# β β1d7c5c41-f5c8-40b3-b0b1-7da19572bef2
# β β7521b3c9-a1bd-4786-aa19-44fd1db90149
# β β4eb71552-16da-42bb-a9dc-f18e1b3e7190
# β β3f009423-6a36-41c2-ad74-de596a8519c1
# β βfba1aebf-c00a-4750-89d3-a1b6e27c07a4
# β β0b34c665-9c93-40ab-9965-d0ae36a2190d
# β β29f7c36e-9b4d-4a91-83b3-162f1cd9e00c
# β βa478a0e0-51ba-4261-ac9d-5b3333b5a8bf
# β β8ea3cd9e-c831-4140-977c-cc6cee5367b9
# ββ499392fa-4c50-4d0b-b584-098355e9af48
# β β5749eb9d-f18f-4a91-8bb1-17d1c680d397
# β β259004c3-770f-4fe2-9c84-4c6f5d5c879c
# β β91f8bfee-102a-437d-8c40-d7c694f0a384
# ββ00000000-0000-0000-0000-000000000001
# ββ00000000-0000-0000-0000-000000000002