Skip to content

Commit c6a1b87

Browse files
fix: fix parse error on import() type + type arguments
fix #322
1 parent 75b3874 commit c6a1b87

File tree

8 files changed

+326835
-324186
lines changed

8 files changed

+326835
-324186
lines changed

common/define-grammar.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ module.exports = function defineGrammar(dialect) {
7878

7979
// This appears to be necessary to parse a parenthesized class expression
8080
[$.class],
81+
[$._type_query_member_expression_in_type_annotation],
8182

8283
[$.nested_identifier, $.nested_type_identifier, $.primary_expression],
8384
[$.nested_identifier, $.nested_type_identifier],
@@ -702,6 +703,7 @@ module.exports = function defineGrammar(dialect) {
702703
$.private_property_identifier,
703704
alias($.identifier, $.property_identifier),
704705
)),
706+
optional($.type_arguments),
705707
),
706708
_type_query_call_expression_in_type_annotation: $ => seq(
707709
field('function', choice(

test/corpus/types.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2214,3 +2214,23 @@ import something from 'foo.css' assert { type: 'css' }
22142214
(property_identifier)
22152215
(string
22162216
(string_fragment)))))))
2217+
2218+
=========================
2219+
Import in type
2220+
=========================
2221+
2222+
type Foo = import('foo').Foo<F>;
2223+
2224+
---
2225+
(program
2226+
(type_alias_declaration
2227+
(type_identifier)
2228+
(member_expression
2229+
(call_expression
2230+
(import)
2231+
(arguments
2232+
(string
2233+
(string_fragment))))
2234+
(property_identifier)
2235+
(type_arguments
2236+
(type_identifier)))))

tsx/src/grammar.json

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tsx/src/node-types.json

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)