Merge pull request #143 from eed3si9n/wip/annotation

Fixes annotation, sort of
pull/481/head
eugene yokota 2023-01-15 11:22:15 +07:00 committed by GitHub
commit c764e31a99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 2 deletions

@ -399,6 +399,9 @@ Class definitions with parameters
class Point(val x: Int, val y: Int)(implicit coord: Coord)
// TODO: The last argument should become class_parameters
class A @Inject()(x: Int, y: Int)
---
(compilation_unit
@ -408,7 +411,16 @@ class Point(val x: Int, val y: Int)(implicit coord: Coord)
(class_parameter (identifier) (type_identifier))
(class_parameter (identifier) (type_identifier)))
(class_parameters
(class_parameter (identifier) (type_identifier)))))
(class_parameter (identifier) (type_identifier))))
(comment)
(class_definition
(identifier)
(annotation
(type_identifier)
(arguments)
(arguments
(ascription_expression (identifier) (type_identifier))
(ascription_expression (identifier) (type_identifier))))))
=======================================
Class definitions with parameters (Scala 3 syntax)
@ -416,6 +428,15 @@ Class definitions with parameters (Scala 3 syntax)
class Point(val x: Int, val y: Int)(using coord: Coord)
// TODO: The last argument should become class_parameters
class A @ann (x: Int, y: Int)
// TODO: The last argument should become class_parameters
class A @ann(1) (x: Int, y: Int)
// TODO: The last argument should become class_parameters
class A @ann(1)(1) (x: Int, y: Int)
---
(compilation_unit
@ -425,7 +446,35 @@ class Point(val x: Int, val y: Int)(using coord: Coord)
(class_parameter (identifier) (type_identifier))
(class_parameter (identifier) (type_identifier)))
(class_parameters
(class_parameter (identifier) (type_identifier)))))
(class_parameter (identifier) (type_identifier))))
(comment)
(class_definition
(identifier)
(annotation
(type_identifier)
(arguments
(ascription_expression (identifier) (type_identifier))
(ascription_expression (identifier) (type_identifier)))))
(comment)
(class_definition
(identifier)
(annotation
(type_identifier)
(arguments (integer_literal))
(arguments
(ascription_expression (identifier) (type_identifier))
(ascription_expression (identifier) (type_identifier)))))
(comment)
(class_definition
(identifier)
(annotation
(type_identifier)
(arguments (integer_literal))
(arguments (integer_literal))
(arguments
(ascription_expression (identifier) (type_identifier))
(ascription_expression (identifier) (type_identifier)))))
)
=======================================
Modifiers

@ -254,10 +254,12 @@ module.exports = grammar({
/**
* ClassConstr ::= [ClsTypeParamClause] [ConstrMods] ClsParamClauses
* ConstrMods ::= {Annotation} [AccessModifier]
*/
_class_constructor: $ => prec.right(seq(
field('name', $._identifier),
field('type_parameters', optional($.type_parameters)),
optional($.annotation),
optional($.access_modifier),
field('class_parameters', repeat($.class_parameters)),
)),