Skip to content

Commit 5158d13

Browse files
committed
Handle inline comment in object literal
Fixes #670
1 parent c75d110 commit 5158d13

File tree

5 files changed

+162
-9
lines changed

5 files changed

+162
-9
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,30 +1266,32 @@ repository:
12661266
begin: (?=\[)
12671267
end: (?=:)|((?<=[\]])(?=\s*[\(\<]))
12681268
patterns:
1269+
- include: '#comment'
12691270
- include: '#array-literal'
12701271
- name: meta.object.member.ts meta.object-literal.key.ts
12711272
begin: (?=[\'\"])
12721273
end: (?=:)|((?<=[\'\"])(?=\s*[\(\<]))
12731274
patterns:
1275+
- include: '#comment'
12741276
- include: '#string'
12751277
- name: meta.method.declaration.ts
12761278
begin: (?<=[\]\'\"])(?=\s*[\(\<])
12771279
end: (?=\}|;|,)|(?<=\})
12781280
patterns:
12791281
- include: '#function-body'
12801282
- name: meta.object.member.ts
1281-
match: (?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)
1283+
match: (?![_$[:alpha:]])([[:digit:]]+)\s*(?=({{inlineComment}}\s*)*:)
12821284
captures:
12831285
'0': { name: meta.object-literal.key.ts }
12841286
'1': { name: constant.numeric.decimal.ts }
12851287
- name: meta.object.member.ts
12861288
match: |-
1287-
(?x)(?:({{identifier}})\s*(?=:{{functionOrArrowLookup}}))
1289+
(?x)(?:({{identifier}})\s*(?=({{inlineComment}}\s*)*:(\s*{{inlineComment}})*{{functionOrArrowLookup}}))
12881290
captures:
12891291
'0': { name: meta.object-literal.key.ts }
12901292
'1': { name: entity.name.function.ts }
12911293
- name: meta.object.member.ts
1292-
match: (?:{{identifier}})\s*(?=:)
1294+
match: (?:{{identifier}})\s*(?=({{inlineComment}}\s*)*:)
12931295
captures:
12941296
'0': { name: meta.object-literal.key.ts }
12951297
- name: meta.object.member.ts

TypeScript.tmLanguage

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4071,6 +4071,10 @@
40714071
<string>(?=:)|((?&lt;=[\]])(?=\s*[\(\&lt;]))</string>
40724072
<key>patterns</key>
40734073
<array>
4074+
<dict>
4075+
<key>include</key>
4076+
<string>#comment</string>
4077+
</dict>
40744078
<dict>
40754079
<key>include</key>
40764080
<string>#array-literal</string>
@@ -4086,6 +4090,10 @@
40864090
<string>(?=:)|((?&lt;=[\'\"])(?=\s*[\(\&lt;]))</string>
40874091
<key>patterns</key>
40884092
<array>
4093+
<dict>
4094+
<key>include</key>
4095+
<string>#comment</string>
4096+
</dict>
40894097
<dict>
40904098
<key>include</key>
40914099
<string>#string</string>
@@ -4111,7 +4119,7 @@
41114119
<key>name</key>
41124120
<string>meta.object.member.ts</string>
41134121
<key>match</key>
4114-
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)</string>
4122+
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string>
41154123
<key>captures</key>
41164124
<dict>
41174125
<key>0</key>
@@ -4130,7 +4138,7 @@
41304138
<key>name</key>
41314139
<string>meta.object.member.ts</string>
41324140
<key>match</key>
4133-
<string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:\s*(
4141+
<string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:(\s*\/\*([^\*]|(\*[^\/]))*\*\/)*\s*(
41344142
((async\s+)?(
41354143
(function\s*[(&lt;*]) |
41364144
(function\s+) |
@@ -4177,7 +4185,7 @@
41774185
<key>name</key>
41784186
<string>meta.object.member.ts</string>
41794187
<key>match</key>
4180-
<string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)</string>
4188+
<string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string>
41814189
<key>captures</key>
41824190
<dict>
41834191
<key>0</key>

TypeScriptReact.tmLanguage

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4075,6 +4075,10 @@
40754075
<string>(?=:)|((?&lt;=[\]])(?=\s*[\(\&lt;]))</string>
40764076
<key>patterns</key>
40774077
<array>
4078+
<dict>
4079+
<key>include</key>
4080+
<string>#comment</string>
4081+
</dict>
40784082
<dict>
40794083
<key>include</key>
40804084
<string>#array-literal</string>
@@ -4090,6 +4094,10 @@
40904094
<string>(?=:)|((?&lt;=[\'\"])(?=\s*[\(\&lt;]))</string>
40914095
<key>patterns</key>
40924096
<array>
4097+
<dict>
4098+
<key>include</key>
4099+
<string>#comment</string>
4100+
</dict>
40934101
<dict>
40944102
<key>include</key>
40954103
<string>#string</string>
@@ -4115,7 +4123,7 @@
41154123
<key>name</key>
41164124
<string>meta.object.member.tsx</string>
41174125
<key>match</key>
4118-
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)</string>
4126+
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string>
41194127
<key>captures</key>
41204128
<dict>
41214129
<key>0</key>
@@ -4134,7 +4142,7 @@
41344142
<key>name</key>
41354143
<string>meta.object.member.tsx</string>
41364144
<key>match</key>
4137-
<string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:\s*(
4145+
<string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:(\s*\/\*([^\*]|(\*[^\/]))*\*\/)*\s*(
41384146
((async\s+)?(
41394147
(function\s*[(&lt;*]) |
41404148
(function\s+) |
@@ -4181,7 +4189,7 @@
41814189
<key>name</key>
41824190
<string>meta.object.member.tsx</string>
41834191
<key>match</key>
4184-
<string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)</string>
4192+
<string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string>
41854193
<key>captures</key>
41864194
<dict>
41874195
<key>0</key>

tests/baselines/Issue670.baseline.txt

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
original file
2+
-----------------------------------
3+
const Foo = {
4+
/*good*/foooo/*good*/:/*good*/ 123/*good*/,
5+
/*good*/'foo'/*BAD*/: 456,
6+
/*good*/"fooo"/*BAD*/: 789,
7+
}
8+
-----------------------------------
9+
10+
Grammar: TypeScript.tmLanguage
11+
-----------------------------------
12+
>const Foo = {
13+
^^^^^
14+
source.ts meta.var.expr.ts storage.type.ts
15+
^
16+
source.ts meta.var.expr.ts
17+
^^^
18+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.constant.ts
19+
^
20+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
21+
^
22+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
23+
^
24+
source.ts meta.var.expr.ts
25+
^
26+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
27+
> /*good*/foooo/*good*/:/*good*/ 123/*good*/,
28+
^^^^
29+
source.ts meta.var.expr.ts meta.objectliteral.ts
30+
^^
31+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
32+
^^^^
33+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts
34+
^^
35+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
36+
^^^^^
37+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
38+
^^
39+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
40+
^^^^
41+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts
42+
^^
43+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
44+
^
45+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
46+
^^
47+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts comment.block.ts punctuation.definition.comment.ts
48+
^^^^
49+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts comment.block.ts
50+
^^
51+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts comment.block.ts punctuation.definition.comment.ts
52+
^
53+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts
54+
^^^
55+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts constant.numeric.decimal.ts
56+
^^
57+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts comment.block.ts punctuation.definition.comment.ts
58+
^^^^
59+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts comment.block.ts
60+
^^
61+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts comment.block.ts punctuation.definition.comment.ts
62+
^
63+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.separator.comma.ts
64+
^^
65+
source.ts meta.var.expr.ts meta.objectliteral.ts
66+
> /*good*/'foo'/*BAD*/: 456,
67+
^^^^
68+
source.ts meta.var.expr.ts meta.objectliteral.ts
69+
^^
70+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
71+
^^^^
72+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts
73+
^^
74+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
75+
^
76+
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
77+
^^^
78+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.single.ts
79+
^
80+
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
81+
^^
82+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts comment.block.ts punctuation.definition.comment.ts
83+
^^^
84+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts comment.block.ts
85+
^^
86+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts comment.block.ts punctuation.definition.comment.ts
87+
^
88+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
89+
^
90+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts
91+
^^^
92+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts constant.numeric.decimal.ts
93+
^
94+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.separator.comma.ts
95+
^^
96+
source.ts meta.var.expr.ts meta.objectliteral.ts
97+
> /*good*/"fooo"/*BAD*/: 789,
98+
^^^^
99+
source.ts meta.var.expr.ts meta.objectliteral.ts
100+
^^
101+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
102+
^^^^
103+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts
104+
^^
105+
source.ts meta.var.expr.ts meta.objectliteral.ts comment.block.ts punctuation.definition.comment.ts
106+
^
107+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.double.ts punctuation.definition.string.begin.ts
108+
^^^^
109+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.double.ts
110+
^
111+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.double.ts punctuation.definition.string.end.ts
112+
^^
113+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts comment.block.ts punctuation.definition.comment.ts
114+
^^^
115+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts comment.block.ts
116+
^^
117+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts comment.block.ts punctuation.definition.comment.ts
118+
^
119+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
120+
^
121+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts
122+
^^^
123+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts constant.numeric.decimal.ts
124+
^
125+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.separator.comma.ts
126+
^^
127+
source.ts meta.var.expr.ts meta.objectliteral.ts
128+
>}
129+
^
130+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts

tests/cases/Issue670.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const Foo = {
2+
/*good*/foooo/*good*/:/*good*/ 123/*good*/,
3+
/*good*/'foo'/*BAD*/: 456,
4+
/*good*/"fooo"/*BAD*/: 789,
5+
}

0 commit comments

Comments
 (0)