diff --git a/grammar.js b/grammar.js index 1907a3a3..3cf16438 100644 --- a/grammar.js +++ b/grammar.js @@ -488,11 +488,12 @@ module.exports = grammar({ field('bounds', $.trait_bounds), ), - impl_item: $ => seq( + impl_item: $ => prec(1, seq( optional('unsafe'), 'impl', field('type_parameters', optional($.type_parameters)), optional(seq( + optional('const'), optional('!'), field('trait', choice( $._type_identifier, @@ -504,7 +505,7 @@ module.exports = grammar({ field('type', $._type), optional($.where_clause), choice(field('body', $.declaration_list), ';'), - ), + )), trait_item: $ => seq( optional($.visibility_modifier), diff --git a/test/corpus/declarations.txt b/test/corpus/declarations.txt index 77195e86..044ecdf3 100644 --- a/test/corpus/declarations.txt +++ b/test/corpus/declarations.txt @@ -1667,6 +1667,21 @@ unsafe impl Foo { (type_identifier) (declaration_list))) +================================================================================ +Const impls +================================================================================ + +impl const Foo for Bar { +} + +-------------------------------------------------------------------------------- + +(source_file + (impl_item + (type_identifier) + (type_identifier) + (declaration_list))) + ================================================================================ Disable automatically derived trait impls ================================================================================