Skip to content

Commit dbcfb87

Browse files
committed
Computed property names
1 parent d0d1952 commit dbcfb87

10 files changed

+640
-6
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -469,15 +469,20 @@ repository:
469469

470470
method-declaration:
471471
name: meta.method.declaration.ts
472-
begin: '\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
472+
begin: (?:\b(abstract)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\bnew)|(?:\b(constructor)\b)|(?:((?:\b[a-zA-Z_$][\.\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\")|(?:\[[^\]]*\]))\s*(\??)))?\s*(?=\(|\<)
473473
beginCaptures:
474474
'1': { name: storage.modifier.ts } # captures keyword (abstract)
475475
'2': { name: storage.modifier.ts } # captures keyword (public or private or protected)
476476
'3': { name: storage.modifier.async.ts } # captures keyword (async)
477477
'4': { name: storage.type.property.ts } # captures keyword (get|set)
478478
'5': { name: keyword.operator.new.ts } # captures keyword (new)
479479
'6': { name: storage.type.ts } # captures keyword (constructor)
480-
'7': { name: entity.name.function.ts } # captures method name ([a-zA-Z_$][\.\w$]*)
480+
'7':
481+
# captures method name ((?:[a-zA-Z_$][\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\")|(?:\[[^\]]*\]))
482+
name: entity.name.function.ts
483+
patterns:
484+
- include: '#string'
485+
- include: '#array-literal'
481486
'8': { name: keyword.operator.optional.ts } # captures (\??)
482487
end: '(?=\}|;|,)|(?<=\})'
483488
patterns:
@@ -490,15 +495,20 @@ repository:
490495

491496
method-overload-declaration:
492497
name: meta.method.overload.declaration.ts
493-
match: '\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
498+
match: (?:\b(abstract)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\bnew)|(?:\b(constructor)\b)|(?:((?:\b[a-zA-Z_$][\.\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\")|(?:\[[^\]]*\]))\s*(\??)))?\s*(?=\(|\<)
494499
captures:
495500
'1': { name: storage.modifier.ts } # captures keyword (abstract)
496501
'2': { name: storage.modifier.ts } # captures keyword (public or private or protected)
497502
'3': { name: storage.modifier.ts } # captures keyword (async)
498503
'4': { name: storage.type.property.ts } # captures keyword (get|set)
499504
'5': { name: keyword.operator.ts } # captures keyword (new)
500505
'6': { name: entity.name.function.constructor.ts } # captures keyword (constructor)
501-
'7': { name: entity.name.function.ts } # captures method name ([a-zA-Z_$][\.\w$]*)
506+
'7':
507+
# captures method name ((?:[a-zA-Z_$][\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\")|(?:\[[^\]]*\]))
508+
name: entity.name.function.ts
509+
patterns:
510+
- include: '#string'
511+
- include: '#array-literal'
502512
'8': { name: keyword.operator.optional.ts } # captures (\??)
503513

504514
indexer-declaration:

TypeScript.tmLanguage

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,7 +1842,7 @@
18421842
<key>method-declaration</key>
18431843
<dict>
18441844
<key>begin</key>
1845-
<string>\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
1845+
<string>(?:\b(abstract)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\bnew)|(?:\b(constructor)\b)|(?:((?:\b[a-zA-Z_$][\.\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\")|(?:\[[^\]]*\]))\s*(\??)))?\s*(?=\(|\&lt;)</string>
18461846
<key>beginCaptures</key>
18471847
<dict>
18481848
<key>1</key>
@@ -1879,6 +1879,17 @@
18791879
<dict>
18801880
<key>name</key>
18811881
<string>entity.name.function.ts</string>
1882+
<key>patterns</key>
1883+
<array>
1884+
<dict>
1885+
<key>include</key>
1886+
<string>#string</string>
1887+
</dict>
1888+
<dict>
1889+
<key>include</key>
1890+
<string>#array-literal</string>
1891+
</dict>
1892+
</array>
18821893
</dict>
18831894
<key>8</key>
18841895
<dict>
@@ -1956,6 +1967,17 @@
19561967
<dict>
19571968
<key>name</key>
19581969
<string>entity.name.function.ts</string>
1970+
<key>patterns</key>
1971+
<array>
1972+
<dict>
1973+
<key>include</key>
1974+
<string>#string</string>
1975+
</dict>
1976+
<dict>
1977+
<key>include</key>
1978+
<string>#array-literal</string>
1979+
</dict>
1980+
</array>
19591981
</dict>
19601982
<key>8</key>
19611983
<dict>
@@ -1964,7 +1986,7 @@
19641986
</dict>
19651987
</dict>
19661988
<key>match</key>
1967-
<string>\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
1989+
<string>(?:\b(abstract)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\bnew)|(?:\b(constructor)\b)|(?:((?:\b[a-zA-Z_$][\.\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\")|(?:\[[^\]]*\]))\s*(\??)))?\s*(?=\(|\&lt;)</string>
19681990
<key>name</key>
19691991
<string>meta.method.overload.declaration.ts</string>
19701992
</dict>

tests/baselines/Issue10.baseline.txt

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
original file
2+
-----------------------------------
3+
enum Hello {
4+
A,
5+
B
6+
}
7+
8+
class World {
9+
normal() {
10+
let x = 5;
11+
console.log("hello");
12+
}
13+
14+
[Hello.A]() {
15+
let x = 5;
16+
console.log("hello");
17+
}
18+
}
19+
-----------------------------------
20+
21+
>enum Hello {
22+
^^^^
23+
source.ts meta.enum.declaration.ts storage.type.enum.ts
24+
^
25+
source.ts meta.enum.declaration.ts
26+
^^^^^
27+
source.ts meta.enum.declaration.ts entity.name.type.enum.ts
28+
^
29+
source.ts
30+
^
31+
source.ts meta.block.ts punctuation.definition.block.ts
32+
^^
33+
source.ts meta.block.ts
34+
> A,
35+
^^^^^^^^
36+
source.ts meta.block.ts
37+
> B
38+
^^^^^^^
39+
source.ts meta.block.ts
40+
>}
41+
^
42+
source.ts meta.block.ts punctuation.definition.block.ts
43+
^^
44+
source.ts
45+
>
46+
^^
47+
source.ts
48+
>class World {
49+
^^^^^
50+
source.ts meta.declaration.object.ts storage.type.class.ts
51+
^
52+
source.ts meta.declaration.object.ts
53+
^^^^^
54+
source.ts meta.declaration.object.ts meta.object.name.ts entity.name.class.ts
55+
^
56+
source.ts meta.declaration.object.ts
57+
^
58+
source.ts meta.declaration.object.ts meta.object.body.ts punctuation.definition.block.ts
59+
^^
60+
source.ts meta.declaration.object.ts meta.object.body.ts
61+
> normal() {
62+
^^^^
63+
source.ts meta.declaration.object.ts meta.object.body.ts
64+
^^^^^^
65+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts entity.name.function.ts
66+
^
67+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.function.type.parameter.ts punctuation.definition.parameters.begin.ts
68+
^
69+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.function.type.parameter.ts punctuation.definition.parameters.end.ts
70+
^
71+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts
72+
^
73+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
74+
^^
75+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
76+
> let x = 5;
77+
^^^^^^^^
78+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
79+
^^^
80+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts storage.type.ts
81+
^
82+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts
83+
^
84+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts
85+
^
86+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
87+
^
88+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts
89+
^
90+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
91+
^
92+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.numeric.decimal.ts
93+
^^^
94+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
95+
> console.log("hello");
96+
^^^^^^^^^^^^^^^^^^^
97+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
98+
^
99+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
100+
^
101+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.begin.ts
102+
^^^^^
103+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts string.quoted.double.ts
104+
^
105+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.end.ts
106+
^
107+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
108+
^^^
109+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
110+
> }
111+
^^^^
112+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
113+
^
114+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
115+
^^
116+
source.ts meta.declaration.object.ts meta.object.body.ts
117+
>
118+
^^
119+
source.ts meta.declaration.object.ts meta.object.body.ts
120+
> [Hello.A]() {
121+
^^^^
122+
source.ts meta.declaration.object.ts meta.object.body.ts
123+
^
124+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts entity.name.function.ts meta.array.literal.ts meta.brace.square.ts
125+
^^^^^^^
126+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts entity.name.function.ts meta.array.literal.ts
127+
^
128+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts entity.name.function.ts meta.array.literal.ts meta.brace.square.ts
129+
^
130+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.function.type.parameter.ts punctuation.definition.parameters.begin.ts
131+
^
132+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.function.type.parameter.ts punctuation.definition.parameters.end.ts
133+
^
134+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts
135+
^
136+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
137+
^^
138+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
139+
> let x = 5;
140+
^^^^^^^^
141+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
142+
^^^
143+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts storage.type.ts
144+
^
145+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts
146+
^
147+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts
148+
^
149+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
150+
^
151+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts
152+
^
153+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
154+
^
155+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.numeric.decimal.ts
156+
^^^
157+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
158+
> console.log("hello");
159+
^^^^^^^^^^^^^^^^^^^
160+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
161+
^
162+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
163+
^
164+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.begin.ts
165+
^^^^^
166+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts string.quoted.double.ts
167+
^
168+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.end.ts
169+
^
170+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts meta.brace.round.ts
171+
^^^
172+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
173+
> }
174+
^^^^
175+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts
176+
^
177+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
178+
^^
179+
source.ts meta.declaration.object.ts meta.object.body.ts
180+
>}
181+
^
182+
source.ts meta.declaration.object.ts meta.object.body.ts punctuation.definition.block.ts

0 commit comments

Comments
 (0)