Using clause in $.arguments

Problem
-------
Scala 3 introduced using clauses to function call expressions:
```scala
f(using A)
```
The grammar did not allow that

Solution
-------
Add `choice` between regular and using-clause argument lists in
`$.arguments`
text_sliders
susliko 2023-05-25 18:25:05 +07:00
parent 9ec7921aa6
commit 8cb5a00a1d
2 changed files with 37 additions and 2 deletions

@ -89,6 +89,31 @@ class C {
(wildcard)))
(identifier)))))))))
================================================================================
Call expressions (Scala 3 syntax)
================================================================================
class C {
a(b, c)(using A.B)
}
--------------------------------------------------------------------------------
(compilation_unit
(class_definition
(identifier)
(template_body
(call_expression
(call_expression
(identifier)
(arguments
(identifier)
(identifier)))
(arguments
(field_expression
(identifier)
(identifier)))))))
================================================================================
SIP-44 Fewer braces (Scala 3 syntax)
================================================================================

@ -1173,12 +1173,22 @@ module.exports = grammar({
']'
),
arguments: $ => seq(
arguments: $ =>
seq(
'(',
trailingCommaSep($.expression),
choice(
optional($._exprs_in_parens),
seq(
'using',
$._exprs_in_parens,
),
),
')'
),
// ExprsInParens ::= ExprInParens {, ExprInParens}
_exprs_in_parens: $ => trailingCommaSep1($.expression),
splice_expression: $ => prec.left(PREC.macro, seq(
'$',
choice(