Skip to content

Commit 6b9d1c1

Browse files
committed
Stop digging into expressions when result is set.
1 parent 067cf80 commit 6b9d1c1

File tree

5 files changed

+1
-67
lines changed

5 files changed

+1
-67
lines changed

analysis/src/Completion.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ let completionWithParser ~debug ~path ~posCursor ~currentFile ~text =
476476
so the apply expression does not include the cursor *)
477477
if setPipeResult ~lhs ~id:"" then setFound ()
478478
| _ ->
479-
if expr.pexp_loc |> Loc.hasPos ~pos:posNoWhite then (
479+
if expr.pexp_loc |> Loc.hasPos ~pos:posNoWhite && !result = None then (
480480
setFound ();
481481
match expr.pexp_desc with
482482
| Pexp_constant _ -> setResult Cnone

analysis/tests/src/expected/Completion.res.txt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,6 @@ Completable: Clabel([Lib, foo], "", [])
378378

379379
Complete tests/src/Completion.res 26:13
380380
posCursor:[26:13] posNoWhite:[26:12] Found expr:[26:3->26:13]
381-
posCursor:[26:13] posNoWhite:[26:12] Found expr:[26:12->26:13]
382-
Pexp_ident m:[26:12->26:13]
383381
Completable: Cpath array->m
384382
[{
385383
"label": "Js.Array2.mapi",
@@ -397,8 +395,6 @@ Completable: Cpath array->m
397395

398396
Complete tests/src/Completion.res 29:13
399397
posCursor:[29:13] posNoWhite:[29:12] Found expr:[29:3->29:13]
400-
posCursor:[29:13] posNoWhite:[29:12] Found expr:[29:10->29:13]
401-
Pexp_ident toU:[29:10->29:13]
402398
Completable: Cpath string->toU
403399
[{
404400
"label": "Js.String2.toUpperCase",
@@ -410,8 +406,6 @@ Completable: Cpath string->toU
410406

411407
Complete tests/src/Completion.res 34:8
412408
posCursor:[34:8] posNoWhite:[34:7] Found expr:[34:3->34:8]
413-
posCursor:[34:8] posNoWhite:[34:7] Found expr:[34:7->34:8]
414-
Pexp_ident e:[34:7->34:8]
415409
Completable: Cpath Value[op]->e
416410
[{
417411
"label": "Belt.Option.eqU",
@@ -431,8 +425,6 @@ Complete tests/src/Completion.res 44:7
431425
posCursor:[44:7] posNoWhite:[44:6] Found expr:[44:3->54:3]
432426
Pexp_apply ...[50:9->50:10] (...[44:3->50:8], ...[51:2->54:3])
433427
posCursor:[44:7] posNoWhite:[44:6] Found expr:[44:3->50:8]
434-
posCursor:[44:7] posNoWhite:[44:6] Found expr:[44:5->44:7]
435-
Pexp_ident |.:[44:5->44:7]
436428
Completable: Cpath Value[fa]->
437429
[{
438430
"label": "ForAuto.abc",
@@ -484,8 +476,6 @@ Completable: Cpath Value[z]
484476
Complete tests/src/Completion.res 62:23
485477
posCursor:[62:23] posNoWhite:[62:22] Found expr:[62:15->62:23]
486478
JSX <O.Comp:[62:15->62:21] z[62:22->62:23]=...[62:22->62:23]> _children:None
487-
posCursor:[62:23] posNoWhite:[62:22] Found expr:[62:22->62:23]
488-
Pexp_ident z:[62:22->62:23]
489479
Completable: Cjsx([O, Comp], z, [z])
490480
[{
491481
"label": "zoo",
@@ -692,8 +682,6 @@ Completable: Cpath Value[Obj, object][""]
692682
Complete tests/src/Completion.res 151:6
693683
posCursor:[151:6] posNoWhite:[151:5] Found expr:[151:4->151:6]
694684
JSX <O.:[151:4->151:6] > _children:None
695-
posCursor:[151:6] posNoWhite:[151:5] Found expr:[151:4->151:6]
696-
Pexp_ident O..createElement:[151:4->151:6]
697685
Completable: Cpath Module[O, ""]
698686
[{
699687
"label": "Comp",
@@ -754,8 +742,6 @@ Completable: Cpath Value[Lis]
754742
Complete tests/src/Completion.res 169:16
755743
posCursor:[169:16] posNoWhite:[169:15] Found expr:[169:4->169:16]
756744
JSX <WithChildren:[169:4->169:16] > _children:None
757-
posCursor:[169:16] posNoWhite:[169:15] Found expr:[169:4->169:16]
758-
Pexp_ident WithChildren.createElement:[169:4->169:16]
759745
Completable: Cpath Module[WithChildren]
760746
[{
761747
"label": "WithChildren",

analysis/tests/src/expected/Div.res.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ Hover tests/src/Div.res 0:10
44
Complete tests/src/Div.res 3:17
55
posCursor:[3:17] posNoWhite:[3:16] Found expr:[3:4->3:17]
66
JSX <div:[3:4->3:7] dangerous[3:8->3:17]=...[3:8->3:17]> _children:None
7-
posCursor:[3:17] posNoWhite:[3:16] Found expr:[3:8->3:17]
8-
Pexp_ident dangerous:[3:8->3:17]
97
Completable: Cjsx([div], dangerous, [dangerous])
108
[{
119
"label": "dangerouslySetInnerHTML",

analysis/tests/src/expected/Jsx.res.txt

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ Completable: Cpath Value[fi]
1212
Complete tests/src/Jsx.res 11:20
1313
posCursor:[11:20] posNoWhite:[11:19] Found expr:[11:4->11:20]
1414
JSX <M:[11:4->11:5] second[11:6->11:12]=...[11:13->11:18] f[11:19->11:20]=...[11:19->11:20]> _children:None
15-
posCursor:[11:20] posNoWhite:[11:19] Found expr:[11:19->11:20]
16-
Pexp_ident f:[11:19->11:20]
1715
Completable: Cjsx([M], f, [second, f])
1816
[{
1917
"label": "first",
@@ -32,8 +30,6 @@ Completable: Cjsx([M], f, [second, f])
3230
Complete tests/src/Jsx.res 14:13
3331
posCursor:[14:13] posNoWhite:[14:12] Found expr:[14:12->14:13]
3432
JSX <M:[14:12->14:13] > _children:None
35-
posCursor:[14:13] posNoWhite:[14:12] Found expr:[14:12->14:13]
36-
Pexp_ident M.createElement:[14:12->14:13]
3733
Completable: Cpath Module[M]
3834
[{
3935
"label": "M",
@@ -58,8 +54,6 @@ Completable: Cpath Module[M]
5854
Complete tests/src/Jsx.res 22:19
5955
posCursor:[22:19] posNoWhite:[22:18] Found expr:[22:4->22:19]
6056
JSX <M:[22:4->22:5] prop[22:6->22:10]=...[22:12->22:16] k[22:18->22:19]=...[22:18->22:19]> _children:None
61-
posCursor:[22:19] posNoWhite:[22:18] Found expr:[22:18->22:19]
62-
Pexp_ident k:[22:18->22:19]
6357
Completable: Cjsx([M], k, [prop, k])
6458
[{
6559
"label": "key",
@@ -72,8 +66,6 @@ Completable: Cjsx([M], k, [prop, k])
7266
Complete tests/src/Jsx.res 25:17
7367
posCursor:[25:17] posNoWhite:[25:16] Found expr:[25:4->25:17]
7468
JSX <M:[25:4->25:5] prop[25:6->25:10]=...[25:11->25:15] k[25:16->25:17]=...[25:16->25:17]> _children:None
75-
posCursor:[25:17] posNoWhite:[25:16] Found expr:[25:16->25:17]
76-
Pexp_ident k:[25:16->25:17]
7769
Completable: Cjsx([M], k, [prop, k])
7870
[{
7971
"label": "key",
@@ -86,8 +78,6 @@ Completable: Cjsx([M], k, [prop, k])
8678
Complete tests/src/Jsx.res 28:21
8779
posCursor:[28:21] posNoWhite:[28:20] Found expr:[28:4->28:21]
8880
JSX <M:[28:4->28:5] prop[28:6->28:10]=...[28:11->28:19] k[28:20->28:21]=...[28:20->28:21]> _children:None
89-
posCursor:[28:21] posNoWhite:[28:20] Found expr:[28:20->28:21]
90-
Pexp_ident k:[28:20->28:21]
9181
Completable: Cjsx([M], k, [prop, k])
9282
[{
9383
"label": "key",
@@ -100,8 +90,6 @@ Completable: Cjsx([M], k, [prop, k])
10090
Complete tests/src/Jsx.res 31:24
10191
posCursor:[31:24] posNoWhite:[31:23] Found expr:[31:4->31:24]
10292
JSX <M:[31:4->31:5] prop[31:6->31:10]=...[31:11->31:22] k[31:23->31:24]=...[31:23->31:24]> _children:None
103-
posCursor:[31:24] posNoWhite:[31:23] Found expr:[31:23->31:24]
104-
Pexp_ident k:[31:23->31:24]
10593
Completable: Cjsx([M], k, [prop, k])
10694
[{
10795
"label": "key",
@@ -114,8 +102,6 @@ Completable: Cjsx([M], k, [prop, k])
114102
Complete tests/src/Jsx.res 34:18
115103
posCursor:[34:18] posNoWhite:[34:17] Found expr:[34:4->34:18]
116104
JSX <M:[34:4->34:5] prop[34:6->34:10]=...[34:12->34:16] k[34:17->34:18]=...[34:17->34:18]> _children:None
117-
posCursor:[34:18] posNoWhite:[34:17] Found expr:[34:17->34:18]
118-
Pexp_ident k:[34:17->34:18]
119105
Completable: Cjsx([M], k, [prop, k])
120106
[{
121107
"label": "key",
@@ -128,8 +114,6 @@ Completable: Cjsx([M], k, [prop, k])
128114
Complete tests/src/Jsx.res 37:16
129115
posCursor:[37:16] posNoWhite:[37:15] Found expr:[37:4->37:16]
130116
JSX <M:[37:4->37:5] prop[37:6->37:10]=...[37:11->37:14] k[37:15->37:16]=...[37:15->37:16]> _children:None
131-
posCursor:[37:16] posNoWhite:[37:15] Found expr:[37:15->37:16]
132-
Pexp_ident k:[37:15->37:16]
133117
Completable: Cjsx([M], k, [prop, k])
134118
[{
135119
"label": "key",
@@ -142,8 +126,6 @@ Completable: Cjsx([M], k, [prop, k])
142126
Complete tests/src/Jsx.res 40:17
143127
posCursor:[40:17] posNoWhite:[40:16] Found expr:[40:4->40:17]
144128
JSX <M:[40:4->40:5] prop[40:6->40:10]=...[40:11->40:15] k[40:16->40:17]=...[40:16->40:17]> _children:None
145-
posCursor:[40:17] posNoWhite:[40:16] Found expr:[40:16->40:17]
146-
Pexp_ident k:[40:16->40:17]
147129
Completable: Cjsx([M], k, [prop, k])
148130
[{
149131
"label": "key",
@@ -156,8 +138,6 @@ Completable: Cjsx([M], k, [prop, k])
156138
Complete tests/src/Jsx.res 43:18
157139
posCursor:[43:18] posNoWhite:[43:17] Found expr:[43:4->43:18]
158140
JSX <M:[43:4->43:5] prop[43:6->43:10]=...[43:11->43:16] k[43:17->43:18]=...[43:17->43:18]> _children:None
159-
posCursor:[43:18] posNoWhite:[43:17] Found expr:[43:17->43:18]
160-
Pexp_ident k:[43:17->43:18]
161141
Completable: Cjsx([M], k, [prop, k])
162142
[{
163143
"label": "key",
@@ -170,8 +150,6 @@ Completable: Cjsx([M], k, [prop, k])
170150
Complete tests/src/Jsx.res 46:16
171151
posCursor:[46:16] posNoWhite:[46:15] Found expr:[46:4->46:16]
172152
JSX <M:[46:4->46:5] prop[46:6->46:10]=...[46:11->46:14] k[46:15->46:16]=...[46:15->46:16]> _children:None
173-
posCursor:[46:16] posNoWhite:[46:15] Found expr:[46:15->46:16]
174-
Pexp_ident k:[46:15->46:16]
175153
Completable: Cjsx([M], k, [prop, k])
176154
[{
177155
"label": "key",
@@ -184,8 +162,6 @@ Completable: Cjsx([M], k, [prop, k])
184162
Complete tests/src/Jsx.res 49:27
185163
posCursor:[49:27] posNoWhite:[49:26] Found expr:[49:4->49:27]
186164
JSX <M:[49:4->49:5] prop[49:6->49:10]=...[49:11->49:25] k[49:26->49:27]=...[49:26->49:27]> _children:None
187-
posCursor:[49:27] posNoWhite:[49:26] Found expr:[49:26->49:27]
188-
Pexp_ident k:[49:26->49:27]
189165
Completable: Cjsx([M], k, [prop, k])
190166
[{
191167
"label": "key",
@@ -198,8 +174,6 @@ Completable: Cjsx([M], k, [prop, k])
198174
Complete tests/src/Jsx.res 52:38
199175
posCursor:[52:38] posNoWhite:[52:37] Found expr:[52:4->52:38]
200176
JSX <M:[52:4->52:5] prop[52:6->52:10]=...[52:11->52:36] k[52:37->52:38]=...[52:37->52:38]> _children:None
201-
posCursor:[52:38] posNoWhite:[52:37] Found expr:[52:37->52:38]
202-
Pexp_ident k:[52:37->52:38]
203177
Completable: Cjsx([M], k, [prop, k])
204178
[{
205179
"label": "key",
@@ -212,8 +186,6 @@ Completable: Cjsx([M], k, [prop, k])
212186
Complete tests/src/Jsx.res 55:25
213187
posCursor:[55:25] posNoWhite:[55:24] Found expr:[55:4->55:25]
214188
JSX <M:[55:4->55:5] prop[55:6->55:10]=...[55:11->55:23] k[55:24->55:25]=...[55:24->55:25]> _children:None
215-
posCursor:[55:25] posNoWhite:[55:24] Found expr:[55:24->55:25]
216-
Pexp_ident k:[55:24->55:25]
217189
Completable: Cjsx([M], k, [prop, k])
218190
[{
219191
"label": "key",
@@ -229,8 +201,6 @@ Definition tests/src/Jsx.res 58:11
229201
Complete tests/src/Jsx.res 68:10
230202
posCursor:[68:10] posNoWhite:[68:9] Found expr:[68:4->68:10]
231203
JSX <Ext:[68:4->68:7] al[68:8->68:10]=...[68:8->68:10]> _children:None
232-
posCursor:[68:10] posNoWhite:[68:9] Found expr:[68:8->68:10]
233-
Pexp_ident al:[68:8->68:10]
234204
Completable: Cjsx([Ext], al, [al])
235205
[{
236206
"label": "align",
@@ -243,16 +213,12 @@ Completable: Cjsx([Ext], al, [al])
243213
Complete tests/src/Jsx.res 71:11
244214
posCursor:[71:11] posNoWhite:[71:10] Found expr:[71:4->71:11]
245215
JSX <M:[71:4->71:5] first[71:6->71:11]=...[71:6->71:11]> _children:None
246-
posCursor:[71:11] posNoWhite:[71:10] Found expr:[71:6->71:11]
247-
Pexp_ident first:[71:6->71:11]
248216
Completable: Cjsx([M], first, [first])
249217
[]
250218

251219
Complete tests/src/Jsx.res 74:16
252220
posCursor:[74:16] posNoWhite:[74:15] Found expr:[74:4->74:16]
253221
JSX <M:[74:4->74:5] first[74:6->74:11]=...[74:12->74:14] k[74:15->74:16]=...[74:15->74:16]> _children:None
254-
posCursor:[74:16] posNoWhite:[74:15] Found expr:[74:15->74:16]
255-
Pexp_ident k:[74:15->74:16]
256222
Completable: Cjsx([M], k, [first, k])
257223
[{
258224
"label": "key",
@@ -265,8 +231,6 @@ Completable: Cjsx([M], k, [first, k])
265231
Complete tests/src/Jsx.res 77:23
266232
posCursor:[77:23] posNoWhite:[77:22] Found expr:[77:4->77:23]
267233
JSX <M:[77:4->77:5] first[77:6->77:11]=...[77:19->77:21] k[77:22->77:23]=...[77:22->77:23]> _children:None
268-
posCursor:[77:23] posNoWhite:[77:22] Found expr:[77:22->77:23]
269-
Pexp_ident k:[77:22->77:23]
270234
Completable: Cjsx([M], k, [first, k])
271235
[{
272236
"label": "key",
@@ -290,8 +254,6 @@ Pexp_construct []:__ghost__[80:5->83:20] None
290254
Complete tests/src/Jsx.res 89:16
291255
posCursor:[89:16] posNoWhite:[89:15] Found expr:[89:4->89:16]
292256
JSX <WithChildren:[89:4->89:16] > _children:None
293-
posCursor:[89:16] posNoWhite:[89:15] Found expr:[89:4->89:16]
294-
Pexp_ident WithChildren.createElement:[89:4->89:16]
295257
Completable: Cpath Module[WithChildren]
296258
[{
297259
"label": "WithChildren",
@@ -304,8 +266,6 @@ Completable: Cpath Module[WithChildren]
304266
Complete tests/src/Jsx.res 91:18
305267
posCursor:[91:18] posNoWhite:[91:17] Found expr:[91:4->91:18]
306268
JSX <WithChildren:[91:4->91:16] n[91:17->91:18]=...[91:17->91:18]> _children:None
307-
posCursor:[91:18] posNoWhite:[91:17] Found expr:[91:17->91:18]
308-
Pexp_ident n:[91:17->91:18]
309269
Completable: Cjsx([WithChildren], n, [n])
310270
[{
311271
"label": "name",
@@ -350,8 +310,6 @@ Completable: Cpath Value[x].th
350310
Complete tests/src/Jsx.res 106:28
351311
posCursor:[106:28] posNoWhite:[106:27] Found expr:[106:11->111:3]
352312
Pexp_ident DefineSomeFields.:[106:11->111:3]
353-
posCursor:[106:28] posNoWhite:[106:27] Found expr:[0:-1->111:70]
354-
Pexp_apply ...[111:6->111:7] (...[111:8->111:70])
355313
Completable: Cpath Value[DefineSomeFields, ""]
356314
[{
357315
"label": "thisValue",
@@ -417,8 +375,6 @@ JSX <div:[135:3->135:6] x[136:5->136:6]=...[138:4->138:8]> _children:None
417375
Complete tests/src/Jsx.res 150:21
418376
posCursor:[150:21] posNoWhite:[150:20] Found expr:[150:12->150:32]
419377
JSX <Nested.Co:[150:12->150:21] name[150:22->150:26]=...[150:27->150:29]> _children:150:30
420-
posCursor:[150:21] posNoWhite:[150:20] Found expr:[150:12->150:21]
421-
Pexp_ident Nested.Co.createElement:[150:12->150:21]
422378
Completable: Cpath Module[Nested, Co]
423379
[{
424380
"label": "Comp",
@@ -431,8 +387,6 @@ Completable: Cpath Module[Nested, Co]
431387
Complete tests/src/Jsx.res 153:19
432388
posCursor:[153:19] posNoWhite:[153:18] Found expr:[153:12->153:25]
433389
JSX <Nested.name:[153:12->153:24] > _children:None
434-
posCursor:[153:19] posNoWhite:[153:18] Found expr:[153:12->153:24]
435-
Pexp_ident Nested.name.createElement:[153:12->153:24]
436390
Completable: Cpath Module[Nested, ""]
437391
[{
438392
"label": "Comp",

analysis/tests/src/expected/RecordCompletion.res.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
Complete tests/src/RecordCompletion.res 8:9
22
posCursor:[8:9] posNoWhite:[8:8] Found expr:[8:3->8:9]
3-
posCursor:[8:9] posNoWhite:[8:8] Found expr:[8:8->8:9]
4-
Pexp_ident m:[8:8->8:9]
53
Completable: Cpath Value[t].n->m
64
[{
75
"label": "Js.Array2.mapi",
@@ -19,8 +17,6 @@ Completable: Cpath Value[t].n->m
1917

2018
Complete tests/src/RecordCompletion.res 11:13
2119
posCursor:[11:13] posNoWhite:[11:12] Found expr:[11:3->11:13]
22-
posCursor:[11:13] posNoWhite:[11:12] Found expr:[11:12->11:13]
23-
Pexp_ident m:[11:12->11:13]
2420
Completable: Cpath Value[t2].n2.n->m
2521
[{
2622
"label": "Js.Array2.mapi",

0 commit comments

Comments
 (0)