diff --git a/grammar.js b/grammar.js index 8448eb8..88d95c7 100644 --- a/grammar.js +++ b/grammar.js @@ -424,10 +424,11 @@ module.exports = grammar({ ), - generic_type: $ => seq( + generic_type: $ => prec.left(seq( $._type_identifier, - $.type_arguments - ), + $.type_arguments, + optional($.as_aliasing_type) + )), type_arguments: $ => seq( '<', diff --git a/test/corpus/type_declarations.txt b/test/corpus/type_declarations.txt index 5335f1e..34b6f15 100644 --- a/test/corpus/type_declarations.txt +++ b/test/corpus/type_declarations.txt @@ -349,6 +349,7 @@ Generic type t<'a, 'b> = (array<'a>, array<'b>) type t = result<(), string> +type t<'a> = generic<'a> as 's --- @@ -365,7 +366,15 @@ type t = result<(), string> (type_identifier) (type_arguments (unit) - (type_identifier))))) + (type_identifier)))) + + (type_declaration + (type_identifier) + (type_parameters (type_identifier)) + (generic_type + (type_identifier) + (type_arguments (type_identifier)) + (as_aliasing_type (type_identifier))))) =========================================== Recursive