Closed nbrahms closed 3 years ago
Typescript exhibits the following behavior:
type O = { [key: number]: { [key: string]: boolean } } type NA = keyof (O[number]); // Returns "string | number" type NB = (keyof O)[number]; // Throws errors
But tree-sitter succeeds in parsing only the second "keyof" line:
$ tree-sitter parse <(echo 'type Foo = keyof (my_obj[number]);') (program [0, 0] - [1, 0] (type_alias_declaration [0, 0] - [0, 34] name: (type_identifier [0, 5] - [0, 8]) (ERROR [0, 11] - [0, 16]) value: (parenthesized_type [0, 17] - [0, 33] (lookup_type [0, 18] - [0, 32] (type_identifier [0, 18] - [0, 24]) (predefined_type [0, 25] - [0, 31]))))) /dev/fd/11 0 ms (ERROR [0, 11] - [0, 16])
$ tree-sitter parse <(echo 'type Foo = (keyof my_obj)[number];') (program [0, 0] - [1, 0] (type_alias_declaration [0, 0] - [0, 34] name: (type_identifier [0, 5] - [0, 8]) value: (lookup_type [0, 11] - [0, 33] (parenthesized_type [0, 11] - [0, 25] (index_type_query [0, 12] - [0, 24] (type_identifier [0, 18] - [0, 24]))) (predefined_type [0, 26] - [0, 32]))))
Typescript exhibits the following behavior:
But tree-sitter succeeds in parsing only the second "keyof" line: