Skip to content

Commit b7358ce

Browse files
committed
Fix parameter name detection such that it doesnt consume unnecessary leading space resulting it in taking precedence over other rules
Fixes #616
1 parent 2e117c6 commit b7358ce

File tree

5 files changed

+128
-12
lines changed

5 files changed

+128
-12
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,19 +363,19 @@ repository:
363363

364364
parameter-name:
365365
patterns:
366-
- match: \s*\b(public|protected|private|readonly)(?=\s+(public|protected|private|readonly)\s+)
366+
- match: '{{startOfIdentifier}}(public|protected|private|readonly)\s+(?=(public|protected|private|readonly)\s+)'
367367
captures:
368368
'1': { name: storage.modifier.ts }
369369
- match: |-
370-
(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?<!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\s*(\??)(?={{functionLikeAssignmentOrType}})
370+
(?x)(?:{{startOfIdentifier}}(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\s*(\??)(?={{functionLikeAssignmentOrType}})
371371
captures:
372372
'1': { name: storage.modifier.ts }
373373
'2': { name: keyword.operator.rest.ts }
374374
'3': { name: entity.name.function.ts variable.language.this.ts }
375375
'4': { name: entity.name.function.ts }
376376
'5': { name: keyword.operator.optional.ts }
377377
- match: |-
378-
(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?<!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\s*(\??)
378+
(?x)(?:{{startOfIdentifier}}(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\s*(\??)
379379
captures:
380380
'1': { name: storage.modifier.ts }
381381
'2': { name: keyword.operator.rest.ts }
@@ -723,7 +723,7 @@ repository:
723723
class-expression:
724724
name: meta.class.ts
725725
# allows anonymous class
726-
begin: '{{startOfIdentifier}}(class)\b(?=\s+|[<{]|/[/*])'
726+
begin: '{{startOfIdentifier}}(class)\b(?=\s+|[<{]|\/[\/*])'
727727
beginCaptures:
728728
'1': { name: storage.type.class.ts }
729729
end: (?<=\})

TypeScript.tmLanguage

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@
899899
<array>
900900
<dict>
901901
<key>match</key>
902-
<string>\s*\b(public|protected|private|readonly)(?=\s+(public|protected|private|readonly)\s+)</string>
902+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|protected|private|readonly)\s+(?=(public|protected|private|readonly)\s+)</string>
903903
<key>captures</key>
904904
<dict>
905905
<key>1</key>
@@ -911,7 +911,7 @@
911911
</dict>
912912
<dict>
913913
<key>match</key>
914-
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
914+
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
915915
# function assignment |
916916
(=\s*(
917917
((async\s+)?(
@@ -1014,7 +1014,7 @@
10141014
</dict>
10151015
<dict>
10161016
<key>match</key>
1017-
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)</string>
1017+
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)</string>
10181018
<key>captures</key>
10191019
<dict>
10201020
<key>1</key>
@@ -2267,7 +2267,7 @@
22672267
<key>name</key>
22682268
<string>meta.class.ts</string>
22692269
<key>begin</key>
2270-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(class)\b(?=\s+|[&lt;{]|/[/*])</string>
2270+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(class)\b(?=\s+|[&lt;{]|\/[\/*])</string>
22712271
<key>beginCaptures</key>
22722272
<dict>
22732273
<key>1</key>

TypeScriptReact.tmLanguage

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,7 @@
903903
<array>
904904
<dict>
905905
<key>match</key>
906-
<string>\s*\b(public|protected|private|readonly)(?=\s+(public|protected|private|readonly)\s+)</string>
906+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|protected|private|readonly)\s+(?=(public|protected|private|readonly)\s+)</string>
907907
<key>captures</key>
908908
<dict>
909909
<key>1</key>
@@ -915,7 +915,7 @@
915915
</dict>
916916
<dict>
917917
<key>match</key>
918-
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
918+
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
919919
# function assignment |
920920
(=\s*(
921921
((async\s+)?(
@@ -1018,7 +1018,7 @@
10181018
</dict>
10191019
<dict>
10201020
<key>match</key>
1021-
<string>(?x)(?:\s*\b(public|private|protected|readonly)\s+)?(\.\.\.)?\s*(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)</string>
1021+
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)</string>
10221022
<key>captures</key>
10231023
<dict>
10241024
<key>1</key>
@@ -2271,7 +2271,7 @@
22712271
<key>name</key>
22722272
<string>meta.class.tsx</string>
22732273
<key>begin</key>
2274-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(class)\b(?=\s+|[&lt;{]|/[/*])</string>
2274+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(class)\b(?=\s+|[&lt;{]|\/[\/*])</string>
22752275
<key>beginCaptures</key>
22762276
<dict>
22772277
<key>1</key>

tests/baselines/Issue616.baseline.txt

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
original file
2+
-----------------------------------
3+
const func = () => (
4+
getValue()
5+
)
6+
7+
const Comp = () => (
8+
class extends React.Component {
9+
}
10+
)
11+
-----------------------------------
12+
13+
Grammar: TypeScript.tmLanguage
14+
-----------------------------------
15+
>const func = () => (
16+
^^^^^
17+
source.ts meta.var.expr.ts storage.type.ts
18+
^
19+
source.ts meta.var.expr.ts
20+
^^^^
21+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts entity.name.function.ts
22+
^
23+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
24+
^
25+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
26+
^
27+
source.ts meta.var.expr.ts meta.arrow.ts
28+
^
29+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
30+
^
31+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts
32+
^
33+
source.ts meta.var.expr.ts meta.arrow.ts
34+
^^
35+
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
36+
^
37+
source.ts meta.var.expr.ts meta.arrow.ts
38+
^
39+
source.ts meta.var.expr.ts meta.arrow.ts meta.brace.round.ts
40+
> getValue()
41+
^^
42+
source.ts meta.var.expr.ts meta.arrow.ts
43+
^^^^^^^^
44+
source.ts meta.var.expr.ts meta.arrow.ts meta.function-call.ts entity.name.function.ts
45+
^
46+
source.ts meta.var.expr.ts meta.arrow.ts meta.brace.round.ts
47+
^
48+
source.ts meta.var.expr.ts meta.arrow.ts meta.brace.round.ts
49+
>)
50+
^
51+
source.ts meta.var.expr.ts meta.arrow.ts meta.brace.round.ts
52+
>
53+
^
54+
source.ts
55+
>const Comp = () => (
56+
^^^^^
57+
source.ts meta.var.expr.ts storage.type.ts
58+
^
59+
source.ts meta.var.expr.ts
60+
^^^^
61+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts entity.name.function.ts
62+
^
63+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
64+
^
65+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
66+
^
67+
source.ts meta.var.expr.ts meta.arrow.ts
68+
^
69+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
70+
^
71+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts
72+
^
73+
source.ts meta.var.expr.ts meta.arrow.ts
74+
^^
75+
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
76+
^
77+
source.ts meta.var.expr.ts meta.arrow.ts
78+
^
79+
source.ts meta.var.expr.ts meta.arrow.ts meta.brace.round.ts
80+
> class extends React.Component {
81+
^^
82+
source.ts meta.var.expr.ts meta.arrow.ts
83+
^^^^^
84+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts storage.type.class.ts
85+
^
86+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts
87+
^^^^^^^
88+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts storage.modifier.ts
89+
^
90+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts
91+
^^^^^
92+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts entity.name.type.module.ts
93+
^
94+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts punctuation.accessor.ts
95+
^^^^^^^^^
96+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts entity.other.inherited-class.ts
97+
^
98+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts
99+
^
100+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts punctuation.definition.block.ts
101+
> }
102+
^^
103+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts
104+
^
105+
source.ts meta.var.expr.ts meta.arrow.ts meta.class.ts punctuation.definition.block.ts
106+
>)
107+
^
108+
source.ts meta.var.expr.ts meta.arrow.ts meta.brace.round.ts

tests/cases/Issue616.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const func = () => (
2+
getValue()
3+
)
4+
5+
const Comp = () => (
6+
class extends React.Component {
7+
}
8+
)

0 commit comments

Comments
 (0)