Skip to content

Commit 9f6676a

Browse files
committed
Let the new expression end if its a function expression start
1 parent 999acab commit 9f6676a

File tree

5 files changed

+180
-3
lines changed

5 files changed

+180
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1512,7 +1512,7 @@ repository:
15121512
begin: (?<!\.|\$)\b(new)\b(?!\$|\.)
15131513
beginCaptures:
15141514
'1': { name: keyword.operator.new.ts }
1515-
end: (?<=\))|(?=[;),}]|$|((?<!\.|\$)\bnew\b(?!\$|\.)))
1515+
end: (?<=\))|(?=[;),}]|$|((?<!\.|\$)\bnew\b(?!\$|\.))|((?<!\.|\$)\bfunction((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))
15161516
patterns:
15171517
- include: '#paren-expression'
15181518
- include: '#class-or-interface-declaration'

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4133,7 +4133,7 @@
41334133
</dict>
41344134
</dict>
41354135
<key>end</key>
4136-
<string>(?&lt;=\))|(?=[;),}]|$|((?&lt;!\.|\$)\bnew\b(?!\$|\.)))</string>
4136+
<string>(?&lt;=\))|(?=[;),}]|$|((?&lt;!\.|\$)\bnew\b(?!\$|\.))|((?&lt;!\.|\$)\bfunction((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
41374137
<key>patterns</key>
41384138
<array>
41394139
<dict>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4079,7 +4079,7 @@
40794079
</dict>
40804080
</dict>
40814081
<key>end</key>
4082-
<string>(?&lt;=\))|(?=[;),}]|$|((?&lt;!\.|\$)\bnew\b(?!\$|\.)))</string>
4082+
<string>(?&lt;=\))|(?=[;),}]|$|((?&lt;!\.|\$)\bnew\b(?!\$|\.))|((?&lt;!\.|\$)\bfunction((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
40834083
<key>patterns</key>
40844084
<array>
40854085
<dict>
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
original file
2+
-----------------------------------
3+
let storeSomeObj = new function () {
4+
this.hasNoColorization = function () {
5+
let butThisDoes = "yay";
6+
}
7+
8+
let noColorHereEither = "I'm not colorized";
9+
}
10+
11+
let butOutSide = "all color is back to normal!";
12+
-----------------------------------
13+
14+
Grammar: TypeScript.tmLanguage
15+
-----------------------------------
16+
>let storeSomeObj = new function () {
17+
^^^
18+
source.ts meta.var.expr.ts storage.type.ts
19+
^
20+
source.ts meta.var.expr.ts
21+
^^^^^^^^^^^^
22+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
23+
^
24+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
25+
^
26+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
27+
^
28+
source.ts meta.var.expr.ts
29+
^^^
30+
source.ts meta.var.expr.ts new.expr.ts keyword.operator.new.ts
31+
^
32+
source.ts meta.var.expr.ts new.expr.ts
33+
^^^^^^^^
34+
source.ts meta.var.expr.ts meta.function.expression.ts storage.type.function.ts
35+
^
36+
source.ts meta.var.expr.ts meta.function.expression.ts
37+
^
38+
source.ts meta.var.expr.ts meta.function.expression.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
39+
^
40+
source.ts meta.var.expr.ts meta.function.expression.ts meta.parameters.ts punctuation.definition.parameters.end.ts
41+
^
42+
source.ts meta.var.expr.ts meta.function.expression.ts
43+
^
44+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts punctuation.definition.block.ts
45+
^^
46+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
47+
> this.hasNoColorization = function () {
48+
^
49+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
50+
^^^^
51+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts variable.language.this.ts
52+
^
53+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts punctuation.accessor.ts
54+
^^^^^^^^^^^^^^^^^
55+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts entity.name.function.ts
56+
^
57+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
58+
^
59+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts keyword.operator.assignment.ts
60+
^
61+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
62+
^^^^^^^^
63+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts storage.type.function.ts
64+
^
65+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts
66+
^
67+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
68+
^
69+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
70+
^
71+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts
72+
^
73+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
74+
^^
75+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts
76+
> let butThisDoes = "yay";
77+
^
78+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts
79+
^^^
80+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts storage.type.ts
81+
^
82+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts
83+
^^^^^^^^^^^
84+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
85+
^
86+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
87+
^
88+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts keyword.operator.assignment.ts
89+
^
90+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts
91+
^
92+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.begin.ts
93+
^^^
94+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts
95+
^
96+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.end.ts
97+
^
98+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts punctuation.terminator.statement.ts
99+
^^
100+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts
101+
> }
102+
^
103+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts
104+
^
105+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
106+
^^
107+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
108+
>
109+
^^
110+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
111+
> let noColorHereEither = "I'm not colorized";
112+
^
113+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
114+
^^^
115+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts storage.type.ts
116+
^
117+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts
118+
^^^^^^^^^^^^^^^^^
119+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
120+
^
121+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
122+
^
123+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts keyword.operator.assignment.ts
124+
^
125+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts
126+
^
127+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.begin.ts
128+
^^^^^^^^^^^^^^^^^
129+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts
130+
^
131+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.end.ts
132+
^
133+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts punctuation.terminator.statement.ts
134+
^^
135+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
136+
> }
137+
^
138+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts
139+
^
140+
source.ts meta.var.expr.ts meta.function.expression.ts meta.block.ts punctuation.definition.block.ts
141+
^
142+
source.ts meta.var.expr.ts
143+
>
144+
^^
145+
source.ts
146+
> let butOutSide = "all color is back to normal!";
147+
^
148+
source.ts
149+
^^^
150+
source.ts meta.var.expr.ts storage.type.ts
151+
^
152+
source.ts meta.var.expr.ts
153+
^^^^^^^^^^
154+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
155+
^
156+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
157+
^
158+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
159+
^
160+
source.ts meta.var.expr.ts
161+
^
162+
source.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.begin.ts
163+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
164+
source.ts meta.var.expr.ts string.quoted.double.ts
165+
^
166+
source.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.end.ts
167+
^
168+
source.ts punctuation.terminator.statement.ts

tests/cases/specialNew.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
let storeSomeObj = new function () {
2+
this.hasNoColorization = function () {
3+
let butThisDoes = "yay";
4+
}
5+
6+
let noColorHereEither = "I'm not colorized";
7+
}
8+
9+
let butOutSide = "all color is back to normal!";

0 commit comments

Comments
 (0)