Skip to content

Commit 7ad6faf

Browse files
committed
Handle multiline computed or string literal name methods
Fixes #571
1 parent e8d2994 commit 7ad6faf

File tree

5 files changed

+201
-6
lines changed

5 files changed

+201
-6
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,14 +1005,19 @@ repository:
10051005
- include: '#object-literal-method-declaration'
10061006
- name: meta.object.member.ts meta.object-literal.key.ts
10071007
begin: (?=\[)
1008-
end: (?=:)
1008+
end: (?=:)|((?<=[\]])(?=\s*[\(\<]))
10091009
patterns:
10101010
- include: '#array-literal'
10111011
- name: meta.object.member.ts meta.object-literal.key.ts
10121012
begin: (?=[\'\"])
1013-
end: (?=:)
1013+
end: (?=:)|((?<=[\'\"])(?=\s*[\(\<]))
10141014
patterns:
10151015
- include: '#string'
1016+
- name: meta.method.declaration.ts
1017+
begin: (?<=[\]\'\"])(?=\s*[\(\<])
1018+
end: (?=\}|;|,)|(?<=\})
1019+
patterns:
1020+
- include: '#function-body'
10161021
- name: meta.object.member.ts
10171022
match: (?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)
10181023
captures:

TypeScript.tmLanguage

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3142,7 +3142,7 @@
31423142
<key>begin</key>
31433143
<string>(?=\[)</string>
31443144
<key>end</key>
3145-
<string>(?=:)</string>
3145+
<string>(?=:)|((?&lt;=[\]])(?=\s*[\(\&lt;]))</string>
31463146
<key>patterns</key>
31473147
<array>
31483148
<dict>
@@ -3157,7 +3157,7 @@
31573157
<key>begin</key>
31583158
<string>(?=[\'\"])</string>
31593159
<key>end</key>
3160-
<string>(?=:)</string>
3160+
<string>(?=:)|((?&lt;=[\'\"])(?=\s*[\(\&lt;]))</string>
31613161
<key>patterns</key>
31623162
<array>
31633163
<dict>
@@ -3166,6 +3166,21 @@
31663166
</dict>
31673167
</array>
31683168
</dict>
3169+
<dict>
3170+
<key>name</key>
3171+
<string>meta.method.declaration.ts</string>
3172+
<key>begin</key>
3173+
<string>(?&lt;=[\]\'\"])(?=\s*[\(\&lt;])</string>
3174+
<key>end</key>
3175+
<string>(?=\}|;|,)|(?&lt;=\})</string>
3176+
<key>patterns</key>
3177+
<array>
3178+
<dict>
3179+
<key>include</key>
3180+
<string>#function-body</string>
3181+
</dict>
3182+
</array>
3183+
</dict>
31693184
<dict>
31703185
<key>name</key>
31713186
<string>meta.object.member.ts</string>

TypeScriptReact.tmLanguage

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3146,7 +3146,7 @@
31463146
<key>begin</key>
31473147
<string>(?=\[)</string>
31483148
<key>end</key>
3149-
<string>(?=:)</string>
3149+
<string>(?=:)|((?&lt;=[\]])(?=\s*[\(\&lt;]))</string>
31503150
<key>patterns</key>
31513151
<array>
31523152
<dict>
@@ -3161,7 +3161,7 @@
31613161
<key>begin</key>
31623162
<string>(?=[\'\"])</string>
31633163
<key>end</key>
3164-
<string>(?=:)</string>
3164+
<string>(?=:)|((?&lt;=[\'\"])(?=\s*[\(\&lt;]))</string>
31653165
<key>patterns</key>
31663166
<array>
31673167
<dict>
@@ -3170,6 +3170,21 @@
31703170
</dict>
31713171
</array>
31723172
</dict>
3173+
<dict>
3174+
<key>name</key>
3175+
<string>meta.method.declaration.tsx</string>
3176+
<key>begin</key>
3177+
<string>(?&lt;=[\]\'\"])(?=\s*[\(\&lt;])</string>
3178+
<key>end</key>
3179+
<string>(?=\}|;|,)|(?&lt;=\})</string>
3180+
<key>patterns</key>
3181+
<array>
3182+
<dict>
3183+
<key>include</key>
3184+
<string>#function-body</string>
3185+
</dict>
3186+
</array>
3187+
</dict>
31733188
<dict>
31743189
<key>name</key>
31753190
<string>meta.object.member.tsx</string>

tests/baselines/Issue571.baseline.txt

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
original file
2+
-----------------------------------
3+
const o = {
4+
["a" +
5+
"b"]() {
6+
return 0; // no highlighting!
7+
},
8+
'a\
9+
'() {
10+
return 0; // no highlighting!
11+
}
12+
};
13+
-----------------------------------
14+
15+
Grammar: TypeScript.tmLanguage
16+
-----------------------------------
17+
>const o = {
18+
^^^^^
19+
source.ts meta.var.expr.ts storage.type.ts
20+
^
21+
source.ts meta.var.expr.ts
22+
^
23+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
24+
^
25+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
26+
^
27+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
28+
^
29+
source.ts meta.var.expr.ts
30+
^
31+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
32+
^^
33+
source.ts meta.var.expr.ts meta.objectliteral.ts
34+
> ["a" +
35+
^
36+
source.ts meta.var.expr.ts meta.objectliteral.ts
37+
^
38+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts meta.brace.square.ts
39+
^
40+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts string.quoted.double.ts punctuation.definition.string.begin.ts
41+
^
42+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts string.quoted.double.ts
43+
^
44+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts string.quoted.double.ts punctuation.definition.string.end.ts
45+
^
46+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts
47+
^
48+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts keyword.operator.arithmetic.ts
49+
^^
50+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts
51+
> "b"]() {
52+
^^
53+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts
54+
^
55+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts string.quoted.double.ts punctuation.definition.string.begin.ts
56+
^
57+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts string.quoted.double.ts
58+
^
59+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts string.quoted.double.ts punctuation.definition.string.end.ts
60+
^
61+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts meta.array.literal.ts meta.brace.square.ts
62+
^
63+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
64+
^
65+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
66+
^
67+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts
68+
^
69+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
70+
^^
71+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
72+
> return 0; // no highlighting!
73+
^^
74+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
75+
^^^^^^
76+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts keyword.control.flow.ts
77+
^
78+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
79+
^
80+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts constant.numeric.decimal.ts
81+
^
82+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts punctuation.terminator.statement.ts
83+
^
84+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
85+
^^
86+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts comment.line.double-slash.ts punctuation.definition.comment.ts
87+
^^^^^^^^^^^^^^^^^^^
88+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts comment.line.double-slash.ts
89+
> },
90+
^
91+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
92+
^
93+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
94+
^
95+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.separator.comma.ts
96+
^^
97+
source.ts meta.var.expr.ts meta.objectliteral.ts
98+
> 'a\
99+
^
100+
source.ts meta.var.expr.ts meta.objectliteral.ts
101+
^
102+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.single.ts punctuation.definition.string.begin.ts
103+
^
104+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.single.ts
105+
^^
106+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.single.ts constant.character.escape.ts
107+
> '() {
108+
^
109+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.single.ts
110+
^
111+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.single.ts punctuation.definition.string.end.ts
112+
^
113+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
114+
^
115+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
116+
^
117+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts
118+
^
119+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
120+
^^
121+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
122+
> return 0; // no highlighting!
123+
^^
124+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
125+
^^^^^^
126+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts keyword.control.flow.ts
127+
^
128+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
129+
^
130+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts constant.numeric.decimal.ts
131+
^
132+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts punctuation.terminator.statement.ts
133+
^
134+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
135+
^^
136+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts comment.line.double-slash.ts punctuation.definition.comment.ts
137+
^^^^^^^^^^^^^^^^^^^
138+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts comment.line.double-slash.ts
139+
> }
140+
^
141+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts
142+
^
143+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
144+
^^
145+
source.ts meta.var.expr.ts meta.objectliteral.ts
146+
>};
147+
^
148+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
149+
^
150+
source.ts punctuation.terminator.statement.ts

tests/cases/Issue571.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const o = {
2+
["a" +
3+
"b"]() {
4+
return 0; // no highlighting!
5+
},
6+
'a\
7+
'() {
8+
return 0; // no highlighting!
9+
}
10+
};

0 commit comments

Comments
 (0)