Skip to content

Commit 3a70fab

Browse files
committed
Add scope for 'this' parameter
Fixes #466
1 parent 16fb0e7 commit 3a70fab

File tree

5 files changed

+91
-14
lines changed

5 files changed

+91
-14
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@ repository:
762762
# function assignment |
763763
# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
764764
- match: |-
765-
(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?<!=|:)([_$[:alpha:]][_$[:alnum:]]*)\s*(\??)(?=\s*
765+
(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?<!=|:)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*
766766
(=\s*(
767767
((async\s+)?(
768768
(function\s*[(<]) |
@@ -790,14 +790,16 @@ repository:
790790
captures:
791791
'1': { name: storage.modifier.ts }
792792
'2': { name: keyword.operator.rest.ts }
793-
'3': { name: entity.name.function.ts }
794-
'4': { name: keyword.operator.optional.ts }
795-
- match: (?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?<!=|:)([_$[:alpha:]][_$[:alnum:]]*)\s*(\??)
793+
'3': { name: entity.name.function.ts variable.language.this.ts }
794+
'4': { name: entity.name.function.ts }
795+
'5': { name: keyword.operator.optional.ts }
796+
- match: (?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?<!=|:)(?:((?<!\.|\$)\bthis\b(?!\.|\$))|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)
796797
captures:
797798
'1': { name: storage.modifier.ts }
798799
'2': { name: keyword.operator.rest.ts }
799-
'3': { name: variable.parameter.ts }
800-
'4': { name: keyword.operator.optional.ts }
800+
'3': { name: variable.parameter.ts variable.language.this.ts }
801+
'4': { name: variable.parameter.ts }
802+
'5': { name: keyword.operator.optional.ts }
801803

802804
destructuring-parameter:
803805
patterns:

TypeScript.tmLanguage

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2386,7 +2386,7 @@
23862386
</dict>
23872387
<dict>
23882388
<key>match</key>
2389-
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)([_$[:alpha:]][_$[:alnum:]]*)\s*(\??)(?=\s*
2389+
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*
23902390
(=\s*(
23912391
((async\s+)?(
23922392
(function\s*[(&lt;]) |
@@ -2426,9 +2426,14 @@
24262426
<key>3</key>
24272427
<dict>
24282428
<key>name</key>
2429-
<string>entity.name.function.ts</string>
2429+
<string>entity.name.function.ts variable.language.this.ts</string>
24302430
</dict>
24312431
<key>4</key>
2432+
<dict>
2433+
<key>name</key>
2434+
<string>entity.name.function.ts</string>
2435+
</dict>
2436+
<key>5</key>
24322437
<dict>
24332438
<key>name</key>
24342439
<string>keyword.operator.optional.ts</string>
@@ -2437,7 +2442,7 @@
24372442
</dict>
24382443
<dict>
24392444
<key>match</key>
2440-
<string>(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)([_$[:alpha:]][_$[:alnum:]]*)\s*(\??)</string>
2445+
<string>(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?:((?&lt;!\.|\$)\bthis\b(?!\.|\$))|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)</string>
24412446
<key>captures</key>
24422447
<dict>
24432448
<key>1</key>
@@ -2453,9 +2458,14 @@
24532458
<key>3</key>
24542459
<dict>
24552460
<key>name</key>
2456-
<string>variable.parameter.ts</string>
2461+
<string>variable.parameter.ts variable.language.this.ts</string>
24572462
</dict>
24582463
<key>4</key>
2464+
<dict>
2465+
<key>name</key>
2466+
<string>variable.parameter.ts</string>
2467+
</dict>
2468+
<key>5</key>
24592469
<dict>
24602470
<key>name</key>
24612471
<string>keyword.operator.optional.ts</string>

TypeScriptReact.tmLanguage

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2390,7 +2390,7 @@
23902390
</dict>
23912391
<dict>
23922392
<key>match</key>
2393-
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)([_$[:alpha:]][_$[:alnum:]]*)\s*(\??)(?=\s*
2393+
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*
23942394
(=\s*(
23952395
((async\s+)?(
23962396
(function\s*[(&lt;]) |
@@ -2430,9 +2430,14 @@
24302430
<key>3</key>
24312431
<dict>
24322432
<key>name</key>
2433-
<string>entity.name.function.tsx</string>
2433+
<string>entity.name.function.tsx variable.language.this.tsx</string>
24342434
</dict>
24352435
<key>4</key>
2436+
<dict>
2437+
<key>name</key>
2438+
<string>entity.name.function.tsx</string>
2439+
</dict>
2440+
<key>5</key>
24362441
<dict>
24372442
<key>name</key>
24382443
<string>keyword.operator.optional.tsx</string>
@@ -2441,7 +2446,7 @@
24412446
</dict>
24422447
<dict>
24432448
<key>match</key>
2444-
<string>(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)([_$[:alpha:]][_$[:alnum:]]*)\s*(\??)</string>
2449+
<string>(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?:((?&lt;!\.|\$)\bthis\b(?!\.|\$))|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)</string>
24452450
<key>captures</key>
24462451
<dict>
24472452
<key>1</key>
@@ -2457,9 +2462,14 @@
24572462
<key>3</key>
24582463
<dict>
24592464
<key>name</key>
2460-
<string>variable.parameter.tsx</string>
2465+
<string>variable.parameter.tsx variable.language.this.tsx</string>
24612466
</dict>
24622467
<key>4</key>
2468+
<dict>
2469+
<key>name</key>
2470+
<string>variable.parameter.tsx</string>
2471+
</dict>
2472+
<key>5</key>
24632473
<dict>
24642474
<key>name</key>
24652475
<string>keyword.operator.optional.tsx</string>

tests/baselines/Issue466.baseline.txt

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
original file
2+
-----------------------------------
3+
function foo(this: number, x: number) {
4+
5+
}
6+
-----------------------------------
7+
8+
Grammar: TypeScript.tmLanguage
9+
-----------------------------------
10+
>function foo(this: number, x: number) {
11+
^^^^^^^^
12+
source.ts meta.function.ts storage.type.function.ts
13+
^
14+
source.ts meta.function.ts
15+
^^^
16+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
17+
^
18+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
19+
^^^^
20+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts variable.language.this.ts
21+
^
22+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
23+
^
24+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts
25+
^^^^^^
26+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts
27+
^
28+
source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts
29+
^
30+
source.ts meta.function.ts meta.parameters.ts
31+
^
32+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
33+
^
34+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
35+
^
36+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts
37+
^^^^^^
38+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts
39+
^
40+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
41+
^
42+
source.ts meta.function.ts
43+
^
44+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
45+
^^
46+
source.ts meta.function.ts meta.block.ts
47+
>
48+
^^
49+
source.ts meta.function.ts meta.block.ts
50+
>}
51+
^
52+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts

tests/cases/Issue466.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function foo(this: number, x: number) {
2+
3+
}

0 commit comments

Comments
 (0)