From 3054b9b596f306885d5a1a5637966520db3abe64 Mon Sep 17 00:00:00 2001 From: susliko <1istoobig@gmail.com> Date: Mon, 18 Sep 2023 22:41:17 +0300 Subject: [PATCH] Derives clause for traits Fixes #348 `trait_definition` now includes `_class_definition` which is comprised of extends-clause, derives-clause, and body. This also slightly reduces parser size (from ~890Kb to ~780Kb) --- corpus/definitions.txt | 6 ++++-- grammar.js | 6 ++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/corpus/definitions.txt b/corpus/definitions.txt index f57109f83..0329b68e1 100644 --- a/corpus/definitions.txt +++ b/corpus/definitions.txt @@ -786,7 +786,7 @@ Trait definitions trait A extends B -trait A extends B with C +trait A extends B with C derives D trait T[U] { } @@ -805,6 +805,8 @@ trait T[U] extends V.W[U] { (identifier) (extends_clause (type_identifier) + (type_identifier)) + (derives_clause (type_identifier))) (trait_definition (identifier) @@ -1330,7 +1332,7 @@ object A: (indented_cases (case_clause (identifier) - (string)))) + (string)))) (given_definition (parameters (parameter diff --git a/grammar.js b/grammar.js index 260074d00..3e5308a57 100644 --- a/grammar.js +++ b/grammar.js @@ -297,7 +297,7 @@ module.exports = grammar({ $._class_constructor, field("extend", optional($.extends_clause)), field("derive", optional($.derives_clause)), - optional($._definition_body), + field("body", optional($._definition_body)), ), _definition_body: $ => @@ -325,9 +325,7 @@ module.exports = grammar({ repeat($.annotation), optional($.modifiers), "trait", - $._class_constructor, - field("extend", optional($.extends_clause)), - field("body", optional($._definition_body)), + $._class_definition, ), ),