Skip to content

Commit 947bc2e

Browse files
committed
Update the end of arrow expression to be anything but space or =>
Fixes #461
1 parent 8c967fe commit 947bc2e

File tree

5 files changed

+262
-3
lines changed

5 files changed

+262
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1714,7 +1714,7 @@ repository:
17141714
begin: =>
17151715
beginCaptures:
17161716
'0': { name: storage.type.function.arrow.ts }
1717-
end: (?<=\})|((?!\{)(?=\S))
1717+
end: (?<=\}|\S)(?<!=>)|((?!\{)(?=\S))
17181718
patterns:
17191719
- include: '#decl-block'
17201720
- include: '#expression'

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4691,7 +4691,7 @@
46914691
</dict>
46924692
</dict>
46934693
<key>end</key>
4694-
<string>(?&lt;=\})|((?!\{)(?=\S))</string>
4694+
<string>(?&lt;=\}|\S)(?&lt;!=&gt;)|((?!\{)(?=\S))</string>
46954695
<key>patterns</key>
46964696
<array>
46974697
<dict>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4637,7 +4637,7 @@
46374637
</dict>
46384638
</dict>
46394639
<key>end</key>
4640-
<string>(?&lt;=\})|((?!\{)(?=\S))</string>
4640+
<string>(?&lt;=\}|\S)(?&lt;!=&gt;)|((?!\{)(?=\S))</string>
46414641
<key>patterns</key>
46424642
<array>
46434643
<dict>

tests/baselines/Issue461.baseline.txt

Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
original file
2+
-----------------------------------
3+
// @onlyOwnGrammar - As this has jsx
4+
class Foo {
5+
renderProgress = () =>
6+
<b className={this.props.className}>x</b>
7+
8+
render () {
9+
return (
10+
<div className={this.state.loaded ? '' : styles.containerUnloaded}>
11+
{!this.state.loaded && this.renderProgress()}
12+
</div>
13+
)
14+
}
15+
}
16+
-----------------------------------
17+
18+
Grammar: TypeScriptReact.tmLanguage
19+
-----------------------------------
20+
>// @onlyOwnGrammar - As this has jsx
21+
^^
22+
source.tsx comment.line.double-slash.tsx punctuation.definition.comment.tsx
23+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24+
source.tsx comment.line.double-slash.tsx
25+
>class Foo {
26+
^^^^^
27+
source.tsx meta.class.tsx storage.type.class.tsx
28+
^
29+
source.tsx meta.class.tsx
30+
^^^
31+
source.tsx meta.class.tsx entity.name.type.class.tsx
32+
^
33+
source.tsx meta.class.tsx
34+
^
35+
source.tsx meta.class.tsx punctuation.definition.block.tsx
36+
^^
37+
source.tsx meta.class.tsx
38+
> renderProgress = () =>
39+
^^
40+
source.tsx meta.class.tsx
41+
^^^^^^^^^^^^^^
42+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.definition.property.tsx entity.name.function.tsx
43+
^
44+
source.tsx meta.class.tsx meta.field.declaration.tsx
45+
^
46+
source.tsx meta.class.tsx meta.field.declaration.tsx keyword.operator.assignment.tsx
47+
^
48+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx
49+
^
50+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.parameters.tsx punctuation.definition.parameters.begin.tsx
51+
^
52+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.parameters.tsx punctuation.definition.parameters.end.tsx
53+
^
54+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx
55+
^^
56+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx storage.type.function.arrow.tsx
57+
^^
58+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx
59+
> <b className={this.props.className}>x</b>
60+
^^^^
61+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx
62+
^
63+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
64+
^
65+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx entity.name.tag.tsx
66+
^
67+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx
68+
^^^^^^^^^
69+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx entity.other.attribute-name.tsx
70+
^
71+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx keyword.operator.assignment.tsx
72+
^
73+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.begin.tsx
74+
^^^^
75+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.embedded.expression.tsx variable.language.this.tsx
76+
^
77+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx
78+
^^^^^
79+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.object.property.tsx
80+
^
81+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx
82+
^^^^^^^^^
83+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.embedded.expression.tsx support.variable.property.dom.tsx
84+
^
85+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.end.tsx
86+
^
87+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
88+
^
89+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx meta.jsx.children.tsx
90+
^^
91+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
92+
^
93+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx entity.name.tag.tsx
94+
^
95+
source.tsx meta.class.tsx meta.field.declaration.tsx meta.arrow.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
96+
^
97+
source.tsx meta.class.tsx meta.field.declaration.tsx
98+
>
99+
^^
100+
source.tsx meta.class.tsx
101+
> render () {
102+
^^
103+
source.tsx meta.class.tsx
104+
^^^^^^
105+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.definition.method.tsx entity.name.function.tsx
106+
^
107+
source.tsx meta.class.tsx meta.method.declaration.tsx
108+
^
109+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.parameters.tsx punctuation.definition.parameters.begin.tsx
110+
^
111+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.parameters.tsx punctuation.definition.parameters.end.tsx
112+
^
113+
source.tsx meta.class.tsx meta.method.declaration.tsx
114+
^
115+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx punctuation.definition.block.tsx
116+
^^
117+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
118+
> return (
119+
^^^^
120+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
121+
^^^^^^
122+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx keyword.control.flow.tsx
123+
^
124+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
125+
^
126+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.brace.round.tsx
127+
^^
128+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
129+
> <div className={this.state.loaded ? '' : styles.containerUnloaded}>
130+
^^^^^^
131+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
132+
^
133+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
134+
^^^
135+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx entity.name.tag.tsx
136+
^
137+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx
138+
^^^^^^^^^
139+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx entity.other.attribute-name.tsx
140+
^
141+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx keyword.operator.assignment.tsx
142+
^
143+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.begin.tsx
144+
^^^^
145+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx variable.language.this.tsx
146+
^
147+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx
148+
^^^^^
149+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.object.property.tsx
150+
^
151+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx
152+
^^^^^^
153+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.property.tsx
154+
^
155+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx
156+
^
157+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx keyword.operator.ternary.tsx
158+
^
159+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx
160+
^
161+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx string.quoted.single.tsx punctuation.definition.string.begin.tsx
162+
^
163+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx string.quoted.single.tsx punctuation.definition.string.end.tsx
164+
^
165+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx
166+
^
167+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx keyword.operator.ternary.tsx
168+
^
169+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx
170+
^^^^^^
171+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.object.tsx
172+
^
173+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.accessor.tsx
174+
^^^^^^^^^^^^^^^^^
175+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx variable.other.property.tsx
176+
^
177+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.embedded.expression.tsx punctuation.section.embedded.end.tsx
178+
^
179+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
180+
^^
181+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx
182+
> {!this.state.loaded && this.renderProgress()}
183+
^^^^^^^^
184+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx
185+
^
186+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx punctuation.section.embedded.begin.tsx
187+
^
188+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx keyword.operator.logical.tsx
189+
^^^^
190+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx variable.language.this.tsx
191+
^
192+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx punctuation.accessor.tsx
193+
^^^^^
194+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx variable.other.object.property.tsx
195+
^
196+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx punctuation.accessor.tsx
197+
^^^^^^
198+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx variable.other.property.tsx
199+
^
200+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx
201+
^^
202+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx keyword.operator.logical.tsx
203+
^
204+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx
205+
^^^^
206+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx meta.function-call.tsx variable.language.this.tsx
207+
^
208+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx meta.function-call.tsx punctuation.accessor.tsx
209+
^^^^^^^^^^^^^^
210+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx meta.function-call.tsx entity.name.function.tsx
211+
^
212+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx meta.brace.round.tsx
213+
^
214+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx meta.brace.round.tsx
215+
^
216+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx meta.embedded.expression.tsx punctuation.section.embedded.end.tsx
217+
^^
218+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx
219+
> </div>
220+
^^^^^^
221+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx meta.jsx.children.tsx
222+
^^
223+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
224+
^^^
225+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx entity.name.tag.tsx
226+
^
227+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
228+
^^
229+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
230+
> )
231+
^^^^
232+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
233+
^
234+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx meta.brace.round.tsx
235+
^^
236+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
237+
> }
238+
^^
239+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx
240+
^
241+
source.tsx meta.class.tsx meta.method.declaration.tsx meta.block.tsx punctuation.definition.block.tsx
242+
^^
243+
source.tsx meta.class.tsx
244+
>}
245+
^
246+
source.tsx meta.class.tsx punctuation.definition.block.tsx

tests/cases/Issue461.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// @onlyOwnGrammar - As this has jsx
2+
class Foo {
3+
renderProgress = () =>
4+
<b className={this.props.className}>x</b>
5+
6+
render () {
7+
return (
8+
<div className={this.state.loaded ? '' : styles.containerUnloaded}>
9+
{!this.state.loaded && this.renderProgress()}
10+
</div>
11+
)
12+
}
13+
}

0 commit comments

Comments
 (0)