Skip to content

Commit 42b4b74

Browse files
committed
fix: a receiver parameter can be followed by more parameters
1 parent ca4afaa commit 42b4b74

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

grammar.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,8 +1192,13 @@ module.exports = grammar({
11921192

11931193
formal_parameters: $ => seq(
11941194
'(',
1195-
optional($.receiver_parameter),
1196-
commaSep(choice($.formal_parameter, $.spread_parameter)),
1195+
choice(
1196+
$.receiver_parameter,
1197+
seq(
1198+
optional(seq($.receiver_parameter, ',')),
1199+
commaSep(choice($.formal_parameter, $.spread_parameter)),
1200+
),
1201+
),
11971202
')'
11981203
),
11991204

test/corpus/declarations.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,37 @@ public class Inner1<T> {
664664
(this)))
665665
(constructor_body)))))))))
666666

667+
================================================================================
668+
Receiver parameter with additional parameters
669+
================================================================================
670+
671+
public class A {
672+
public B(A this) {}
673+
674+
public C(A this, D that) {}
675+
}
676+
677+
---
678+
679+
(program
680+
(class_declaration
681+
(modifiers)
682+
(identifier)
683+
(class_body
684+
(constructor_declaration
685+
(modifiers)
686+
(identifier)
687+
(formal_parameters
688+
(receiver_parameter (type_identifier) (this)))
689+
(constructor_body))
690+
(constructor_declaration
691+
(modifiers)
692+
(identifier)
693+
(formal_parameters
694+
(receiver_parameter (type_identifier) (this))
695+
(formal_parameter (type_identifier) (identifier)))
696+
(constructor_body)))))
697+
667698
================================================================================
668699
throws
669700
================================================================================

0 commit comments

Comments
 (0)