Skip to content

Commit 5128433

Browse files
committed
Fix the precedence of literal matching so as to not mix up arrow and function call detection
Fixes #393
1 parent 12aee9e commit 5128433

File tree

5 files changed

+138
-18
lines changed

5 files changed

+138
-18
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ repository:
1919
- include: '#string'
2020
- include: '#template'
2121
- include: '#comment'
22-
- include: '#literal'
2322
- include: '#declaration'
2423
- include: '#switch-statement'
2524
- include: '#for-loop'
@@ -188,7 +187,6 @@ repository:
188187
- include: '#regex'
189188
- include: '#template'
190189
- include: '#comment'
191-
- include: '#literal'
192190
- include: '#function-expression'
193191
- include: '#class-or-interface-declaration'
194192
- include: '#arrow-function'
@@ -198,6 +196,7 @@ repository:
198196
- include: '#object-literal'
199197
- include: '#expression-operators'
200198
- include: '#function-call'
199+
- include: '#literal'
201200
- include: '#support-objects'
202201
- include: '#identifiers'
203202
- include: '#paren-expression'
@@ -1371,6 +1370,7 @@ repository:
13711370
begin: (?=(\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(<([^<>]|\<[^<>]+\>)+>\s*)?\()
13721371
end: (?<=\))(?!(\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(<([^<>]|\<[^<>]+\>)+>\s*)?\()
13731372
patterns:
1373+
- include: '#literal'
13741374
- include: '#support-objects'
13751375
- include: '#punctuation-accessor'
13761376
- name: entity.name.function.ts

TypeScript.tmLanguage

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,6 @@
5555
<key>include</key>
5656
<string>#comment</string>
5757
</dict>
58-
<dict>
59-
<key>include</key>
60-
<string>#literal</string>
61-
</dict>
6258
<dict>
6359
<key>include</key>
6460
<string>#declaration</string>
@@ -538,10 +534,6 @@
538534
<key>include</key>
539535
<string>#comment</string>
540536
</dict>
541-
<dict>
542-
<key>include</key>
543-
<string>#literal</string>
544-
</dict>
545537
<dict>
546538
<key>include</key>
547539
<string>#function-expression</string>
@@ -578,6 +570,10 @@
578570
<key>include</key>
579571
<string>#function-call</string>
580572
</dict>
573+
<dict>
574+
<key>include</key>
575+
<string>#literal</string>
576+
</dict>
581577
<dict>
582578
<key>include</key>
583579
<string>#support-objects</string>
@@ -3783,6 +3779,10 @@
37833779
<string>(?&lt;=\))(?!(\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+&gt;\s*)?\()</string>
37843780
<key>patterns</key>
37853781
<array>
3782+
<dict>
3783+
<key>include</key>
3784+
<string>#literal</string>
3785+
</dict>
37863786
<dict>
37873787
<key>include</key>
37883788
<string>#support-objects</string>

TypeScriptReact.tmLanguage

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,6 @@
5555
<key>include</key>
5656
<string>#comment</string>
5757
</dict>
58-
<dict>
59-
<key>include</key>
60-
<string>#literal</string>
61-
</dict>
6258
<dict>
6359
<key>include</key>
6460
<string>#declaration</string>
@@ -542,10 +538,6 @@
542538
<key>include</key>
543539
<string>#comment</string>
544540
</dict>
545-
<dict>
546-
<key>include</key>
547-
<string>#literal</string>
548-
</dict>
549541
<dict>
550542
<key>include</key>
551543
<string>#function-expression</string>
@@ -582,6 +574,10 @@
582574
<key>include</key>
583575
<string>#function-call</string>
584576
</dict>
577+
<dict>
578+
<key>include</key>
579+
<string>#literal</string>
580+
</dict>
585581
<dict>
586582
<key>include</key>
587583
<string>#support-objects</string>
@@ -3787,6 +3783,10 @@
37873783
<string>(?&lt;=\))(?!(\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+&gt;\s*)?\()</string>
37883784
<key>patterns</key>
37893785
<array>
3786+
<dict>
3787+
<key>include</key>
3788+
<string>#literal</string>
3789+
</dict>
37903790
<dict>
37913791
<key>include</key>
37923792
<string>#support-objects</string>

tests/baselines/Issue393.baseline.txt

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
original file
2+
-----------------------------------
3+
class ColorsBars extends React.Component {
4+
constructor(...args) {
5+
super(...args)
6+
this.toggleEdit = this.toggleEdit.bind(this)
7+
}
8+
}
9+
-----------------------------------
10+
11+
Grammar: TypeScript.tmLanguage
12+
-----------------------------------
13+
>class ColorsBars extends React.Component {
14+
^^^^^
15+
source.ts meta.class.ts storage.type.class.ts
16+
^
17+
source.ts meta.class.ts
18+
^^^^^^^^^^
19+
source.ts meta.class.ts entity.name.type.class.ts
20+
^
21+
source.ts meta.class.ts
22+
^^^^^^^
23+
source.ts meta.class.ts storage.modifier.ts
24+
^
25+
source.ts meta.class.ts
26+
^^^^^
27+
source.ts meta.class.ts entity.name.type.module.ts
28+
^
29+
source.ts meta.class.ts punctuation.accessor.ts
30+
^^^^^^^^^
31+
source.ts meta.class.ts entity.other.inherited-class.ts
32+
^
33+
source.ts meta.class.ts
34+
^
35+
source.ts meta.class.ts punctuation.definition.block.ts
36+
^^
37+
source.ts meta.class.ts
38+
> constructor(...args) {
39+
^
40+
source.ts meta.class.ts
41+
^^^^^^^^^^^
42+
source.ts meta.class.ts meta.method.declaration.ts storage.type.ts
43+
^
44+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
45+
^^^
46+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts keyword.operator.rest.ts
47+
^^^^
48+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts variable.parameter.ts
49+
^
50+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
51+
^
52+
source.ts meta.class.ts meta.method.declaration.ts
53+
^
54+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
55+
^^
56+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
57+
> super(...args)
58+
^^
59+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
60+
^^^^^
61+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts variable.language.super.ts
62+
^
63+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
64+
^^^
65+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts keyword.operator.spread.ts
66+
^^^^
67+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts variable.other.readwrite.ts
68+
^
69+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
70+
^^
71+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
72+
> this.toggleEdit = this.toggleEdit.bind(this)
73+
^^
74+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
75+
^^^^
76+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts variable.language.this.ts
77+
^
78+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.accessor.ts
79+
^^^^^^^^^^
80+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts variable.other.property.ts
81+
^
82+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
83+
^
84+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts keyword.operator.assignment.ts
85+
^
86+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
87+
^^^^
88+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts variable.language.this.ts
89+
^
90+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.accessor.ts
91+
^^^^^^^^^^
92+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts variable.other.object.property.ts
93+
^
94+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.accessor.ts
95+
^^^^
96+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts entity.name.function.ts
97+
^
98+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
99+
^^^^
100+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts variable.language.this.ts
101+
^
102+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
103+
^^
104+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
105+
> }
106+
^
107+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
108+
^
109+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
110+
^^
111+
source.ts meta.class.ts
112+
>}
113+
^
114+
source.ts meta.class.ts punctuation.definition.block.ts

tests/cases/Issue393.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class ColorsBars extends React.Component {
2+
constructor(...args) {
3+
super(...args)
4+
this.toggleEdit = this.toggleEdit.bind(this)
5+
}
6+
}

0 commit comments

Comments
 (0)