Skip to content

Commit aa5eecd

Browse files
committed
Treat the expression after as operator as Type
Fixed #59
1 parent 2d15a59 commit aa5eecd

File tree

6 files changed

+124
-10
lines changed

6 files changed

+124
-10
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -965,8 +965,12 @@ repository:
965965
- include: '#typeof-operator'
966966
- name: keyword.operator.void.ts
967967
match: (?<!\.|\$)\bvoid\b(?!\$)
968-
- name: keyword.control.as.ts
969-
match: (?<!\.|\$)\bas\b(?!\$)
968+
- begin: (?<!\.|\$)\bas\b(?!\$)
969+
beginCaptures:
970+
'0': { name: keyword.control.as.ts }
971+
end: (?=$|[;,})\]])
972+
patterns:
973+
- include: '#type'
970974

971975
typeof-operator:
972976
name: keyword.operator.typeof.ts

TypeScript.tmLanguage

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,10 +1283,25 @@
12831283
<string>keyword.operator.void.ts</string>
12841284
</dict>
12851285
<dict>
1286-
<key>match</key>
1286+
<key>begin</key>
12871287
<string>(?&lt;!\.|\$)\bas\b(?!\$)</string>
1288-
<key>name</key>
1289-
<string>keyword.control.as.ts</string>
1288+
<key>beginCaptures</key>
1289+
<dict>
1290+
<key>0</key>
1291+
<dict>
1292+
<key>name</key>
1293+
<string>keyword.control.as.ts</string>
1294+
</dict>
1295+
</dict>
1296+
<key>end</key>
1297+
<string>(?=$|[;,})\]])</string>
1298+
<key>patterns</key>
1299+
<array>
1300+
<dict>
1301+
<key>include</key>
1302+
<string>#type</string>
1303+
</dict>
1304+
</array>
12901305
</dict>
12911306
</array>
12921307
</dict>

TypeScriptReact.YAML-tmLanguage

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -954,8 +954,12 @@ repository:
954954
- include: '#typeof-operator'
955955
- name: keyword.operator.void.tsx
956956
match: (?<!\.|\$)\bvoid\b(?!\$)
957-
- name: keyword.control.as.tsx
958-
match: (?<!\.|\$)\bas\b(?!\$)
957+
- begin: (?<!\.|\$)\bas\b(?!\$)
958+
beginCaptures:
959+
'0': { name: keyword.control.as.tsx }
960+
end: (?=$|[;,})\]])
961+
patterns:
962+
- include: '#type'
959963

960964
typeof-operator:
961965
name: keyword.operator.typeof.tsx

TypeScriptReact.tmLanguage

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,10 +1251,25 @@
12511251
<string>keyword.operator.void.tsx</string>
12521252
</dict>
12531253
<dict>
1254-
<key>match</key>
1254+
<key>begin</key>
12551255
<string>(?&lt;!\.|\$)\bas\b(?!\$)</string>
1256-
<key>name</key>
1257-
<string>keyword.control.as.tsx</string>
1256+
<key>beginCaptures</key>
1257+
<dict>
1258+
<key>0</key>
1259+
<dict>
1260+
<key>name</key>
1261+
<string>keyword.control.as.tsx</string>
1262+
</dict>
1263+
</dict>
1264+
<key>end</key>
1265+
<string>(?=$|[;,})\]])</string>
1266+
<key>patterns</key>
1267+
<array>
1268+
<dict>
1269+
<key>include</key>
1270+
<string>#type</string>
1271+
</dict>
1272+
</array>
12581273
</dict>
12591274
</array>
12601275
</dict>

tests/baselines/Issue59.baseline.txt

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
original file
2+
-----------------------------------
3+
class A {
4+
public props = {} as {};
5+
public a: string;
6+
}
7+
-----------------------------------
8+
9+
>class A {
10+
^^^^^
11+
source.ts meta.declaration.object.ts storage.type.class.ts
12+
^
13+
source.ts meta.declaration.object.ts
14+
^
15+
source.ts meta.declaration.object.ts meta.object.name.ts entity.name.class.ts
16+
^
17+
source.ts meta.declaration.object.ts
18+
^
19+
source.ts meta.declaration.object.ts meta.object.body.ts punctuation.definition.block.ts
20+
^^
21+
source.ts meta.declaration.object.ts meta.object.body.ts
22+
> public props = {} as {};
23+
^^^^
24+
source.ts meta.declaration.object.ts meta.object.body.ts
25+
^^^^^^
26+
source.ts meta.declaration.object.ts meta.object.body.ts storage.modifier.ts
27+
^
28+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts
29+
^^^^^
30+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts variable.object.property.ts
31+
^
32+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts
33+
^
34+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts keyword.operator.assignment.ts
35+
^
36+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts
37+
^
38+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts meta.object-literal.ts punctuation.definition.block.ts
39+
^
40+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts meta.object-literal.ts punctuation.definition.block.ts
41+
^
42+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts
43+
^^
44+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts keyword.control.as.ts
45+
^
46+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts
47+
^
48+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts meta.object.type.ts punctuation.definition.block.ts
49+
^
50+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts meta.object.type.ts punctuation.definition.block.ts
51+
^^^
52+
source.ts meta.declaration.object.ts meta.object.body.ts
53+
> public a: string;
54+
^^^^
55+
source.ts meta.declaration.object.ts meta.object.body.ts
56+
^^^^^^
57+
source.ts meta.declaration.object.ts meta.object.body.ts storage.modifier.ts
58+
^
59+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts
60+
^
61+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts variable.object.property.ts
62+
^
63+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts meta.type.annotation.ts
64+
^
65+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts meta.type.annotation.ts
66+
^^^^^^
67+
source.ts meta.declaration.object.ts meta.object.body.ts meta.field.declaration.ts meta.type.annotation.ts support.type.primitive.ts
68+
^^^
69+
source.ts meta.declaration.object.ts meta.object.body.ts
70+
>}
71+
^
72+
source.ts meta.declaration.object.ts meta.object.body.ts punctuation.definition.block.ts

tests/cases/Issue59.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class A {
2+
public props = {} as {};
3+
public a: string;
4+
}

0 commit comments

Comments
 (0)