Skip to content

Commit fbdbc41

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 fbdbc41

File tree

2 files changed

+91
-69
lines changed

2 files changed

+91
-69
lines changed

grammar.js

Lines changed: 10 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,8 @@ 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,
557553
$.const_parameter,
558554
),
559555
)),
@@ -581,19 +577,16 @@ module.exports = grammar({
581577
),
582578
),
583579

584-
constrained_type_parameter: $ => seq(
580+
type_parameter: $ => prec(1, seq(
585581
field('left', choice($.lifetime, $._type_identifier)),
586-
field('bounds', $.trait_bounds),
587-
),
588-
589-
optional_type_parameter: $ => seq(
590-
field('name', choice(
591-
$._type_identifier,
592-
$.constrained_type_parameter,
593-
)),
594-
'=',
595-
field('default_type', $._type),
596-
),
582+
optional(field('bounds', $.trait_bounds)),
583+
optional(
584+
seq(
585+
'=',
586+
field('default_type', $._type),
587+
),
588+
),
589+
)),
597590

598591
let_declaration: $ => seq(
599592
'let',

0 commit comments

Comments
 (0)