Merge pull request #295 from susliko/multi-line-param-lists

Multi-line parameter lists
text_sliders
eugene yokota 2023-06-09 12:48:52 +07:00 committed by GitHub
commit b2dd83f635
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 28 deletions

@ -467,6 +467,11 @@ class C[
U,
](a: => A, b: B, c: C*) {
}
class A
()
()
{}
--------------------------------------------------------------------------------
(compilation_unit
@ -487,6 +492,11 @@ class C[
(identifier)
(repeated_parameter_type
(type_identifier))))
(template_body))
(class_definition
(identifier)
(class_parameters)
(class_parameters)
(template_body)))
================================================================================
@ -1009,6 +1019,8 @@ Function declarations
class A {
def b(c: D) : E
def <*[B](that: IO[B]): IO[A]
def c
(a: A): B
}
--------------------------------------------------------------------------------
@ -1038,7 +1050,14 @@ class A {
(generic_type
(type_identifier)
(type_arguments
(type_identifier)))))))
(type_identifier))))
(function_declaration
(identifier)
(parameters
(parameter
(identifier)
(type_identifier)))
(type_identifier)))))
================================================================================
Function definitions
@ -1050,14 +1069,13 @@ class A {
e: F,
) = 1
def h(x: T)(implicit ev: Reads[T])
def l: Int =
1
def m = ()
def n(using a: A)(using B <:< B, C =:= C) = ()
def n(using a: A)
(using B <:< B, C =:= C) = ()
}
--------------------------------------------------------------------------------
@ -1076,19 +1094,6 @@ class A {
(identifier)
(type_identifier)))
(integer_literal))
(function_declaration
(identifier)
(parameters
(parameter
(identifier)
(type_identifier)))
(parameters
(parameter
(identifier)
(generic_type
(type_identifier)
(type_arguments
(type_identifier))))))
(function_definition
(identifier)
(type_identifier)

@ -91,6 +91,7 @@ module.exports = grammar({
[$._full_enum_def],
// _start_val identifier ',' identifier • ':' …
[$.identifiers, $.val_declaration],
[$.class_parameters],
],
word: $ => $._alpha_identifier,
@ -312,7 +313,10 @@ module.exports = grammar({
field("type_parameters", optional($.type_parameters)),
optional($.annotation),
optional($.access_modifier),
field("class_parameters", repeat($.class_parameters)),
field("class_parameters", repeat(seq(
optional($._automatic_semicolon),
$.class_parameters,
))),
),
trait_definition: $ =>
@ -513,34 +517,36 @@ module.exports = grammar({
function_definition: $ =>
seq(
repeat($.annotation),
optional($.modifiers),
"def",
$._function_constructor,
$._function_declaration,
choice(
seq("=", field("body", $._indentable_expression)),
field("body", $.block),
),
),
function_declaration: $ =>
function_declaration: $ => $._function_declaration,
_function_declaration: $ =>
prec.left(
seq(
repeat($.annotation),
optional($.modifiers),
"def",
$._function_constructor,
optional(seq(":", field("return_type", $._type))),
),
),
// Created for memory-usage optimization during codegen.
_function_constructor: $ =>
prec.left(
prec.right(
seq(
field("name", $._identifier),
field("type_parameters", optional($.type_parameters)),
field("parameters", repeat($.parameters)),
optional(seq(":", field("return_type", $._type))),
field("parameters", repeat(seq(
optional($._automatic_semicolon),
$.parameters,
))),
),
),

@ -2,9 +2,9 @@
# This is an integration test to generally check the quality of parsing.
SCALA_SCALA_LIBRARY_EXPECTED=97
SCALA_SCALA_LIBRARY_EXPECTED=98
SCALA_SCALA_COMPILER_EXPECTED=93
DOTTY_COMPILER_EXPECTED=82
DOTTY_COMPILER_EXPECTED=83
SYNTAX_COMPLEXITY_CEILING=1300
if [ ! -d "$SCALA_SCALA_DIR" ]; then