Skip to content

Commit ab59434

Browse files
committed
feat: allow type in generic types
1 parent 65ca0d5 commit ab59434

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

grammar.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -943,15 +943,21 @@ module.exports = grammar({
943943
)),
944944

945945
type: $ => choice(
946-
$.expression,
946+
prec(1, $.expression),
947947
$.splat_type,
948948
$.generic_type,
949949
$.union_type,
950950
$.constrained_type,
951951
$.member_type,
952952
),
953953
splat_type: $ => prec(1, seq(choice('*', '**'), $.identifier)),
954-
generic_type: $ => prec(1, seq($.identifier, $.type_parameter)),
954+
generic_type: $ => prec(1, seq(
955+
choice(
956+
$.identifier,
957+
alias('type', $.identifier),
958+
),
959+
$.type_parameter,
960+
)),
955961
union_type: $ => prec.left(seq($.type, '|', $.type)),
956962
constrained_type: $ => prec.right(seq($.type, ':', $.type)),
957963
member_type: $ => seq($.type, '.', $.identifier),

test/corpus/expressions.txt

+12-1
Original file line numberDiff line numberDiff line change
@@ -1200,6 +1200,7 @@ Type expressions
12001200
================================================================================
12011201

12021202
a: A[T] | B
1203+
y: type[int] = int
12031204

12041205
--------------------------------------------------------------------------------
12051206

@@ -1216,4 +1217,14 @@ a: A[T] | B
12161217
(type
12171218
(identifier)))))
12181219
(type
1219-
(identifier)))))))
1220+
(identifier))))))
1221+
(expression_statement
1222+
(assignment
1223+
(identifier)
1224+
(type
1225+
(generic_type
1226+
(identifier)
1227+
(type_parameter
1228+
(type
1229+
(identifier)))))
1230+
(identifier))))

0 commit comments

Comments
 (0)