Skip to content

Commit dc5fe35

Browse files
committed
Handle possibly parameters when there is no type annotation
Fixes #791
1 parent c1e346c commit dc5fe35

File tree

5 files changed

+257
-3
lines changed

5 files changed

+257
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1530,7 +1530,7 @@ repository:
15301530
'4': { name: entity.name.function.ts }
15311531
'5': { name: keyword.operator.optional.ts }
15321532
- match: |-
1533-
(?x)(?:{{startOfIdentifier}}(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\s*(\??)(?=\s*:)
1533+
(?x)(?:{{startOfIdentifier}}(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\s*(\??)(?=\s*[:,]|$)
15341534
captures:
15351535
'1': { name: storage.modifier.ts }
15361536
'2': { name: keyword.operator.rest.ts }

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4996,7 +4996,7 @@
49964996
</dict>
49974997
<dict>
49984998
<key>match</key>
4999-
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*:)</string>
4999+
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*[:,]|$)</string>
50005000
<key>captures</key>
50015001
<dict>
50025002
<key>1</key>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5024,7 +5024,7 @@
50245024
</dict>
50255025
<dict>
50265026
<key>match</key>
5027-
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*:)</string>
5027+
<string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*[:,]|$)</string>
50285028
<key>captures</key>
50295029
<dict>
50305030
<key>1</key>

tests/baselines/Issue791.baseline.txt

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
original file
2+
-----------------------------------
3+
const test = (foo, bar) => `${foo} ${bar}`
4+
5+
const test2 = (
6+
foo,
7+
bar
8+
) => `${foo} ${bar}`
9+
10+
function test3(foo, bar) {
11+
return `${foo} ${bar}`
12+
}
13+
function test4(
14+
foo,
15+
bar
16+
) {
17+
return `${foo} ${bar}`
18+
}
19+
-----------------------------------
20+
21+
Grammar: TypeScript.tmLanguage
22+
-----------------------------------
23+
>const test = (foo, bar) => `${foo} ${bar}`
24+
^^^^^
25+
source.ts meta.var.expr.ts storage.type.ts
26+
^
27+
source.ts meta.var.expr.ts
28+
^^^^
29+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts
30+
^
31+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
32+
^
33+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
34+
^
35+
source.ts meta.var.expr.ts meta.arrow.ts
36+
^
37+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
38+
^^^
39+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts variable.parameter.ts
40+
^
41+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.separator.parameter.ts
42+
^
43+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts
44+
^^^
45+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts variable.parameter.ts
46+
^
47+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts
48+
^
49+
source.ts meta.var.expr.ts meta.arrow.ts
50+
^^
51+
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
52+
^
53+
source.ts meta.var.expr.ts meta.arrow.ts
54+
^
55+
source.ts meta.var.expr.ts string.template.ts punctuation.definition.string.template.begin.ts
56+
^^
57+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
58+
^^^
59+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
60+
^
61+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
62+
^
63+
source.ts meta.var.expr.ts string.template.ts
64+
^^
65+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
66+
^^^
67+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
68+
^
69+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
70+
^
71+
source.ts meta.var.expr.ts string.template.ts punctuation.definition.string.template.end.ts
72+
>
73+
^
74+
source.ts
75+
>const test2 = (
76+
^^^^^
77+
source.ts meta.var.expr.ts storage.type.ts
78+
^
79+
source.ts meta.var.expr.ts
80+
^^^^^
81+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts
82+
^
83+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
84+
^
85+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
86+
^
87+
source.ts meta.var.expr.ts
88+
^
89+
source.ts meta.var.expr.ts meta.brace.round.ts
90+
> foo,
91+
^^
92+
source.ts meta.var.expr.ts
93+
^^^
94+
source.ts meta.var.expr.ts variable.parameter.ts
95+
^
96+
source.ts meta.var.expr.ts punctuation.separator.parameter.ts
97+
> bar
98+
^^
99+
source.ts meta.var.expr.ts
100+
^^^
101+
source.ts meta.var.expr.ts variable.parameter.ts
102+
>) => `${foo} ${bar}`
103+
^
104+
source.ts meta.var.expr.ts meta.brace.round.ts
105+
^
106+
source.ts meta.var.expr.ts
107+
^^
108+
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
109+
^
110+
source.ts meta.var.expr.ts meta.arrow.ts
111+
^
112+
source.ts meta.var.expr.ts string.template.ts punctuation.definition.string.template.begin.ts
113+
^^
114+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
115+
^^^
116+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
117+
^
118+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
119+
^
120+
source.ts meta.var.expr.ts string.template.ts
121+
^^
122+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
123+
^^^
124+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
125+
^
126+
source.ts meta.var.expr.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
127+
^
128+
source.ts meta.var.expr.ts string.template.ts punctuation.definition.string.template.end.ts
129+
>
130+
^
131+
source.ts
132+
>function test3(foo, bar) {
133+
^^^^^^^^
134+
source.ts meta.function.ts storage.type.function.ts
135+
^
136+
source.ts meta.function.ts
137+
^^^^^
138+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
139+
^
140+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
141+
^^^
142+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
143+
^
144+
source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts
145+
^
146+
source.ts meta.function.ts meta.parameters.ts
147+
^^^
148+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
149+
^
150+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
151+
^
152+
source.ts meta.function.ts
153+
^
154+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
155+
> return `${foo} ${bar}`
156+
^^
157+
source.ts meta.function.ts meta.block.ts
158+
^^^^^^
159+
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
160+
^
161+
source.ts meta.function.ts meta.block.ts
162+
^
163+
source.ts meta.function.ts meta.block.ts string.template.ts punctuation.definition.string.template.begin.ts
164+
^^
165+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
166+
^^^
167+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
168+
^
169+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
170+
^
171+
source.ts meta.function.ts meta.block.ts string.template.ts
172+
^^
173+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
174+
^^^
175+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
176+
^
177+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
178+
^
179+
source.ts meta.function.ts meta.block.ts string.template.ts punctuation.definition.string.template.end.ts
180+
>}
181+
^
182+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
183+
>function test4(
184+
^^^^^^^^
185+
source.ts meta.function.ts storage.type.function.ts
186+
^
187+
source.ts meta.function.ts
188+
^^^^^
189+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
190+
^
191+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
192+
> foo,
193+
^^
194+
source.ts meta.function.ts meta.parameters.ts
195+
^^^
196+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
197+
^
198+
source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts
199+
> bar
200+
^^
201+
source.ts meta.function.ts meta.parameters.ts
202+
^^^
203+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
204+
>) {
205+
^
206+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
207+
^
208+
source.ts meta.function.ts
209+
^
210+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
211+
> return `${foo} ${bar}`
212+
^^
213+
source.ts meta.function.ts meta.block.ts
214+
^^^^^^
215+
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
216+
^
217+
source.ts meta.function.ts meta.block.ts
218+
^
219+
source.ts meta.function.ts meta.block.ts string.template.ts punctuation.definition.string.template.begin.ts
220+
^^
221+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
222+
^^^
223+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
224+
^
225+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
226+
^
227+
source.ts meta.function.ts meta.block.ts string.template.ts
228+
^^
229+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.begin.ts
230+
^^^
231+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts meta.embedded.line.ts variable.other.readwrite.ts
232+
^
233+
source.ts meta.function.ts meta.block.ts string.template.ts meta.template.expression.ts punctuation.definition.template-expression.end.ts
234+
^
235+
source.ts meta.function.ts meta.block.ts string.template.ts punctuation.definition.string.template.end.ts
236+
>}
237+
^
238+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts

tests/cases/Issue791.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const test = (foo, bar) => `${foo} ${bar}`
2+
3+
const test2 = (
4+
foo,
5+
bar
6+
) => `${foo} ${bar}`
7+
8+
function test3(foo, bar) {
9+
return `${foo} ${bar}`
10+
}
11+
function test4(
12+
foo,
13+
bar
14+
) {
15+
return `${foo} ${bar}`
16+
}

0 commit comments

Comments
 (0)