Skip to content

Commit 36ad8ae

Browse files
committed
Handle numberic object literal keys
Fixes #417 and #420
1 parent cc5499d commit 36ad8ae

File tree

7 files changed

+221
-0
lines changed

7 files changed

+221
-0
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,6 +1500,15 @@ repository:
15001500
- include: '#string'
15011501
- include: '#array-literal'
15021502
- include: '#expression'
1503+
- name: meta.object.member.ts
1504+
begin: (?![_$[:alpha:]])([[:digit:]]+)\s*(:)
1505+
beginCaptures:
1506+
'0': { name: meta.object-literal.key.ts }
1507+
'1': { name: constant.numeric.decimal.ts }
1508+
'2': { name: punctuation.separator.key-value.ts }
1509+
end: (?=,|\})
1510+
patterns:
1511+
- include: '#expression'
15031512
- name: meta.object.member.ts
15041513
begin: |-
15051514
(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*(

TypeScript.tmLanguage

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4126,6 +4126,39 @@
41264126
</dict>
41274127
</array>
41284128
</dict>
4129+
<dict>
4130+
<key>name</key>
4131+
<string>meta.object.member.ts</string>
4132+
<key>begin</key>
4133+
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(:)</string>
4134+
<key>beginCaptures</key>
4135+
<dict>
4136+
<key>0</key>
4137+
<dict>
4138+
<key>name</key>
4139+
<string>meta.object-literal.key.ts</string>
4140+
</dict>
4141+
<key>1</key>
4142+
<dict>
4143+
<key>name</key>
4144+
<string>constant.numeric.decimal.ts</string>
4145+
</dict>
4146+
<key>2</key>
4147+
<dict>
4148+
<key>name</key>
4149+
<string>punctuation.separator.key-value.ts</string>
4150+
</dict>
4151+
</dict>
4152+
<key>end</key>
4153+
<string>(?=,|\})</string>
4154+
<key>patterns</key>
4155+
<array>
4156+
<dict>
4157+
<key>include</key>
4158+
<string>#expression</string>
4159+
</dict>
4160+
</array>
4161+
</dict>
41294162
<dict>
41304163
<key>name</key>
41314164
<string>meta.object.member.ts</string>

TypeScriptReact.tmLanguage

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4072,6 +4072,39 @@
40724072
</dict>
40734073
</array>
40744074
</dict>
4075+
<dict>
4076+
<key>name</key>
4077+
<string>meta.object.member.tsx</string>
4078+
<key>begin</key>
4079+
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(:)</string>
4080+
<key>beginCaptures</key>
4081+
<dict>
4082+
<key>0</key>
4083+
<dict>
4084+
<key>name</key>
4085+
<string>meta.object-literal.key.tsx</string>
4086+
</dict>
4087+
<key>1</key>
4088+
<dict>
4089+
<key>name</key>
4090+
<string>constant.numeric.decimal.tsx</string>
4091+
</dict>
4092+
<key>2</key>
4093+
<dict>
4094+
<key>name</key>
4095+
<string>punctuation.separator.key-value.tsx</string>
4096+
</dict>
4097+
</dict>
4098+
<key>end</key>
4099+
<string>(?=,|\})</string>
4100+
<key>patterns</key>
4101+
<array>
4102+
<dict>
4103+
<key>include</key>
4104+
<string>#expression</string>
4105+
</dict>
4106+
</array>
4107+
</dict>
40754108
<dict>
40764109
<key>name</key>
40774110
<string>meta.object.member.tsx</string>

tests/baselines/Issue417.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+
const a = {
4+
1: '1',
5+
'2': '2',
6+
}
7+
-----------------------------------
8+
9+
Grammar: TypeScript.tmLanguage
10+
-----------------------------------
11+
>const a = {
12+
^^^^^
13+
source.ts meta.var.expr.ts storage.type.ts
14+
^
15+
source.ts meta.var.expr.ts
16+
^
17+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
18+
^
19+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
20+
^
21+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
22+
^
23+
source.ts meta.var.expr.ts
24+
^
25+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
26+
^^
27+
source.ts meta.var.expr.ts meta.objectliteral.ts
28+
> 1: '1',
29+
^^^^
30+
source.ts meta.var.expr.ts meta.objectliteral.ts
31+
^
32+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts constant.numeric.decimal.ts
33+
^
34+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
35+
^
36+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts
37+
^
38+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts string.quoted.single.ts punctuation.definition.string.begin.ts
39+
^
40+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts string.quoted.single.ts
41+
^
42+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts string.quoted.single.ts punctuation.definition.string.end.ts
43+
^
44+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.separator.comma.ts
45+
^^
46+
source.ts meta.var.expr.ts meta.objectliteral.ts
47+
> '2': '2',
48+
^^^^
49+
source.ts meta.var.expr.ts meta.objectliteral.ts
50+
^
51+
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
52+
^
53+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts string.quoted.single.ts
54+
^
55+
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
56+
^
57+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
58+
^
59+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts
60+
^
61+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts string.quoted.single.ts punctuation.definition.string.begin.ts
62+
^
63+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts string.quoted.single.ts
64+
^
65+
source.ts meta.var.expr.ts meta.objectliteral.ts meta.object.member.ts string.quoted.single.ts punctuation.definition.string.end.ts
66+
^
67+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.separator.comma.ts
68+
^^
69+
source.ts meta.var.expr.ts meta.objectliteral.ts
70+
>}
71+
^
72+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts

tests/baselines/Issue420.baseline.txt

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
original file
2+
-----------------------------------
3+
verify.quickInfos({
4+
1: "this: ContextualInterface",
5+
2: "(parameter) this: void"
6+
});
7+
-----------------------------------
8+
9+
Grammar: TypeScript.tmLanguage
10+
-----------------------------------
11+
>verify.quickInfos({
12+
^^^^^^
13+
source.ts variable.other.object.ts
14+
^
15+
source.ts punctuation.accessor.ts
16+
^^^^^^^^^^
17+
source.ts entity.name.function.ts
18+
^
19+
source.ts meta.brace.round.ts
20+
^
21+
source.ts meta.objectliteral.ts punctuation.definition.block.ts
22+
^^
23+
source.ts meta.objectliteral.ts
24+
> 1: "this: ContextualInterface",
25+
^^^^
26+
source.ts meta.objectliteral.ts
27+
^
28+
source.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts constant.numeric.decimal.ts
29+
^
30+
source.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
31+
^
32+
source.ts meta.objectliteral.ts meta.object.member.ts
33+
^
34+
source.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
35+
^^^^^^^^^^^^^^^^^^^^^^^^^
36+
source.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
37+
^
38+
source.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
39+
^
40+
source.ts meta.objectliteral.ts punctuation.separator.comma.ts
41+
^^
42+
source.ts meta.objectliteral.ts
43+
> 2: "(parameter) this: void"
44+
^^^^
45+
source.ts meta.objectliteral.ts
46+
^
47+
source.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts constant.numeric.decimal.ts
48+
^
49+
source.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
50+
^
51+
source.ts meta.objectliteral.ts meta.object.member.ts
52+
^
53+
source.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
54+
^^^^^^^^^^^^^^^^^^^^^^
55+
source.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
56+
^
57+
source.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
58+
^^
59+
source.ts meta.objectliteral.ts meta.object.member.ts
60+
>});
61+
^
62+
source.ts meta.objectliteral.ts punctuation.definition.block.ts
63+
^
64+
source.ts meta.brace.round.ts
65+
^
66+
source.ts punctuation.terminator.statement.ts

tests/cases/Issue417.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
const a = {
2+
1: '1',
3+
'2': '2',
4+
}

tests/cases/Issue420.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
verify.quickInfos({
2+
1: "this: ContextualInterface",
3+
2: "(parameter) this: void"
4+
});

0 commit comments

Comments
 (0)