Skip to content

Commit 13aeee9

Browse files
committed
implement type_parameter like const_parameter
instead of having two seperate type_parameter rules: `constrained_type_parameter` and `optional_type_parameter`, combine them into one rule with two `optional`s.
1 parent d111c7b commit 13aeee9

File tree

2 files changed

+99
-71
lines changed

2 files changed

+99
-71
lines changed

grammar.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ module.exports = grammar({
107107
[$.scoped_identifier, $.scoped_type_identifier],
108108
[$.parameters, $._pattern],
109109
[$.parameters, $.tuple_struct_pattern],
110-
[$.type_parameters, $.for_lifetimes],
111110
[$.array_expression],
112111
[$.visibility_modifier],
113112
[$.visibility_modifier, $.scoped_identifier, $.scoped_type_identifier],
@@ -549,11 +548,9 @@ module.exports = grammar({
549548
sepBy1(',', seq(
550549
repeat($.attribute_item),
551550
choice(
552-
$.lifetime,
553551
$.metavariable,
554-
$._type_identifier,
555-
$.constrained_type_parameter,
556-
$.optional_type_parameter,
552+
$.type_parameter,
553+
$.lifetime_parameter,
557554
$.const_parameter,
558555
),
559556
)),
@@ -581,19 +578,21 @@ module.exports = grammar({
581578
),
582579
),
583580

584-
constrained_type_parameter: $ => seq(
585-
field('left', choice($.lifetime, $._type_identifier)),
586-
field('bounds', $.trait_bounds),
587-
),
581+
type_parameter: $ => prec(1, seq(
582+
field('name', $._type_identifier),
583+
optional(field('bounds', $.trait_bounds)),
584+
optional(
585+
seq(
586+
'=',
587+
field('default_type', $._type),
588+
),
589+
),
590+
)),
588591

589-
optional_type_parameter: $ => seq(
590-
field('name', choice(
591-
$._type_identifier,
592-
$.constrained_type_parameter,
593-
)),
594-
'=',
595-
field('default_type', $._type),
596-
),
592+
lifetime_parameter: $ => prec(1, seq(
593+
field('name', $.lifetime),
594+
optional(field('bounds', $.trait_bounds)),
595+
)),
597596

598597
let_declaration: $ => seq(
599598
'let',

0 commit comments

Comments
 (0)