Skip to content

Commit 98ab3ba

Browse files
committed
Handle the end of the new expression as look ahead of } as it can be possible in case of template expressions
Fixes #381
1 parent 9e5c4c2 commit 98ab3ba

File tree

5 files changed

+154
-3
lines changed

5 files changed

+154
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1460,7 +1460,7 @@ repository:
14601460
begin: (?<!\.|\$)\b(new)\b(?!\$)
14611461
beginCaptures:
14621462
'1': { name: keyword.operator.new.ts }
1463-
end: (?<=\))|(?=[;),]|$|((?<!\.|\$)\bnew\b(?!\$)))
1463+
end: (?<=\))|(?=[;),}]|$|((?<!\.|\$)\bnew\b(?!\$)))
14641464
patterns:
14651465
- include: '#paren-expression'
14661466
- include: '#class-or-interface-declaration'

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4033,7 +4033,7 @@
40334033
</dict>
40344034
</dict>
40354035
<key>end</key>
4036-
<string>(?&lt;=\))|(?=[;),]|$|((?&lt;!\.|\$)\bnew\b(?!\$)))</string>
4036+
<string>(?&lt;=\))|(?=[;),}]|$|((?&lt;!\.|\$)\bnew\b(?!\$)))</string>
40374037
<key>patterns</key>
40384038
<array>
40394039
<dict>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4015,7 +4015,7 @@
40154015
</dict>
40164016
</dict>
40174017
<key>end</key>
4018-
<string>(?&lt;=\))|(?=[;),]|$|((?&lt;!\.|\$)\bnew\b(?!\$)))</string>
4018+
<string>(?&lt;=\))|(?=[;),}]|$|((?&lt;!\.|\$)\bnew\b(?!\$)))</string>
40194019
<key>patterns</key>
40204020
<array>
40214021
<dict>

tests/baselines/Issue381.baseline.txt

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
original file
2+
-----------------------------------
3+
class Foo{
4+
constructor(){
5+
6+
}
7+
test(){
8+
return `/game.php?village=${source}&screen=main&ajaxaction=upgrade_building&type=main&h=${csrf_token}&&client_time=${+new Date}`
9+
}
10+
noColorSyntax(){
11+
12+
}
13+
}
14+
-----------------------------------
15+
16+
Grammar: TypeScript.tmLanguage
17+
-----------------------------------
18+
>class Foo{
19+
^^^^^
20+
source.ts meta.class.ts storage.type.class.ts
21+
^
22+
source.ts meta.class.ts
23+
^^^
24+
source.ts meta.class.ts entity.name.type.class.ts
25+
^
26+
source.ts meta.class.ts punctuation.definition.block.ts
27+
^^
28+
source.ts meta.class.ts
29+
> constructor(){
30+
^^
31+
source.ts meta.class.ts
32+
^^^^^^^^^^^
33+
source.ts meta.class.ts meta.method.declaration.ts storage.type.ts
34+
^
35+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
36+
^
37+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
38+
^
39+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
40+
^^
41+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
42+
>
43+
^^
44+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
45+
> }
46+
^^
47+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
48+
^
49+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
50+
^^
51+
source.ts meta.class.ts
52+
> test(){
53+
^^
54+
source.ts meta.class.ts
55+
^^^^
56+
source.ts meta.class.ts meta.method.declaration.ts meta.definition.method.ts entity.name.function.ts
57+
^
58+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
59+
^
60+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
61+
^
62+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
63+
^^
64+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
65+
> return `/game.php?village=${source}&screen=main&ajaxaction=upgrade_building&type=main&h=${csrf_token}&&client_time=${+new Date}`
66+
^^^^
67+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
68+
^^^^^^
69+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts keyword.control.flow.ts
70+
^
71+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
72+
^
73+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts punctuation.definition.string.template.begin.ts
74+
^^^^^^^^^^^^^^^^^^
75+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts
76+
^^
77+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
78+
^^^^^^
79+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts variable.other.readwrite.ts
80+
^
81+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
82+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
83+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts
84+
^^
85+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
86+
^^^^^^^^^^
87+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts variable.other.readwrite.ts
88+
^
89+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
90+
^^^^^^^^^^^^^^
91+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts
92+
^^
93+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
94+
^
95+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts keyword.operator.arithmetic.ts
96+
^^^
97+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts new.expr.ts keyword.operator.new.ts
98+
^
99+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts new.expr.ts
100+
^^^^
101+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts new.expr.ts entity.name.type.ts
102+
^
103+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
104+
^
105+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts string.template.ts punctuation.definition.string.template.end.ts
106+
^^
107+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
108+
> }
109+
^^
110+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
111+
^
112+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
113+
^^
114+
source.ts meta.class.ts
115+
> noColorSyntax(){
116+
^^
117+
source.ts meta.class.ts
118+
^^^^^^^^^^^^^
119+
source.ts meta.class.ts meta.method.declaration.ts meta.definition.method.ts entity.name.function.ts
120+
^
121+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
122+
^
123+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
124+
^
125+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
126+
^^
127+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
128+
>
129+
^^^^^^
130+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
131+
> }
132+
^^
133+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
134+
^
135+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
136+
^^
137+
source.ts meta.class.ts
138+
>}
139+
^
140+
source.ts meta.class.ts punctuation.definition.block.ts

tests/cases/Issue381.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Foo{
2+
constructor(){
3+
4+
}
5+
test(){
6+
return `/game.php?village=${source}&screen=main&ajaxaction=upgrade_building&type=main&h=${csrf_token}&&client_time=${+new Date}`
7+
}
8+
noColorSyntax(){
9+
10+
}
11+
}

0 commit comments

Comments
 (0)