Skip to content

Commit 4fa9a9a

Browse files
committed
Fix this literal matching with spread operator
Fixes #502
1 parent 96c7b24 commit 4fa9a9a

File tree

5 files changed

+109
-3
lines changed

5 files changed

+109
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2023,7 +2023,7 @@ repository:
20232023

20242024
this-literal:
20252025
name: variable.language.this.ts
2026-
match: (?<!\.|\$)\bthis\b(?!\$)
2026+
match: (?<!\$)((?<=\.\.\.)|(?<!\.))\bthis\b(?!\$)
20272027

20282028
super-literal:
20292029
name: variable.language.super.ts

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5574,7 +5574,7 @@
55745574
<key>name</key>
55755575
<string>variable.language.this.ts</string>
55765576
<key>match</key>
5577-
<string>(?&lt;!\.|\$)\bthis\b(?!\$)</string>
5577+
<string>(?&lt;!\$)((?&lt;=\.\.\.)|(?&lt;!\.))\bthis\b(?!\$)</string>
55785578
</dict>
55795579
<key>super-literal</key>
55805580
<dict>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5520,7 +5520,7 @@
55205520
<key>name</key>
55215521
<string>variable.language.this.tsx</string>
55225522
<key>match</key>
5523-
<string>(?&lt;!\.|\$)\bthis\b(?!\$)</string>
5523+
<string>(?&lt;!\$)((?&lt;=\.\.\.)|(?&lt;!\.))\bthis\b(?!\$)</string>
55245524
</dict>
55255525
<key>super-literal</key>
55265526
<dict>

tests/baselines/Issue502.baseline.txt

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
original file
2+
-----------------------------------
3+
class Foo {
4+
bar () {
5+
[...this.foobar()];
6+
[... this.foobar()];
7+
}
8+
}
9+
-----------------------------------
10+
11+
Grammar: TypeScript.tmLanguage
12+
-----------------------------------
13+
>class Foo {
14+
^^^^^
15+
source.ts meta.class.ts storage.type.class.ts
16+
^
17+
source.ts meta.class.ts
18+
^^^
19+
source.ts meta.class.ts entity.name.type.class.ts
20+
^
21+
source.ts meta.class.ts
22+
^
23+
source.ts meta.class.ts punctuation.definition.block.ts
24+
^^
25+
source.ts meta.class.ts
26+
> bar () {
27+
^^^^
28+
source.ts meta.class.ts
29+
^^^
30+
source.ts meta.class.ts meta.method.declaration.ts meta.definition.method.ts entity.name.function.ts
31+
^
32+
source.ts meta.class.ts meta.method.declaration.ts
33+
^
34+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
35+
^
36+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
37+
^
38+
source.ts meta.class.ts meta.method.declaration.ts
39+
^
40+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
41+
^^
42+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
43+
> [...this.foobar()];
44+
^^^^^^^^
45+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
46+
^
47+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts
48+
^^^
49+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts keyword.operator.spread.ts
50+
^^^^
51+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.function-call.ts variable.language.this.ts
52+
^
53+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.function-call.ts punctuation.accessor.ts
54+
^^^^^^
55+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.function-call.ts entity.name.function.ts
56+
^
57+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.round.ts
58+
^
59+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.round.ts
60+
^
61+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts
62+
^
63+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.terminator.statement.ts
64+
^^
65+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
66+
> [... this.foobar()];
67+
^^^^^^^^
68+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
69+
^
70+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts
71+
^^^
72+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts keyword.operator.spread.ts
73+
^
74+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts
75+
^^^^
76+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.function-call.ts variable.language.this.ts
77+
^
78+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.function-call.ts punctuation.accessor.ts
79+
^^^^^^
80+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.function-call.ts entity.name.function.ts
81+
^
82+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.round.ts
83+
^
84+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.round.ts
85+
^
86+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts
87+
^
88+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.terminator.statement.ts
89+
^^
90+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
91+
> }
92+
^^^^
93+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
94+
^
95+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts punctuation.definition.block.ts
96+
^^
97+
source.ts meta.class.ts
98+
>}
99+
^
100+
source.ts meta.class.ts punctuation.definition.block.ts

tests/cases/Issue502.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Foo {
2+
bar () {
3+
[...this.foobar()];
4+
[... this.foobar()];
5+
}
6+
}

0 commit comments

Comments
 (0)