Skip to content

Commit 5fdfb11

Browse files
committed
Treat spaces followed by < as ending of as operator
Fixes #647
1 parent ebb42d0 commit 5fdfb11

File tree

5 files changed

+124
-3
lines changed

5 files changed

+124
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1493,7 +1493,7 @@ repository:
14931493
- begin: '{{startOfIdentifier}}(as)\s+'
14941494
beginCaptures:
14951495
'1': { name: keyword.control.as.ts }
1496-
end: (?=$|^|[;,:})\]]|({{startOfIdentifier}}(as)\s+))
1496+
end: (?=$|^|[;,:})\]]|({{startOfIdentifier}}(as)\s+)|(\s+\<))
14971497
patterns:
14981498
- include: '#type'
14991499
- name: keyword.operator.spread.ts

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4788,7 +4788,7 @@
47884788
</dict>
47894789
</dict>
47904790
<key>end</key>
4791-
<string>(?=$|^|[;,:})\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+))</string>
4791+
<string>(?=$|^|[;,:})\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+)|(\s+\&lt;))</string>
47924792
<key>patterns</key>
47934793
<array>
47944794
<dict>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4734,7 +4734,7 @@
47344734
</dict>
47354735
</dict>
47364736
<key>end</key>
4737-
<string>(?=$|^|[;,:})\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+))</string>
4737+
<string>(?=$|^|[;,:})\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+)|(\s+\&lt;))</string>
47384738
<key>patterns</key>
47394739
<array>
47404740
<dict>

tests/baselines/Issue647.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+
function doesSomething2(value: number) {
4+
if (value as number < 10) {
5+
return "huh"
6+
} else {
7+
return null;
8+
}
9+
}
10+
-----------------------------------
11+
12+
Grammar: TypeScript.tmLanguage
13+
-----------------------------------
14+
>function doesSomething2(value: number) {
15+
^^^^^^^^
16+
source.ts meta.function.ts storage.type.function.ts
17+
^
18+
source.ts meta.function.ts
19+
^^^^^^^^^^^^^^
20+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
21+
^
22+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
23+
^^^^^
24+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
25+
^
26+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
27+
^
28+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts
29+
^^^^^^
30+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts
31+
^
32+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
33+
^
34+
source.ts meta.function.ts
35+
^
36+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
37+
> if (value as number < 10) {
38+
^^
39+
source.ts meta.function.ts meta.block.ts
40+
^^
41+
source.ts meta.function.ts meta.block.ts keyword.control.conditional.ts
42+
^
43+
source.ts meta.function.ts meta.block.ts
44+
^
45+
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
46+
^^^^^
47+
source.ts meta.function.ts meta.block.ts variable.other.readwrite.ts
48+
^
49+
source.ts meta.function.ts meta.block.ts
50+
^^
51+
source.ts meta.function.ts meta.block.ts keyword.control.as.ts
52+
^
53+
source.ts meta.function.ts meta.block.ts
54+
^^^^^^
55+
source.ts meta.function.ts meta.block.ts support.type.primitive.ts
56+
^
57+
source.ts meta.function.ts meta.block.ts
58+
^
59+
source.ts meta.function.ts meta.block.ts keyword.operator.relational.ts
60+
^
61+
source.ts meta.function.ts meta.block.ts
62+
^^
63+
source.ts meta.function.ts meta.block.ts constant.numeric.decimal.ts
64+
^
65+
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
66+
^
67+
source.ts meta.function.ts meta.block.ts
68+
^
69+
source.ts meta.function.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
70+
> return "huh"
71+
^^^^
72+
source.ts meta.function.ts meta.block.ts meta.block.ts
73+
^^^^^^
74+
source.ts meta.function.ts meta.block.ts meta.block.ts keyword.control.flow.ts
75+
^
76+
source.ts meta.function.ts meta.block.ts meta.block.ts
77+
^
78+
source.ts meta.function.ts meta.block.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.begin.ts
79+
^^^
80+
source.ts meta.function.ts meta.block.ts meta.block.ts string.quoted.double.ts
81+
^
82+
source.ts meta.function.ts meta.block.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.end.ts
83+
> } else {
84+
^^
85+
source.ts meta.function.ts meta.block.ts meta.block.ts
86+
^
87+
source.ts meta.function.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
88+
^
89+
source.ts meta.function.ts meta.block.ts
90+
^^^^
91+
source.ts meta.function.ts meta.block.ts keyword.control.conditional.ts
92+
^
93+
source.ts meta.function.ts meta.block.ts
94+
^
95+
source.ts meta.function.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
96+
> return null;
97+
^^^^
98+
source.ts meta.function.ts meta.block.ts meta.block.ts
99+
^^^^^^
100+
source.ts meta.function.ts meta.block.ts meta.block.ts keyword.control.flow.ts
101+
^
102+
source.ts meta.function.ts meta.block.ts meta.block.ts
103+
^^^^
104+
source.ts meta.function.ts meta.block.ts meta.block.ts constant.language.null.ts
105+
^
106+
source.ts meta.function.ts meta.block.ts meta.block.ts punctuation.terminator.statement.ts
107+
> }
108+
^^
109+
source.ts meta.function.ts meta.block.ts meta.block.ts
110+
^
111+
source.ts meta.function.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
112+
>}
113+
^
114+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts

tests/cases/Issue647.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
function doesSomething2(value: number) {
2+
if (value as number < 10) {
3+
return "huh"
4+
} else {
5+
return null;
6+
}
7+
}

0 commit comments

Comments
 (0)