diff --git a/crates/rome_js_parser/src/syntax/expr.rs b/crates/rome_js_parser/src/syntax/expr.rs index 00273d7c4c6..4f217bedaa5 100644 --- a/crates/rome_js_parser/src/syntax/expr.rs +++ b/crates/rome_js_parser/src/syntax/expr.rs @@ -939,6 +939,24 @@ fn parse_static_member_expression( lhs: CompletedMarker, operator: JsSyntaxKind, ) -> ParsedSyntax { + // test ts ts_instantiation_expression_property_access + // f?.(c); + // f?.[c]; + // (f).c; + // (f)?.c; + // (f)?.[c]; + if lhs.kind(p) == TS_INSTANTIATION_EXPRESSION { + // test_err ts ts_instantiation_expression_property_access + // f.c; + // f?.c; + // a?.f.d; + // f.g; + p.error(p.err_builder( + "An instantiation expression cannot be followed by a property access.", + lhs.range(p), + ).hint("You can either wrap the instantiation expression in parentheses, or delete the type arguments.")); + } + let m = lhs.precede(p); p.expect(operator); diff --git a/crates/rome_js_parser/src/syntax/typescript/types.rs b/crates/rome_js_parser/src/syntax/typescript/types.rs index 4aa680a5797..ead88502d18 100644 --- a/crates/rome_js_parser/src/syntax/typescript/types.rs +++ b/crates/rome_js_parser/src/syntax/typescript/types.rs @@ -1246,8 +1246,6 @@ fn parse_ts_type_predicate(p: &mut JsParser) -> ParsedSyntax { // let f2 = fx; // let f3 = fx['test']; // const a2 = f.g; // () => number -// const a3 = f.g; // () => U -// const a4 = f.g; // () => number // const a5 = f['g']; // () => number // const a7 = (f)['g']; // const a6 = f['g']; // type Error diff --git a/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expression_property_access.rast b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expression_property_access.rast new file mode 100644 index 00000000000..0cb89c1aafe --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expression_property_access.rast @@ -0,0 +1,287 @@ +JsModule { + interpreter_token: missing (optional), + directives: JsDirectiveList [], + items: JsModuleItemList [ + JsExpressionStatement { + expression: JsStaticMemberExpression { + object: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@0..1 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@1..2 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@2..3 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@3..4 ">" [] [], + }, + }, + operator_token: DOT@4..5 "." [] [], + member: JsName { + value_token: IDENT@5..6 "c" [] [], + }, + }, + semicolon_token: SEMICOLON@6..7 ";" [] [], + }, + JsExpressionStatement { + expression: JsStaticMemberExpression { + object: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@7..9 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@9..10 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@10..11 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@11..12 ">" [] [], + }, + }, + operator_token: QUESTIONDOT@12..14 "?." [] [], + member: JsName { + value_token: IDENT@14..15 "c" [] [], + }, + }, + semicolon_token: SEMICOLON@15..16 ";" [] [], + }, + JsExpressionStatement { + expression: JsStaticMemberExpression { + object: TsInstantiationExpression { + expression: JsStaticMemberExpression { + object: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@16..18 "a" [Newline("\n")] [], + }, + }, + operator_token: QUESTIONDOT@18..20 "?." [] [], + member: JsName { + value_token: IDENT@20..21 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@21..22 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@22..23 "c" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@23..24 ">" [] [], + }, + }, + operator_token: DOT@24..25 "." [] [], + member: JsName { + value_token: IDENT@25..26 "d" [] [], + }, + }, + semicolon_token: SEMICOLON@26..27 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsStaticMemberExpression { + object: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@27..29 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@29..30 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@30..31 "a" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@31..32 ">" [] [], + }, + }, + operator_token: DOT@32..33 "." [] [], + member: JsName { + value_token: IDENT@33..34 "g" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@34..35 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@35..36 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@36..37 ">" [] [], + }, + }, + semicolon_token: SEMICOLON@37..38 ";" [] [], + }, + ], + eof_token: EOF@38..39 "" [Newline("\n")] [], +} + +0: JS_MODULE@0..39 + 0: (empty) + 1: JS_DIRECTIVE_LIST@0..0 + 2: JS_MODULE_ITEM_LIST@0..38 + 0: JS_EXPRESSION_STATEMENT@0..7 + 0: JS_STATIC_MEMBER_EXPRESSION@0..6 + 0: TS_INSTANTIATION_EXPRESSION@0..4 + 0: JS_IDENTIFIER_EXPRESSION@0..1 + 0: JS_REFERENCE_IDENTIFIER@0..1 + 0: IDENT@0..1 "f" [] [] + 1: TS_TYPE_ARGUMENTS@1..4 + 0: L_ANGLE@1..2 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@2..3 + 0: TS_REFERENCE_TYPE@2..3 + 0: JS_REFERENCE_IDENTIFIER@2..3 + 0: IDENT@2..3 "b" [] [] + 1: (empty) + 2: R_ANGLE@3..4 ">" [] [] + 1: DOT@4..5 "." [] [] + 2: JS_NAME@5..6 + 0: IDENT@5..6 "c" [] [] + 1: SEMICOLON@6..7 ";" [] [] + 1: JS_EXPRESSION_STATEMENT@7..16 + 0: JS_STATIC_MEMBER_EXPRESSION@7..15 + 0: TS_INSTANTIATION_EXPRESSION@7..12 + 0: JS_IDENTIFIER_EXPRESSION@7..9 + 0: JS_REFERENCE_IDENTIFIER@7..9 + 0: IDENT@7..9 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@9..12 + 0: L_ANGLE@9..10 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@10..11 + 0: TS_REFERENCE_TYPE@10..11 + 0: JS_REFERENCE_IDENTIFIER@10..11 + 0: IDENT@10..11 "b" [] [] + 1: (empty) + 2: R_ANGLE@11..12 ">" [] [] + 1: QUESTIONDOT@12..14 "?." [] [] + 2: JS_NAME@14..15 + 0: IDENT@14..15 "c" [] [] + 1: SEMICOLON@15..16 ";" [] [] + 2: JS_EXPRESSION_STATEMENT@16..27 + 0: JS_STATIC_MEMBER_EXPRESSION@16..26 + 0: TS_INSTANTIATION_EXPRESSION@16..24 + 0: JS_STATIC_MEMBER_EXPRESSION@16..21 + 0: JS_IDENTIFIER_EXPRESSION@16..18 + 0: JS_REFERENCE_IDENTIFIER@16..18 + 0: IDENT@16..18 "a" [Newline("\n")] [] + 1: QUESTIONDOT@18..20 "?." [] [] + 2: JS_NAME@20..21 + 0: IDENT@20..21 "f" [] [] + 1: TS_TYPE_ARGUMENTS@21..24 + 0: L_ANGLE@21..22 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@22..23 + 0: TS_REFERENCE_TYPE@22..23 + 0: JS_REFERENCE_IDENTIFIER@22..23 + 0: IDENT@22..23 "c" [] [] + 1: (empty) + 2: R_ANGLE@23..24 ">" [] [] + 1: DOT@24..25 "." [] [] + 2: JS_NAME@25..26 + 0: IDENT@25..26 "d" [] [] + 1: SEMICOLON@26..27 ";" [] [] + 3: JS_EXPRESSION_STATEMENT@27..38 + 0: TS_INSTANTIATION_EXPRESSION@27..37 + 0: JS_STATIC_MEMBER_EXPRESSION@27..34 + 0: TS_INSTANTIATION_EXPRESSION@27..32 + 0: JS_IDENTIFIER_EXPRESSION@27..29 + 0: JS_REFERENCE_IDENTIFIER@27..29 + 0: IDENT@27..29 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@29..32 + 0: L_ANGLE@29..30 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@30..31 + 0: TS_REFERENCE_TYPE@30..31 + 0: JS_REFERENCE_IDENTIFIER@30..31 + 0: IDENT@30..31 "a" [] [] + 1: (empty) + 2: R_ANGLE@31..32 ">" [] [] + 1: DOT@32..33 "." [] [] + 2: JS_NAME@33..34 + 0: IDENT@33..34 "g" [] [] + 1: TS_TYPE_ARGUMENTS@34..37 + 0: L_ANGLE@34..35 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@35..36 + 0: TS_REFERENCE_TYPE@35..36 + 0: JS_REFERENCE_IDENTIFIER@35..36 + 0: IDENT@35..36 "b" [] [] + 1: (empty) + 2: R_ANGLE@36..37 ">" [] [] + 1: SEMICOLON@37..38 ";" [] [] + 3: EOF@38..39 "" [Newline("\n")] [] +-- +ts_instantiation_expression_property_access.ts:1:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × An instantiation expression cannot be followed by a property access. + + > 1 │ f.c; + │ ^^^^ + 2 │ f?.c; + 3 │ a?.f.d; + + i You can either wrap the instantiation expression in parentheses, or delete the type arguments. + +-- +ts_instantiation_expression_property_access.ts:2:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × An instantiation expression cannot be followed by a property access. + + 1 │ f.c; + > 2 │ f?.c; + │ ^^^^ + 3 │ a?.f.d; + 4 │ f.g; + + i You can either wrap the instantiation expression in parentheses, or delete the type arguments. + +-- +ts_instantiation_expression_property_access.ts:3:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × An instantiation expression cannot be followed by a property access. + + 1 │ f.c; + 2 │ f?.c; + > 3 │ a?.f.d; + │ ^^^^^^^ + 4 │ f.g; + 5 │ + + i You can either wrap the instantiation expression in parentheses, or delete the type arguments. + +-- +ts_instantiation_expression_property_access.ts:4:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × An instantiation expression cannot be followed by a property access. + + 2 │ f?.c; + 3 │ a?.f.d; + > 4 │ f.g; + │ ^^^^ + 5 │ + + i You can either wrap the instantiation expression in parentheses, or delete the type arguments. + +-- +f.c; +f?.c; +a?.f.d; +f.g; diff --git a/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expression_property_access.ts b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expression_property_access.ts new file mode 100644 index 00000000000..0ab4a233e67 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expression_property_access.ts @@ -0,0 +1,4 @@ +f.c; +f?.c; +a?.f.d; +f.g; diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expression_property_access.rast b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expression_property_access.rast new file mode 100644 index 00000000000..dbf69d24d16 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expression_property_access.rast @@ -0,0 +1,293 @@ +JsModule { + interpreter_token: missing (optional), + directives: JsDirectiveList [], + items: JsModuleItemList [ + JsExpressionStatement { + expression: JsCallExpression { + callee: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@0..1 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@1..2 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@2..3 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@3..4 ">" [] [], + }, + }, + optional_chain_token: QUESTIONDOT@4..6 "?." [] [], + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@6..7 "(" [] [], + args: JsCallArgumentList [ + JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@7..8 "c" [] [], + }, + }, + ], + r_paren_token: R_PAREN@8..9 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@9..10 ";" [] [], + }, + JsExpressionStatement { + expression: JsComputedMemberExpression { + object: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@10..12 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@12..13 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@13..14 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@14..15 ">" [] [], + }, + }, + optional_chain_token: QUESTIONDOT@15..17 "?." [] [], + l_brack_token: L_BRACK@17..18 "[" [] [], + member: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@18..19 "c" [] [], + }, + }, + r_brack_token: R_BRACK@19..20 "]" [] [], + }, + semicolon_token: SEMICOLON@20..21 ";" [] [], + }, + JsExpressionStatement { + expression: JsStaticMemberExpression { + object: JsParenthesizedExpression { + l_paren_token: L_PAREN@21..23 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@23..24 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@24..25 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@25..26 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@26..27 ">" [] [], + }, + }, + r_paren_token: R_PAREN@27..28 ")" [] [], + }, + operator_token: DOT@28..29 "." [] [], + member: JsName { + value_token: IDENT@29..30 "c" [] [], + }, + }, + semicolon_token: SEMICOLON@30..31 ";" [] [], + }, + JsExpressionStatement { + expression: JsStaticMemberExpression { + object: JsParenthesizedExpression { + l_paren_token: L_PAREN@31..33 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@33..34 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@34..35 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@35..36 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@36..37 ">" [] [], + }, + }, + r_paren_token: R_PAREN@37..38 ")" [] [], + }, + operator_token: QUESTIONDOT@38..40 "?." [] [], + member: JsName { + value_token: IDENT@40..41 "c" [] [], + }, + }, + semicolon_token: SEMICOLON@41..42 ";" [] [], + }, + JsExpressionStatement { + expression: JsComputedMemberExpression { + object: JsParenthesizedExpression { + l_paren_token: L_PAREN@42..44 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@44..45 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@45..46 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@46..47 "b" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@47..48 ">" [] [], + }, + }, + r_paren_token: R_PAREN@48..49 ")" [] [], + }, + optional_chain_token: QUESTIONDOT@49..51 "?." [] [], + l_brack_token: L_BRACK@51..52 "[" [] [], + member: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@52..53 "c" [] [], + }, + }, + r_brack_token: R_BRACK@53..54 "]" [] [], + }, + semicolon_token: SEMICOLON@54..55 ";" [] [], + }, + ], + eof_token: EOF@55..56 "" [Newline("\n")] [], +} + +0: JS_MODULE@0..56 + 0: (empty) + 1: JS_DIRECTIVE_LIST@0..0 + 2: JS_MODULE_ITEM_LIST@0..55 + 0: JS_EXPRESSION_STATEMENT@0..10 + 0: JS_CALL_EXPRESSION@0..9 + 0: TS_INSTANTIATION_EXPRESSION@0..4 + 0: JS_IDENTIFIER_EXPRESSION@0..1 + 0: JS_REFERENCE_IDENTIFIER@0..1 + 0: IDENT@0..1 "f" [] [] + 1: TS_TYPE_ARGUMENTS@1..4 + 0: L_ANGLE@1..2 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@2..3 + 0: TS_REFERENCE_TYPE@2..3 + 0: JS_REFERENCE_IDENTIFIER@2..3 + 0: IDENT@2..3 "b" [] [] + 1: (empty) + 2: R_ANGLE@3..4 ">" [] [] + 1: QUESTIONDOT@4..6 "?." [] [] + 2: (empty) + 3: JS_CALL_ARGUMENTS@6..9 + 0: L_PAREN@6..7 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@7..8 + 0: JS_IDENTIFIER_EXPRESSION@7..8 + 0: JS_REFERENCE_IDENTIFIER@7..8 + 0: IDENT@7..8 "c" [] [] + 2: R_PAREN@8..9 ")" [] [] + 1: SEMICOLON@9..10 ";" [] [] + 1: JS_EXPRESSION_STATEMENT@10..21 + 0: JS_COMPUTED_MEMBER_EXPRESSION@10..20 + 0: TS_INSTANTIATION_EXPRESSION@10..15 + 0: JS_IDENTIFIER_EXPRESSION@10..12 + 0: JS_REFERENCE_IDENTIFIER@10..12 + 0: IDENT@10..12 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@12..15 + 0: L_ANGLE@12..13 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@13..14 + 0: TS_REFERENCE_TYPE@13..14 + 0: JS_REFERENCE_IDENTIFIER@13..14 + 0: IDENT@13..14 "b" [] [] + 1: (empty) + 2: R_ANGLE@14..15 ">" [] [] + 1: QUESTIONDOT@15..17 "?." [] [] + 2: L_BRACK@17..18 "[" [] [] + 3: JS_IDENTIFIER_EXPRESSION@18..19 + 0: JS_REFERENCE_IDENTIFIER@18..19 + 0: IDENT@18..19 "c" [] [] + 4: R_BRACK@19..20 "]" [] [] + 1: SEMICOLON@20..21 ";" [] [] + 2: JS_EXPRESSION_STATEMENT@21..31 + 0: JS_STATIC_MEMBER_EXPRESSION@21..30 + 0: JS_PARENTHESIZED_EXPRESSION@21..28 + 0: L_PAREN@21..23 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@23..27 + 0: JS_IDENTIFIER_EXPRESSION@23..24 + 0: JS_REFERENCE_IDENTIFIER@23..24 + 0: IDENT@23..24 "f" [] [] + 1: TS_TYPE_ARGUMENTS@24..27 + 0: L_ANGLE@24..25 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@25..26 + 0: TS_REFERENCE_TYPE@25..26 + 0: JS_REFERENCE_IDENTIFIER@25..26 + 0: IDENT@25..26 "b" [] [] + 1: (empty) + 2: R_ANGLE@26..27 ">" [] [] + 2: R_PAREN@27..28 ")" [] [] + 1: DOT@28..29 "." [] [] + 2: JS_NAME@29..30 + 0: IDENT@29..30 "c" [] [] + 1: SEMICOLON@30..31 ";" [] [] + 3: JS_EXPRESSION_STATEMENT@31..42 + 0: JS_STATIC_MEMBER_EXPRESSION@31..41 + 0: JS_PARENTHESIZED_EXPRESSION@31..38 + 0: L_PAREN@31..33 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@33..37 + 0: JS_IDENTIFIER_EXPRESSION@33..34 + 0: JS_REFERENCE_IDENTIFIER@33..34 + 0: IDENT@33..34 "f" [] [] + 1: TS_TYPE_ARGUMENTS@34..37 + 0: L_ANGLE@34..35 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@35..36 + 0: TS_REFERENCE_TYPE@35..36 + 0: JS_REFERENCE_IDENTIFIER@35..36 + 0: IDENT@35..36 "b" [] [] + 1: (empty) + 2: R_ANGLE@36..37 ">" [] [] + 2: R_PAREN@37..38 ")" [] [] + 1: QUESTIONDOT@38..40 "?." [] [] + 2: JS_NAME@40..41 + 0: IDENT@40..41 "c" [] [] + 1: SEMICOLON@41..42 ";" [] [] + 4: JS_EXPRESSION_STATEMENT@42..55 + 0: JS_COMPUTED_MEMBER_EXPRESSION@42..54 + 0: JS_PARENTHESIZED_EXPRESSION@42..49 + 0: L_PAREN@42..44 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@44..48 + 0: JS_IDENTIFIER_EXPRESSION@44..45 + 0: JS_REFERENCE_IDENTIFIER@44..45 + 0: IDENT@44..45 "f" [] [] + 1: TS_TYPE_ARGUMENTS@45..48 + 0: L_ANGLE@45..46 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@46..47 + 0: TS_REFERENCE_TYPE@46..47 + 0: JS_REFERENCE_IDENTIFIER@46..47 + 0: IDENT@46..47 "b" [] [] + 1: (empty) + 2: R_ANGLE@47..48 ">" [] [] + 2: R_PAREN@48..49 ")" [] [] + 1: QUESTIONDOT@49..51 "?." [] [] + 2: L_BRACK@51..52 "[" [] [] + 3: JS_IDENTIFIER_EXPRESSION@52..53 + 0: JS_REFERENCE_IDENTIFIER@52..53 + 0: IDENT@52..53 "c" [] [] + 4: R_BRACK@53..54 "]" [] [] + 1: SEMICOLON@54..55 ";" [] [] + 3: EOF@55..56 "" [Newline("\n")] [] diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expression_property_access.ts b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expression_property_access.ts new file mode 100644 index 00000000000..e59124faf99 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expression_property_access.ts @@ -0,0 +1,5 @@ +f?.(c); +f?.[c]; +(f).c; +(f)?.c; +(f)?.[c]; diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.rast b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.rast index d8a09a4025b..14f0eab6d39 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.rast @@ -158,416 +158,327 @@ JsModule { declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@126..129 "a3" [] [Whitespace(" ")], + name_token: IDENT@126..129 "a5" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@129..131 "=" [] [Whitespace(" ")], - expression: JsStaticMemberExpression { - object: TsInstantiationExpression { - expression: JsIdentifierExpression { - name: JsReferenceIdentifier { - value_token: IDENT@131..132 "f" [] [], - }, - }, - arguments: TsTypeArguments { - l_angle_token: L_ANGLE@132..133 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsNumberType { - number_token: NUMBER_KW@133..139 "number" [] [], - }, - ], - r_angle_token: R_ANGLE@139..140 ">" [] [], - }, - }, - operator_token: DOT@140..141 "." [] [], - member: JsName { - value_token: IDENT@141..142 "g" [] [], - }, - }, - }, - }, - ], - }, - semicolon_token: SEMICOLON@142..158 ";" [] [Whitespace(" "), Comments("// () => U")], - }, - JsVariableStatement { - declaration: JsVariableDeclaration { - kind: CONST_KW@158..165 "const" [Newline("\n")] [Whitespace(" ")], - declarators: JsVariableDeclaratorList [ - JsVariableDeclarator { - id: JsIdentifierBinding { - name_token: IDENT@165..168 "a4" [] [Whitespace(" ")], - }, - variable_annotation: missing (optional), - initializer: JsInitializerClause { - eq_token: EQ@168..170 "=" [] [Whitespace(" ")], - expression: TsInstantiationExpression { - expression: JsStaticMemberExpression { - object: TsInstantiationExpression { - expression: JsIdentifierExpression { - name: JsReferenceIdentifier { - value_token: IDENT@170..171 "f" [] [], - }, - }, - arguments: TsTypeArguments { - l_angle_token: L_ANGLE@171..172 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsNumberType { - number_token: NUMBER_KW@172..178 "number" [] [], - }, - ], - r_angle_token: R_ANGLE@178..179 ">" [] [], - }, - }, - operator_token: DOT@179..180 "." [] [], - member: JsName { - value_token: IDENT@180..181 "g" [] [], - }, - }, - arguments: TsTypeArguments { - l_angle_token: L_ANGLE@181..182 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsNumberType { - number_token: NUMBER_KW@182..188 "number" [] [], - }, - ], - r_angle_token: R_ANGLE@188..189 ">" [] [], - }, - }, - }, - }, - ], - }, - semicolon_token: SEMICOLON@189..207 ";" [] [Whitespace(" "), Comments("// () => number")], - }, - JsVariableStatement { - declaration: JsVariableDeclaration { - kind: CONST_KW@207..214 "const" [Newline("\n")] [Whitespace(" ")], - declarators: JsVariableDeclaratorList [ - JsVariableDeclarator { - id: JsIdentifierBinding { - name_token: IDENT@214..217 "a5" [] [Whitespace(" ")], - }, - variable_annotation: missing (optional), - initializer: JsInitializerClause { - eq_token: EQ@217..219 "=" [] [Whitespace(" ")], expression: TsInstantiationExpression { expression: JsComputedMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@219..220 "f" [] [], + value_token: IDENT@131..132 "f" [] [], }, }, optional_chain_token: missing (optional), - l_brack_token: L_BRACK@220..221 "[" [] [], + l_brack_token: L_BRACK@132..133 "[" [] [], member: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@221..224 "'g'" [] [], + value_token: JS_STRING_LITERAL@133..136 "'g'" [] [], }, - r_brack_token: R_BRACK@224..225 "]" [] [], + r_brack_token: R_BRACK@136..137 "]" [] [], }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@225..226 "<" [] [], + l_angle_token: L_ANGLE@137..138 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsNumberType { - number_token: NUMBER_KW@226..232 "number" [] [], + number_token: NUMBER_KW@138..144 "number" [] [], }, ], - r_angle_token: R_ANGLE@232..233 ">" [] [], + r_angle_token: R_ANGLE@144..145 ">" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@233..251 ";" [] [Whitespace(" "), Comments("// () => number")], + semicolon_token: SEMICOLON@145..163 ";" [] [Whitespace(" "), Comments("// () => number")], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@251..258 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@163..170 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@258..261 "a7" [] [Whitespace(" ")], + name_token: IDENT@170..173 "a7" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@261..263 "=" [] [Whitespace(" ")], + eq_token: EQ@173..175 "=" [] [Whitespace(" ")], expression: JsComputedMemberExpression { object: JsParenthesizedExpression { - l_paren_token: L_PAREN@263..264 "(" [] [], + l_paren_token: L_PAREN@175..176 "(" [] [], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@264..265 "f" [] [], + value_token: IDENT@176..177 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@265..266 "<" [] [], + l_angle_token: L_ANGLE@177..178 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsNumberType { - number_token: NUMBER_KW@266..272 "number" [] [], + number_token: NUMBER_KW@178..184 "number" [] [], }, ], - r_angle_token: R_ANGLE@272..273 ">" [] [], + r_angle_token: R_ANGLE@184..185 ">" [] [], }, }, - r_paren_token: R_PAREN@273..274 ")" [] [], + r_paren_token: R_PAREN@185..186 ")" [] [], }, optional_chain_token: missing (optional), - l_brack_token: L_BRACK@274..275 "[" [] [], + l_brack_token: L_BRACK@186..187 "[" [] [], member: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@275..278 "'g'" [] [], + value_token: JS_STRING_LITERAL@187..190 "'g'" [] [], }, - r_brack_token: R_BRACK@278..279 "]" [] [], + r_brack_token: R_BRACK@190..191 "]" [] [], }, }, }, ], }, - semicolon_token: SEMICOLON@279..280 ";" [] [], + semicolon_token: SEMICOLON@191..192 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@280..287 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@192..199 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@287..290 "a6" [] [Whitespace(" ")], + name_token: IDENT@199..202 "a6" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@290..292 "=" [] [Whitespace(" ")], + eq_token: EQ@202..204 "=" [] [Whitespace(" ")], expression: JsBinaryExpression { left: JsBinaryExpression { left: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@292..293 "f" [] [], + value_token: IDENT@204..205 "f" [] [], }, }, - operator_token: L_ANGLE@293..294 "<" [] [], + operator_token: L_ANGLE@205..206 "<" [] [], right: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@294..300 "number" [] [], + value_token: IDENT@206..212 "number" [] [], }, }, }, - operator_token: R_ANGLE@300..301 ">" [] [], + operator_token: R_ANGLE@212..213 ">" [] [], right: JsArrayExpression { - l_brack_token: L_BRACK@301..302 "[" [] [], + l_brack_token: L_BRACK@213..214 "[" [] [], elements: JsArrayElementList [ JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@302..305 "'g'" [] [], + value_token: JS_STRING_LITERAL@214..217 "'g'" [] [], }, ], - r_brack_token: R_BRACK@305..306 "]" [] [], + r_brack_token: R_BRACK@217..218 "]" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@306..322 ";" [] [Whitespace(" "), Comments("// type Error")], + semicolon_token: SEMICOLON@218..234 ";" [] [Whitespace(" "), Comments("// type Error")], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@322..329 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@234..241 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@329..332 "b2" [] [Whitespace(" ")], + name_token: IDENT@241..244 "b2" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@332..334 "=" [] [Whitespace(" ")], + eq_token: EQ@244..246 "=" [] [Whitespace(" ")], expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@334..335 "f" [] [], + value_token: IDENT@246..247 "f" [] [], }, }, - optional_chain_token: QUESTIONDOT@335..337 "?." [] [], + optional_chain_token: QUESTIONDOT@247..249 "?." [] [], type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@337..338 "<" [] [], + l_angle_token: L_ANGLE@249..250 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsNumberType { - number_token: NUMBER_KW@338..344 "number" [] [], + number_token: NUMBER_KW@250..256 "number" [] [], }, ], - r_angle_token: R_ANGLE@344..345 ">" [] [], + r_angle_token: R_ANGLE@256..257 ">" [] [], }, arguments: JsCallArguments { - l_paren_token: L_PAREN@345..346 "(" [] [], + l_paren_token: L_PAREN@257..258 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@346..347 ")" [] [], + r_paren_token: R_PAREN@258..259 ")" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@347..348 ";" [] [], + semicolon_token: SEMICOLON@259..260 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@348..355 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@260..267 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@355..358 "b3" [] [Whitespace(" ")], + name_token: IDENT@267..270 "b3" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@358..360 "=" [] [Whitespace(" ")], + eq_token: EQ@270..272 "=" [] [Whitespace(" ")], expression: JsCallExpression { callee: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@360..361 "f" [] [], + value_token: IDENT@272..273 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@361..362 "<" [] [], + l_angle_token: L_ANGLE@273..274 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsNumberType { - number_token: NUMBER_KW@362..368 "number" [] [], + number_token: NUMBER_KW@274..280 "number" [] [], }, ], - r_angle_token: R_ANGLE@368..369 ">" [] [], + r_angle_token: R_ANGLE@280..281 ">" [] [], }, }, - optional_chain_token: QUESTIONDOT@369..371 "?." [] [], + optional_chain_token: QUESTIONDOT@281..283 "?." [] [], type_arguments: missing (optional), arguments: JsCallArguments { - l_paren_token: L_PAREN@371..372 "(" [] [], + l_paren_token: L_PAREN@283..284 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@372..373 ")" [] [], + r_paren_token: R_PAREN@284..285 ")" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@373..374 ";" [] [], + semicolon_token: SEMICOLON@285..286 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@374..381 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@286..293 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@381..384 "b4" [] [Whitespace(" ")], + name_token: IDENT@293..296 "b4" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@384..386 "=" [] [Whitespace(" ")], + eq_token: EQ@296..298 "=" [] [Whitespace(" ")], expression: JsCallExpression { callee: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@386..387 "f" [] [], + value_token: IDENT@298..299 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@387..388 "<" [] [], + l_angle_token: L_ANGLE@299..300 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsNumberType { - number_token: NUMBER_KW@388..394 "number" [] [], + number_token: NUMBER_KW@300..306 "number" [] [], }, ], - r_angle_token: R_ANGLE@394..395 ">" [] [], + r_angle_token: R_ANGLE@306..307 ">" [] [], }, }, - optional_chain_token: QUESTIONDOT@395..397 "?." [] [], + optional_chain_token: QUESTIONDOT@307..309 "?." [] [], type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@397..398 "<" [] [], + l_angle_token: L_ANGLE@309..310 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsNumberType { - number_token: NUMBER_KW@398..404 "number" [] [], + number_token: NUMBER_KW@310..316 "number" [] [], }, ], - r_angle_token: R_ANGLE@404..405 ">" [] [], + r_angle_token: R_ANGLE@316..317 ">" [] [], }, arguments: JsCallArguments { - l_paren_token: L_PAREN@405..406 "(" [] [], + l_paren_token: L_PAREN@317..318 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@406..407 ")" [] [], + r_paren_token: R_PAREN@318..319 ")" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@407..451 ";" [] [Whitespace(" "), Comments("// Type Error, expect ...")], + semicolon_token: SEMICOLON@319..363 ";" [] [Whitespace(" "), Comments("// Type Error, expect ...")], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@451..458 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@363..370 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@458..461 "x1" [] [Whitespace(" ")], + name_token: IDENT@370..373 "x1" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@461..463 "=" [] [Whitespace(" ")], + eq_token: EQ@373..375 "=" [] [Whitespace(" ")], expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@463..464 "f" [] [], + value_token: IDENT@375..376 "f" [] [], }, }, optional_chain_token: missing (optional), type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@464..465 "<" [] [], + l_angle_token: L_ANGLE@376..377 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsBooleanLiteralType { - literal: TRUE_KW@465..469 "true" [] [], + literal: TRUE_KW@377..381 "true" [] [], }, ], - r_angle_token: R_ANGLE@469..470 ">" [] [], + r_angle_token: R_ANGLE@381..382 ">" [] [], }, arguments: JsCallArguments { - l_paren_token: L_PAREN@470..472 "(" [Newline("\n")] [], + l_paren_token: L_PAREN@382..384 "(" [Newline("\n")] [], args: JsCallArgumentList [ JsBooleanLiteralExpression { - value_token: TRUE_KW@472..476 "true" [] [], + value_token: TRUE_KW@384..388 "true" [] [], }, ], - r_paren_token: R_PAREN@476..477 ")" [] [], + r_paren_token: R_PAREN@388..389 ")" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@477..478 ";" [] [], + semicolon_token: SEMICOLON@389..390 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@478..485 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@390..397 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@485..488 "x2" [] [Whitespace(" ")], + name_token: IDENT@397..400 "x2" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@488..490 "=" [] [Whitespace(" ")], + eq_token: EQ@400..402 "=" [] [Whitespace(" ")], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@490..491 "f" [] [], + value_token: IDENT@402..403 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@491..492 "<" [] [], + l_angle_token: L_ANGLE@403..404 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsBooleanLiteralType { - literal: TRUE_KW@492..496 "true" [] [], + literal: TRUE_KW@404..408 "true" [] [], }, ], - r_angle_token: R_ANGLE@496..497 ">" [] [], + r_angle_token: R_ANGLE@408..409 ">" [] [], }, }, }, @@ -578,511 +489,511 @@ JsModule { }, JsExpressionStatement { expression: JsBooleanLiteralExpression { - value_token: TRUE_KW@497..502 "true" [Newline("\n")] [], + value_token: TRUE_KW@409..414 "true" [Newline("\n")] [], }, - semicolon_token: SEMICOLON@502..503 ";" [] [], + semicolon_token: SEMICOLON@414..415 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@503..510 "const" [Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@415..422 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@510..513 "x3" [] [Whitespace(" ")], + name_token: IDENT@422..425 "x3" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@513..515 "=" [] [Whitespace(" ")], + eq_token: EQ@425..427 "=" [] [Whitespace(" ")], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@515..516 "f" [] [], + value_token: IDENT@427..428 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@516..517 "<" [] [], + l_angle_token: L_ANGLE@428..429 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsBooleanLiteralType { - literal: TRUE_KW@517..521 "true" [] [], + literal: TRUE_KW@429..433 "true" [] [], }, ], - r_angle_token: R_ANGLE@521..522 ">" [] [], + r_angle_token: R_ANGLE@433..434 ">" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@522..523 ";" [] [], + semicolon_token: SEMICOLON@434..435 ";" [] [], }, JsExpressionStatement { expression: JsBooleanLiteralExpression { - value_token: TRUE_KW@523..528 "true" [Newline("\n")] [], + value_token: TRUE_KW@435..440 "true" [Newline("\n")] [], }, - semicolon_token: SEMICOLON@528..529 ";" [] [], + semicolon_token: SEMICOLON@440..441 ";" [] [], }, JsExpressionStatement { expression: TsInstantiationExpression { expression: JsParenthesizedExpression { - l_paren_token: L_PAREN@529..531 "(" [Newline("\n")] [], + l_paren_token: L_PAREN@441..443 "(" [Newline("\n")] [], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@531..532 "f" [] [], + value_token: IDENT@443..444 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@532..533 "<" [] [], + l_angle_token: L_ANGLE@444..445 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@533..534 "T" [] [], + value_token: IDENT@445..446 "T" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@534..535 ">" [] [], + r_angle_token: R_ANGLE@446..447 ">" [] [], }, }, - r_paren_token: R_PAREN@535..536 ")" [] [], + r_paren_token: R_PAREN@447..448 ")" [] [], }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@536..537 "<" [] [], + l_angle_token: L_ANGLE@448..449 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@537..538 "K" [] [], + value_token: IDENT@449..450 "K" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@538..539 ">" [] [], + r_angle_token: R_ANGLE@450..451 ">" [] [], }, }, - semicolon_token: SEMICOLON@539..540 ";" [] [], + semicolon_token: SEMICOLON@451..452 ";" [] [], }, JsExpressionStatement { expression: JsCallExpression { callee: JsParenthesizedExpression { - l_paren_token: L_PAREN@540..542 "(" [Newline("\n")] [], + l_paren_token: L_PAREN@452..454 "(" [Newline("\n")] [], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@542..543 "f" [] [], + value_token: IDENT@454..455 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@543..544 "<" [] [], + l_angle_token: L_ANGLE@455..456 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@544..545 "T" [] [], + value_token: IDENT@456..457 "T" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@545..546 ">" [] [], + r_angle_token: R_ANGLE@457..458 ">" [] [], }, }, - r_paren_token: R_PAREN@546..547 ")" [] [], + r_paren_token: R_PAREN@458..459 ")" [] [], }, optional_chain_token: missing (optional), type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@547..548 "<" [] [], + l_angle_token: L_ANGLE@459..460 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@548..549 "K" [] [], + value_token: IDENT@460..461 "K" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@549..550 ">" [] [], + r_angle_token: R_ANGLE@461..462 ">" [] [], }, arguments: JsCallArguments { - l_paren_token: L_PAREN@550..551 "(" [] [], + l_paren_token: L_PAREN@462..463 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@551..552 ")" [] [], + r_paren_token: R_PAREN@463..464 ")" [] [], }, }, - semicolon_token: SEMICOLON@552..553 ";" [] [], + semicolon_token: SEMICOLON@464..465 ";" [] [], }, JsExpressionStatement { expression: JsCallExpression { callee: TsInstantiationExpression { expression: JsParenthesizedExpression { - l_paren_token: L_PAREN@553..555 "(" [Newline("\n")] [], + l_paren_token: L_PAREN@465..467 "(" [Newline("\n")] [], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@555..556 "f" [] [], + value_token: IDENT@467..468 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@556..557 "<" [] [], + l_angle_token: L_ANGLE@468..469 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@557..558 "T" [] [], + value_token: IDENT@469..470 "T" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@558..559 ">" [] [], + r_angle_token: R_ANGLE@470..471 ">" [] [], }, }, - r_paren_token: R_PAREN@559..560 ")" [] [], + r_paren_token: R_PAREN@471..472 ")" [] [], }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@560..561 "<" [] [], + l_angle_token: L_ANGLE@472..473 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@561..562 "K" [] [], + value_token: IDENT@473..474 "K" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@562..563 ">" [] [], + r_angle_token: R_ANGLE@474..475 ">" [] [], }, }, - optional_chain_token: QUESTIONDOT@563..565 "?." [] [], + optional_chain_token: QUESTIONDOT@475..477 "?." [] [], type_arguments: missing (optional), arguments: JsCallArguments { - l_paren_token: L_PAREN@565..566 "(" [] [], + l_paren_token: L_PAREN@477..478 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@566..567 ")" [] [], + r_paren_token: R_PAREN@478..479 ")" [] [], }, }, - semicolon_token: SEMICOLON@567..568 ";" [] [], + semicolon_token: SEMICOLON@479..480 ";" [] [], }, JsExpressionStatement { expression: JsCallExpression { callee: JsParenthesizedExpression { - l_paren_token: L_PAREN@568..570 "(" [Newline("\n")] [], + l_paren_token: L_PAREN@480..482 "(" [Newline("\n")] [], expression: TsInstantiationExpression { expression: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@570..571 "a" [] [], + value_token: IDENT@482..483 "a" [] [], }, }, - operator_token: QUESTIONDOT@571..573 "?." [] [], + operator_token: QUESTIONDOT@483..485 "?." [] [], member: JsName { - value_token: IDENT@573..574 "f" [] [], + value_token: IDENT@485..486 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@574..575 "<" [] [], + l_angle_token: L_ANGLE@486..487 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@575..576 "T" [] [], + value_token: IDENT@487..488 "T" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@576..577 ">" [] [], + r_angle_token: R_ANGLE@488..489 ">" [] [], }, }, - r_paren_token: R_PAREN@577..578 ")" [] [], + r_paren_token: R_PAREN@489..490 ")" [] [], }, optional_chain_token: missing (optional), type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@578..579 "<" [] [], + l_angle_token: L_ANGLE@490..491 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@579..580 "K" [] [], + value_token: IDENT@491..492 "K" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@580..581 ">" [] [], + r_angle_token: R_ANGLE@492..493 ">" [] [], }, arguments: JsCallArguments { - l_paren_token: L_PAREN@581..582 "(" [] [], + l_paren_token: L_PAREN@493..494 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@582..583 ")" [] [], + r_paren_token: R_PAREN@494..495 ")" [] [], }, }, - semicolon_token: SEMICOLON@583..584 ";" [] [], + semicolon_token: SEMICOLON@495..496 ";" [] [], }, JsExpressionStatement { expression: JsNewExpression { - new_token: NEW_KW@584..589 "new" [Newline("\n")] [Whitespace(" ")], + new_token: NEW_KW@496..501 "new" [Newline("\n")] [Whitespace(" ")], callee: JsParenthesizedExpression { - l_paren_token: L_PAREN@589..590 "(" [] [], + l_paren_token: L_PAREN@501..502 "(" [] [], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@590..591 "a" [] [], + value_token: IDENT@502..503 "a" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@591..592 "<" [] [], + l_angle_token: L_ANGLE@503..504 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@592..593 "T" [] [], + value_token: IDENT@504..505 "T" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@593..594 ">" [] [], + r_angle_token: R_ANGLE@505..506 ">" [] [], }, }, - r_paren_token: R_PAREN@594..595 ")" [] [], + r_paren_token: R_PAREN@506..507 ")" [] [], }, type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@595..596 "<" [] [], + l_angle_token: L_ANGLE@507..508 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@596..597 "K" [] [], + value_token: IDENT@508..509 "K" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@597..598 ">" [] [], + r_angle_token: R_ANGLE@509..510 ">" [] [], }, arguments: JsCallArguments { - l_paren_token: L_PAREN@598..599 "(" [] [], + l_paren_token: L_PAREN@510..511 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@599..600 ")" [] [], + r_paren_token: R_PAREN@511..512 ")" [] [], }, }, - semicolon_token: SEMICOLON@600..601 ";" [] [], + semicolon_token: SEMICOLON@512..513 ";" [] [], }, JsExpressionStatement { expression: JsCallExpression { callee: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@601..603 "f" [Newline("\n")] [], + value_token: IDENT@513..515 "f" [Newline("\n")] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@603..604 "<" [] [], + l_angle_token: L_ANGLE@515..516 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsFunctionType { type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@604..605 "<" [] [], + l_angle_token: L_ANGLE@516..517 "<" [] [], items: TsTypeParameterList [ TsTypeParameter { name: TsTypeParameterName { - ident_token: IDENT@605..606 "T" [] [], + ident_token: IDENT@517..518 "T" [] [], }, constraint: missing (optional), default: missing (optional), }, ], - r_angle_token: R_ANGLE@606..607 ">" [] [], + r_angle_token: R_ANGLE@518..519 ">" [] [], }, parameters: JsParameters { - l_paren_token: L_PAREN@607..608 "(" [] [], + l_paren_token: L_PAREN@519..520 "(" [] [], items: JsParameterList [], - r_paren_token: R_PAREN@608..610 ")" [] [Whitespace(" ")], + r_paren_token: R_PAREN@520..522 ")" [] [Whitespace(" ")], }, - fat_arrow_token: FAT_ARROW@610..613 "=>" [] [Whitespace(" ")], + fat_arrow_token: FAT_ARROW@522..525 "=>" [] [Whitespace(" ")], return_type: TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@613..614 "T" [] [], + value_token: IDENT@525..526 "T" [] [], }, type_arguments: missing (optional), }, }, ], - r_angle_token: R_ANGLE@614..615 ">" [] [], + r_angle_token: R_ANGLE@526..527 ">" [] [], }, }, - optional_chain_token: QUESTIONDOT@615..617 "?." [] [], + optional_chain_token: QUESTIONDOT@527..529 "?." [] [], type_arguments: missing (optional), arguments: JsCallArguments { - l_paren_token: L_PAREN@617..618 "(" [] [], + l_paren_token: L_PAREN@529..530 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@618..619 ")" [] [], + r_paren_token: R_PAREN@530..531 ")" [] [], }, }, - semicolon_token: SEMICOLON@619..620 ";" [] [], + semicolon_token: SEMICOLON@531..532 ";" [] [], }, JsExpressionStatement { expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@620..622 "f" [Newline("\n")] [], + value_token: IDENT@532..534 "f" [Newline("\n")] [], }, }, - optional_chain_token: QUESTIONDOT@622..624 "?." [] [], + optional_chain_token: QUESTIONDOT@534..536 "?." [] [], type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@624..625 "<" [] [], + l_angle_token: L_ANGLE@536..537 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsFunctionType { type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@625..626 "<" [] [], + l_angle_token: L_ANGLE@537..538 "<" [] [], items: TsTypeParameterList [ TsTypeParameter { name: TsTypeParameterName { - ident_token: IDENT@626..627 "T" [] [], + ident_token: IDENT@538..539 "T" [] [], }, constraint: missing (optional), default: missing (optional), }, ], - r_angle_token: R_ANGLE@627..628 ">" [] [], + r_angle_token: R_ANGLE@539..540 ">" [] [], }, parameters: JsParameters { - l_paren_token: L_PAREN@628..629 "(" [] [], + l_paren_token: L_PAREN@540..541 "(" [] [], items: JsParameterList [], - r_paren_token: R_PAREN@629..631 ")" [] [Whitespace(" ")], + r_paren_token: R_PAREN@541..543 ")" [] [Whitespace(" ")], }, - fat_arrow_token: FAT_ARROW@631..634 "=>" [] [Whitespace(" ")], + fat_arrow_token: FAT_ARROW@543..546 "=>" [] [Whitespace(" ")], return_type: TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@634..635 "T" [] [], + value_token: IDENT@546..547 "T" [] [], }, type_arguments: missing (optional), }, }, ], - r_angle_token: R_ANGLE@635..636 ">" [] [], + r_angle_token: R_ANGLE@547..548 ">" [] [], }, arguments: JsCallArguments { - l_paren_token: L_PAREN@636..637 "(" [] [], + l_paren_token: L_PAREN@548..549 "(" [] [], args: JsCallArgumentList [], - r_paren_token: R_PAREN@637..638 ")" [] [], + r_paren_token: R_PAREN@549..550 ")" [] [], }, }, - semicolon_token: SEMICOLON@638..639 ";" [] [], + semicolon_token: SEMICOLON@550..551 ";" [] [], }, JsExpressionStatement { expression: JsConditionalExpression { test: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@639..641 "f" [Newline("\n")] [], + value_token: IDENT@551..553 "f" [Newline("\n")] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@641..642 "<" [] [], + l_angle_token: L_ANGLE@553..554 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@642..643 "x" [] [], + value_token: IDENT@554..555 "x" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@643..645 ">" [] [Whitespace(" ")], + r_angle_token: R_ANGLE@555..557 ">" [] [Whitespace(" ")], }, }, - question_mark_token: QUESTION@645..647 "?" [] [Whitespace(" ")], + question_mark_token: QUESTION@557..559 "?" [] [Whitespace(" ")], consequent: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@647..648 "g" [] [], + value_token: IDENT@559..560 "g" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@648..649 "<" [] [], + l_angle_token: L_ANGLE@560..561 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@649..650 "y" [] [], + value_token: IDENT@561..562 "y" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@650..652 ">" [] [Whitespace(" ")], + r_angle_token: R_ANGLE@562..564 ">" [] [Whitespace(" ")], }, }, - colon_token: COLON@652..654 ":" [] [Whitespace(" ")], + colon_token: COLON@564..566 ":" [] [Whitespace(" ")], alternate: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@654..655 "h" [] [], + value_token: IDENT@566..567 "h" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@655..656 "<" [] [], + l_angle_token: L_ANGLE@567..568 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@656..657 "z" [] [], + value_token: IDENT@568..569 "z" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@657..658 ">" [] [], + r_angle_token: R_ANGLE@569..570 ">" [] [], }, }, }, - semicolon_token: SEMICOLON@658..659 ";" [] [], + semicolon_token: SEMICOLON@570..571 ";" [] [], }, JsExpressionStatement { expression: JsArrayExpression { - l_brack_token: L_BRACK@659..661 "[" [Newline("\n")] [], + l_brack_token: L_BRACK@571..573 "[" [Newline("\n")] [], elements: JsArrayElementList [ TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@661..662 "f" [] [], + value_token: IDENT@573..574 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@662..663 "<" [] [], + l_angle_token: L_ANGLE@574..575 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@663..664 "x" [] [], + value_token: IDENT@575..576 "x" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@664..665 ">" [] [], + r_angle_token: R_ANGLE@576..577 ">" [] [], }, }, ], - r_brack_token: R_BRACK@665..666 "]" [] [], + r_brack_token: R_BRACK@577..578 "]" [] [], }, - semicolon_token: SEMICOLON@666..667 ";" [] [], + semicolon_token: SEMICOLON@578..579 ";" [] [], }, JsBlockStatement { - l_curly_token: L_CURLY@667..670 "{" [Newline("\n")] [Whitespace(" ")], + l_curly_token: L_CURLY@579..582 "{" [Newline("\n")] [Whitespace(" ")], statements: JsStatementList [ JsExpressionStatement { expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@670..671 "f" [] [], + value_token: IDENT@582..583 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@671..672 "<" [] [], + l_angle_token: L_ANGLE@583..584 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsReferenceType { name: JsReferenceIdentifier { - value_token: IDENT@672..673 "x" [] [], + value_token: IDENT@584..585 "x" [] [], }, type_arguments: missing (optional), }, ], - r_angle_token: R_ANGLE@673..675 ">" [] [Whitespace(" ")], + r_angle_token: R_ANGLE@585..587 ">" [] [Whitespace(" ")], }, }, semicolon_token: missing (optional), }, ], - r_curly_token: R_CURLY@675..676 "}" [] [], + r_curly_token: R_CURLY@587..588 "}" [] [], }, ], - eof_token: EOF@676..677 "" [Newline("\n")] [], + eof_token: EOF@588..589 "" [Newline("\n")] [], } -0: JS_MODULE@0..677 +0: JS_MODULE@0..589 0: (empty) 1: JS_DIRECTIVE_LIST@0..0 - 2: JS_MODULE_ITEM_LIST@0..676 + 2: JS_MODULE_ITEM_LIST@0..588 0: JS_VARIABLE_STATEMENT@0..20 0: JS_VARIABLE_DECLARATION@0..19 0: LET_KW@0..4 "let" [] [Whitespace(" ")] @@ -1180,613 +1091,556 @@ JsModule { 0: NUMBER_KW@94..100 "number" [] [] 2: R_ANGLE@100..101 ">" [] [] 1: SEMICOLON@101..119 ";" [] [Whitespace(" "), Comments("// () => number")] - 4: JS_VARIABLE_STATEMENT@119..158 - 0: JS_VARIABLE_DECLARATION@119..142 + 4: JS_VARIABLE_STATEMENT@119..163 + 0: JS_VARIABLE_DECLARATION@119..145 0: CONST_KW@119..126 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@126..142 - 0: JS_VARIABLE_DECLARATOR@126..142 + 1: JS_VARIABLE_DECLARATOR_LIST@126..145 + 0: JS_VARIABLE_DECLARATOR@126..145 0: JS_IDENTIFIER_BINDING@126..129 - 0: IDENT@126..129 "a3" [] [Whitespace(" ")] + 0: IDENT@126..129 "a5" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@129..142 + 2: JS_INITIALIZER_CLAUSE@129..145 0: EQ@129..131 "=" [] [Whitespace(" ")] - 1: JS_STATIC_MEMBER_EXPRESSION@131..142 - 0: TS_INSTANTIATION_EXPRESSION@131..140 + 1: TS_INSTANTIATION_EXPRESSION@131..145 + 0: JS_COMPUTED_MEMBER_EXPRESSION@131..137 0: JS_IDENTIFIER_EXPRESSION@131..132 0: JS_REFERENCE_IDENTIFIER@131..132 0: IDENT@131..132 "f" [] [] - 1: TS_TYPE_ARGUMENTS@132..140 - 0: L_ANGLE@132..133 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@133..139 - 0: TS_NUMBER_TYPE@133..139 - 0: NUMBER_KW@133..139 "number" [] [] - 2: R_ANGLE@139..140 ">" [] [] - 1: DOT@140..141 "." [] [] - 2: JS_NAME@141..142 - 0: IDENT@141..142 "g" [] [] - 1: SEMICOLON@142..158 ";" [] [Whitespace(" "), Comments("// () => U")] - 5: JS_VARIABLE_STATEMENT@158..207 - 0: JS_VARIABLE_DECLARATION@158..189 - 0: CONST_KW@158..165 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@165..189 - 0: JS_VARIABLE_DECLARATOR@165..189 - 0: JS_IDENTIFIER_BINDING@165..168 - 0: IDENT@165..168 "a4" [] [Whitespace(" ")] - 1: (empty) - 2: JS_INITIALIZER_CLAUSE@168..189 - 0: EQ@168..170 "=" [] [Whitespace(" ")] - 1: TS_INSTANTIATION_EXPRESSION@170..189 - 0: JS_STATIC_MEMBER_EXPRESSION@170..181 - 0: TS_INSTANTIATION_EXPRESSION@170..179 - 0: JS_IDENTIFIER_EXPRESSION@170..171 - 0: JS_REFERENCE_IDENTIFIER@170..171 - 0: IDENT@170..171 "f" [] [] - 1: TS_TYPE_ARGUMENTS@171..179 - 0: L_ANGLE@171..172 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@172..178 - 0: TS_NUMBER_TYPE@172..178 - 0: NUMBER_KW@172..178 "number" [] [] - 2: R_ANGLE@178..179 ">" [] [] - 1: DOT@179..180 "." [] [] - 2: JS_NAME@180..181 - 0: IDENT@180..181 "g" [] [] - 1: TS_TYPE_ARGUMENTS@181..189 - 0: L_ANGLE@181..182 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@182..188 - 0: TS_NUMBER_TYPE@182..188 - 0: NUMBER_KW@182..188 "number" [] [] - 2: R_ANGLE@188..189 ">" [] [] - 1: SEMICOLON@189..207 ";" [] [Whitespace(" "), Comments("// () => number")] - 6: JS_VARIABLE_STATEMENT@207..251 - 0: JS_VARIABLE_DECLARATION@207..233 - 0: CONST_KW@207..214 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@214..233 - 0: JS_VARIABLE_DECLARATOR@214..233 - 0: JS_IDENTIFIER_BINDING@214..217 - 0: IDENT@214..217 "a5" [] [Whitespace(" ")] - 1: (empty) - 2: JS_INITIALIZER_CLAUSE@217..233 - 0: EQ@217..219 "=" [] [Whitespace(" ")] - 1: TS_INSTANTIATION_EXPRESSION@219..233 - 0: JS_COMPUTED_MEMBER_EXPRESSION@219..225 - 0: JS_IDENTIFIER_EXPRESSION@219..220 - 0: JS_REFERENCE_IDENTIFIER@219..220 - 0: IDENT@219..220 "f" [] [] 1: (empty) - 2: L_BRACK@220..221 "[" [] [] - 3: JS_STRING_LITERAL_EXPRESSION@221..224 - 0: JS_STRING_LITERAL@221..224 "'g'" [] [] - 4: R_BRACK@224..225 "]" [] [] - 1: TS_TYPE_ARGUMENTS@225..233 - 0: L_ANGLE@225..226 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@226..232 - 0: TS_NUMBER_TYPE@226..232 - 0: NUMBER_KW@226..232 "number" [] [] - 2: R_ANGLE@232..233 ">" [] [] - 1: SEMICOLON@233..251 ";" [] [Whitespace(" "), Comments("// () => number")] - 7: JS_VARIABLE_STATEMENT@251..280 - 0: JS_VARIABLE_DECLARATION@251..279 - 0: CONST_KW@251..258 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@258..279 - 0: JS_VARIABLE_DECLARATOR@258..279 - 0: JS_IDENTIFIER_BINDING@258..261 - 0: IDENT@258..261 "a7" [] [Whitespace(" ")] + 2: L_BRACK@132..133 "[" [] [] + 3: JS_STRING_LITERAL_EXPRESSION@133..136 + 0: JS_STRING_LITERAL@133..136 "'g'" [] [] + 4: R_BRACK@136..137 "]" [] [] + 1: TS_TYPE_ARGUMENTS@137..145 + 0: L_ANGLE@137..138 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@138..144 + 0: TS_NUMBER_TYPE@138..144 + 0: NUMBER_KW@138..144 "number" [] [] + 2: R_ANGLE@144..145 ">" [] [] + 1: SEMICOLON@145..163 ";" [] [Whitespace(" "), Comments("// () => number")] + 5: JS_VARIABLE_STATEMENT@163..192 + 0: JS_VARIABLE_DECLARATION@163..191 + 0: CONST_KW@163..170 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@170..191 + 0: JS_VARIABLE_DECLARATOR@170..191 + 0: JS_IDENTIFIER_BINDING@170..173 + 0: IDENT@170..173 "a7" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@261..279 - 0: EQ@261..263 "=" [] [Whitespace(" ")] - 1: JS_COMPUTED_MEMBER_EXPRESSION@263..279 - 0: JS_PARENTHESIZED_EXPRESSION@263..274 - 0: L_PAREN@263..264 "(" [] [] - 1: TS_INSTANTIATION_EXPRESSION@264..273 - 0: JS_IDENTIFIER_EXPRESSION@264..265 - 0: JS_REFERENCE_IDENTIFIER@264..265 - 0: IDENT@264..265 "f" [] [] - 1: TS_TYPE_ARGUMENTS@265..273 - 0: L_ANGLE@265..266 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@266..272 - 0: TS_NUMBER_TYPE@266..272 - 0: NUMBER_KW@266..272 "number" [] [] - 2: R_ANGLE@272..273 ">" [] [] - 2: R_PAREN@273..274 ")" [] [] + 2: JS_INITIALIZER_CLAUSE@173..191 + 0: EQ@173..175 "=" [] [Whitespace(" ")] + 1: JS_COMPUTED_MEMBER_EXPRESSION@175..191 + 0: JS_PARENTHESIZED_EXPRESSION@175..186 + 0: L_PAREN@175..176 "(" [] [] + 1: TS_INSTANTIATION_EXPRESSION@176..185 + 0: JS_IDENTIFIER_EXPRESSION@176..177 + 0: JS_REFERENCE_IDENTIFIER@176..177 + 0: IDENT@176..177 "f" [] [] + 1: TS_TYPE_ARGUMENTS@177..185 + 0: L_ANGLE@177..178 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@178..184 + 0: TS_NUMBER_TYPE@178..184 + 0: NUMBER_KW@178..184 "number" [] [] + 2: R_ANGLE@184..185 ">" [] [] + 2: R_PAREN@185..186 ")" [] [] 1: (empty) - 2: L_BRACK@274..275 "[" [] [] - 3: JS_STRING_LITERAL_EXPRESSION@275..278 - 0: JS_STRING_LITERAL@275..278 "'g'" [] [] - 4: R_BRACK@278..279 "]" [] [] - 1: SEMICOLON@279..280 ";" [] [] - 8: JS_VARIABLE_STATEMENT@280..322 - 0: JS_VARIABLE_DECLARATION@280..306 - 0: CONST_KW@280..287 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@287..306 - 0: JS_VARIABLE_DECLARATOR@287..306 - 0: JS_IDENTIFIER_BINDING@287..290 - 0: IDENT@287..290 "a6" [] [Whitespace(" ")] + 2: L_BRACK@186..187 "[" [] [] + 3: JS_STRING_LITERAL_EXPRESSION@187..190 + 0: JS_STRING_LITERAL@187..190 "'g'" [] [] + 4: R_BRACK@190..191 "]" [] [] + 1: SEMICOLON@191..192 ";" [] [] + 6: JS_VARIABLE_STATEMENT@192..234 + 0: JS_VARIABLE_DECLARATION@192..218 + 0: CONST_KW@192..199 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@199..218 + 0: JS_VARIABLE_DECLARATOR@199..218 + 0: JS_IDENTIFIER_BINDING@199..202 + 0: IDENT@199..202 "a6" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@290..306 - 0: EQ@290..292 "=" [] [Whitespace(" ")] - 1: JS_BINARY_EXPRESSION@292..306 - 0: JS_BINARY_EXPRESSION@292..300 - 0: JS_IDENTIFIER_EXPRESSION@292..293 - 0: JS_REFERENCE_IDENTIFIER@292..293 - 0: IDENT@292..293 "f" [] [] - 1: L_ANGLE@293..294 "<" [] [] - 2: JS_IDENTIFIER_EXPRESSION@294..300 - 0: JS_REFERENCE_IDENTIFIER@294..300 - 0: IDENT@294..300 "number" [] [] - 1: R_ANGLE@300..301 ">" [] [] - 2: JS_ARRAY_EXPRESSION@301..306 - 0: L_BRACK@301..302 "[" [] [] - 1: JS_ARRAY_ELEMENT_LIST@302..305 - 0: JS_STRING_LITERAL_EXPRESSION@302..305 - 0: JS_STRING_LITERAL@302..305 "'g'" [] [] - 2: R_BRACK@305..306 "]" [] [] - 1: SEMICOLON@306..322 ";" [] [Whitespace(" "), Comments("// type Error")] - 9: JS_VARIABLE_STATEMENT@322..348 - 0: JS_VARIABLE_DECLARATION@322..347 - 0: CONST_KW@322..329 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@329..347 - 0: JS_VARIABLE_DECLARATOR@329..347 - 0: JS_IDENTIFIER_BINDING@329..332 - 0: IDENT@329..332 "b2" [] [Whitespace(" ")] + 2: JS_INITIALIZER_CLAUSE@202..218 + 0: EQ@202..204 "=" [] [Whitespace(" ")] + 1: JS_BINARY_EXPRESSION@204..218 + 0: JS_BINARY_EXPRESSION@204..212 + 0: JS_IDENTIFIER_EXPRESSION@204..205 + 0: JS_REFERENCE_IDENTIFIER@204..205 + 0: IDENT@204..205 "f" [] [] + 1: L_ANGLE@205..206 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@206..212 + 0: JS_REFERENCE_IDENTIFIER@206..212 + 0: IDENT@206..212 "number" [] [] + 1: R_ANGLE@212..213 ">" [] [] + 2: JS_ARRAY_EXPRESSION@213..218 + 0: L_BRACK@213..214 "[" [] [] + 1: JS_ARRAY_ELEMENT_LIST@214..217 + 0: JS_STRING_LITERAL_EXPRESSION@214..217 + 0: JS_STRING_LITERAL@214..217 "'g'" [] [] + 2: R_BRACK@217..218 "]" [] [] + 1: SEMICOLON@218..234 ";" [] [Whitespace(" "), Comments("// type Error")] + 7: JS_VARIABLE_STATEMENT@234..260 + 0: JS_VARIABLE_DECLARATION@234..259 + 0: CONST_KW@234..241 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@241..259 + 0: JS_VARIABLE_DECLARATOR@241..259 + 0: JS_IDENTIFIER_BINDING@241..244 + 0: IDENT@241..244 "b2" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@332..347 - 0: EQ@332..334 "=" [] [Whitespace(" ")] - 1: JS_CALL_EXPRESSION@334..347 - 0: JS_IDENTIFIER_EXPRESSION@334..335 - 0: JS_REFERENCE_IDENTIFIER@334..335 - 0: IDENT@334..335 "f" [] [] - 1: QUESTIONDOT@335..337 "?." [] [] - 2: TS_TYPE_ARGUMENTS@337..345 - 0: L_ANGLE@337..338 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@338..344 - 0: TS_NUMBER_TYPE@338..344 - 0: NUMBER_KW@338..344 "number" [] [] - 2: R_ANGLE@344..345 ">" [] [] - 3: JS_CALL_ARGUMENTS@345..347 - 0: L_PAREN@345..346 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@346..346 - 2: R_PAREN@346..347 ")" [] [] - 1: SEMICOLON@347..348 ";" [] [] - 10: JS_VARIABLE_STATEMENT@348..374 - 0: JS_VARIABLE_DECLARATION@348..373 - 0: CONST_KW@348..355 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@355..373 - 0: JS_VARIABLE_DECLARATOR@355..373 - 0: JS_IDENTIFIER_BINDING@355..358 - 0: IDENT@355..358 "b3" [] [Whitespace(" ")] + 2: JS_INITIALIZER_CLAUSE@244..259 + 0: EQ@244..246 "=" [] [Whitespace(" ")] + 1: JS_CALL_EXPRESSION@246..259 + 0: JS_IDENTIFIER_EXPRESSION@246..247 + 0: JS_REFERENCE_IDENTIFIER@246..247 + 0: IDENT@246..247 "f" [] [] + 1: QUESTIONDOT@247..249 "?." [] [] + 2: TS_TYPE_ARGUMENTS@249..257 + 0: L_ANGLE@249..250 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@250..256 + 0: TS_NUMBER_TYPE@250..256 + 0: NUMBER_KW@250..256 "number" [] [] + 2: R_ANGLE@256..257 ">" [] [] + 3: JS_CALL_ARGUMENTS@257..259 + 0: L_PAREN@257..258 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@258..258 + 2: R_PAREN@258..259 ")" [] [] + 1: SEMICOLON@259..260 ";" [] [] + 8: JS_VARIABLE_STATEMENT@260..286 + 0: JS_VARIABLE_DECLARATION@260..285 + 0: CONST_KW@260..267 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@267..285 + 0: JS_VARIABLE_DECLARATOR@267..285 + 0: JS_IDENTIFIER_BINDING@267..270 + 0: IDENT@267..270 "b3" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@358..373 - 0: EQ@358..360 "=" [] [Whitespace(" ")] - 1: JS_CALL_EXPRESSION@360..373 - 0: TS_INSTANTIATION_EXPRESSION@360..369 - 0: JS_IDENTIFIER_EXPRESSION@360..361 - 0: JS_REFERENCE_IDENTIFIER@360..361 - 0: IDENT@360..361 "f" [] [] - 1: TS_TYPE_ARGUMENTS@361..369 - 0: L_ANGLE@361..362 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@362..368 - 0: TS_NUMBER_TYPE@362..368 - 0: NUMBER_KW@362..368 "number" [] [] - 2: R_ANGLE@368..369 ">" [] [] - 1: QUESTIONDOT@369..371 "?." [] [] + 2: JS_INITIALIZER_CLAUSE@270..285 + 0: EQ@270..272 "=" [] [Whitespace(" ")] + 1: JS_CALL_EXPRESSION@272..285 + 0: TS_INSTANTIATION_EXPRESSION@272..281 + 0: JS_IDENTIFIER_EXPRESSION@272..273 + 0: JS_REFERENCE_IDENTIFIER@272..273 + 0: IDENT@272..273 "f" [] [] + 1: TS_TYPE_ARGUMENTS@273..281 + 0: L_ANGLE@273..274 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@274..280 + 0: TS_NUMBER_TYPE@274..280 + 0: NUMBER_KW@274..280 "number" [] [] + 2: R_ANGLE@280..281 ">" [] [] + 1: QUESTIONDOT@281..283 "?." [] [] 2: (empty) - 3: JS_CALL_ARGUMENTS@371..373 - 0: L_PAREN@371..372 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@372..372 - 2: R_PAREN@372..373 ")" [] [] - 1: SEMICOLON@373..374 ";" [] [] - 11: JS_VARIABLE_STATEMENT@374..451 - 0: JS_VARIABLE_DECLARATION@374..407 - 0: CONST_KW@374..381 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@381..407 - 0: JS_VARIABLE_DECLARATOR@381..407 - 0: JS_IDENTIFIER_BINDING@381..384 - 0: IDENT@381..384 "b4" [] [Whitespace(" ")] + 3: JS_CALL_ARGUMENTS@283..285 + 0: L_PAREN@283..284 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@284..284 + 2: R_PAREN@284..285 ")" [] [] + 1: SEMICOLON@285..286 ";" [] [] + 9: JS_VARIABLE_STATEMENT@286..363 + 0: JS_VARIABLE_DECLARATION@286..319 + 0: CONST_KW@286..293 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@293..319 + 0: JS_VARIABLE_DECLARATOR@293..319 + 0: JS_IDENTIFIER_BINDING@293..296 + 0: IDENT@293..296 "b4" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@384..407 - 0: EQ@384..386 "=" [] [Whitespace(" ")] - 1: JS_CALL_EXPRESSION@386..407 - 0: TS_INSTANTIATION_EXPRESSION@386..395 - 0: JS_IDENTIFIER_EXPRESSION@386..387 - 0: JS_REFERENCE_IDENTIFIER@386..387 - 0: IDENT@386..387 "f" [] [] - 1: TS_TYPE_ARGUMENTS@387..395 - 0: L_ANGLE@387..388 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@388..394 - 0: TS_NUMBER_TYPE@388..394 - 0: NUMBER_KW@388..394 "number" [] [] - 2: R_ANGLE@394..395 ">" [] [] - 1: QUESTIONDOT@395..397 "?." [] [] - 2: TS_TYPE_ARGUMENTS@397..405 - 0: L_ANGLE@397..398 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@398..404 - 0: TS_NUMBER_TYPE@398..404 - 0: NUMBER_KW@398..404 "number" [] [] - 2: R_ANGLE@404..405 ">" [] [] - 3: JS_CALL_ARGUMENTS@405..407 - 0: L_PAREN@405..406 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@406..406 - 2: R_PAREN@406..407 ")" [] [] - 1: SEMICOLON@407..451 ";" [] [Whitespace(" "), Comments("// Type Error, expect ...")] - 12: JS_VARIABLE_STATEMENT@451..478 - 0: JS_VARIABLE_DECLARATION@451..477 - 0: CONST_KW@451..458 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@458..477 - 0: JS_VARIABLE_DECLARATOR@458..477 - 0: JS_IDENTIFIER_BINDING@458..461 - 0: IDENT@458..461 "x1" [] [Whitespace(" ")] + 2: JS_INITIALIZER_CLAUSE@296..319 + 0: EQ@296..298 "=" [] [Whitespace(" ")] + 1: JS_CALL_EXPRESSION@298..319 + 0: TS_INSTANTIATION_EXPRESSION@298..307 + 0: JS_IDENTIFIER_EXPRESSION@298..299 + 0: JS_REFERENCE_IDENTIFIER@298..299 + 0: IDENT@298..299 "f" [] [] + 1: TS_TYPE_ARGUMENTS@299..307 + 0: L_ANGLE@299..300 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@300..306 + 0: TS_NUMBER_TYPE@300..306 + 0: NUMBER_KW@300..306 "number" [] [] + 2: R_ANGLE@306..307 ">" [] [] + 1: QUESTIONDOT@307..309 "?." [] [] + 2: TS_TYPE_ARGUMENTS@309..317 + 0: L_ANGLE@309..310 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@310..316 + 0: TS_NUMBER_TYPE@310..316 + 0: NUMBER_KW@310..316 "number" [] [] + 2: R_ANGLE@316..317 ">" [] [] + 3: JS_CALL_ARGUMENTS@317..319 + 0: L_PAREN@317..318 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@318..318 + 2: R_PAREN@318..319 ")" [] [] + 1: SEMICOLON@319..363 ";" [] [Whitespace(" "), Comments("// Type Error, expect ...")] + 10: JS_VARIABLE_STATEMENT@363..390 + 0: JS_VARIABLE_DECLARATION@363..389 + 0: CONST_KW@363..370 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@370..389 + 0: JS_VARIABLE_DECLARATOR@370..389 + 0: JS_IDENTIFIER_BINDING@370..373 + 0: IDENT@370..373 "x1" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@461..477 - 0: EQ@461..463 "=" [] [Whitespace(" ")] - 1: JS_CALL_EXPRESSION@463..477 - 0: JS_IDENTIFIER_EXPRESSION@463..464 - 0: JS_REFERENCE_IDENTIFIER@463..464 - 0: IDENT@463..464 "f" [] [] + 2: JS_INITIALIZER_CLAUSE@373..389 + 0: EQ@373..375 "=" [] [Whitespace(" ")] + 1: JS_CALL_EXPRESSION@375..389 + 0: JS_IDENTIFIER_EXPRESSION@375..376 + 0: JS_REFERENCE_IDENTIFIER@375..376 + 0: IDENT@375..376 "f" [] [] 1: (empty) - 2: TS_TYPE_ARGUMENTS@464..470 - 0: L_ANGLE@464..465 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@465..469 - 0: TS_BOOLEAN_LITERAL_TYPE@465..469 - 0: TRUE_KW@465..469 "true" [] [] - 2: R_ANGLE@469..470 ">" [] [] - 3: JS_CALL_ARGUMENTS@470..477 - 0: L_PAREN@470..472 "(" [Newline("\n")] [] - 1: JS_CALL_ARGUMENT_LIST@472..476 - 0: JS_BOOLEAN_LITERAL_EXPRESSION@472..476 - 0: TRUE_KW@472..476 "true" [] [] - 2: R_PAREN@476..477 ")" [] [] - 1: SEMICOLON@477..478 ";" [] [] - 13: JS_VARIABLE_STATEMENT@478..497 - 0: JS_VARIABLE_DECLARATION@478..497 - 0: CONST_KW@478..485 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@485..497 - 0: JS_VARIABLE_DECLARATOR@485..497 - 0: JS_IDENTIFIER_BINDING@485..488 - 0: IDENT@485..488 "x2" [] [Whitespace(" ")] + 2: TS_TYPE_ARGUMENTS@376..382 + 0: L_ANGLE@376..377 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@377..381 + 0: TS_BOOLEAN_LITERAL_TYPE@377..381 + 0: TRUE_KW@377..381 "true" [] [] + 2: R_ANGLE@381..382 ">" [] [] + 3: JS_CALL_ARGUMENTS@382..389 + 0: L_PAREN@382..384 "(" [Newline("\n")] [] + 1: JS_CALL_ARGUMENT_LIST@384..388 + 0: JS_BOOLEAN_LITERAL_EXPRESSION@384..388 + 0: TRUE_KW@384..388 "true" [] [] + 2: R_PAREN@388..389 ")" [] [] + 1: SEMICOLON@389..390 ";" [] [] + 11: JS_VARIABLE_STATEMENT@390..409 + 0: JS_VARIABLE_DECLARATION@390..409 + 0: CONST_KW@390..397 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@397..409 + 0: JS_VARIABLE_DECLARATOR@397..409 + 0: JS_IDENTIFIER_BINDING@397..400 + 0: IDENT@397..400 "x2" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@488..497 - 0: EQ@488..490 "=" [] [Whitespace(" ")] - 1: TS_INSTANTIATION_EXPRESSION@490..497 - 0: JS_IDENTIFIER_EXPRESSION@490..491 - 0: JS_REFERENCE_IDENTIFIER@490..491 - 0: IDENT@490..491 "f" [] [] - 1: TS_TYPE_ARGUMENTS@491..497 - 0: L_ANGLE@491..492 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@492..496 - 0: TS_BOOLEAN_LITERAL_TYPE@492..496 - 0: TRUE_KW@492..496 "true" [] [] - 2: R_ANGLE@496..497 ">" [] [] + 2: JS_INITIALIZER_CLAUSE@400..409 + 0: EQ@400..402 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@402..409 + 0: JS_IDENTIFIER_EXPRESSION@402..403 + 0: JS_REFERENCE_IDENTIFIER@402..403 + 0: IDENT@402..403 "f" [] [] + 1: TS_TYPE_ARGUMENTS@403..409 + 0: L_ANGLE@403..404 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@404..408 + 0: TS_BOOLEAN_LITERAL_TYPE@404..408 + 0: TRUE_KW@404..408 "true" [] [] + 2: R_ANGLE@408..409 ">" [] [] 1: (empty) - 14: JS_EXPRESSION_STATEMENT@497..503 - 0: JS_BOOLEAN_LITERAL_EXPRESSION@497..502 - 0: TRUE_KW@497..502 "true" [Newline("\n")] [] - 1: SEMICOLON@502..503 ";" [] [] - 15: JS_VARIABLE_STATEMENT@503..523 - 0: JS_VARIABLE_DECLARATION@503..522 - 0: CONST_KW@503..510 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@510..522 - 0: JS_VARIABLE_DECLARATOR@510..522 - 0: JS_IDENTIFIER_BINDING@510..513 - 0: IDENT@510..513 "x3" [] [Whitespace(" ")] + 12: JS_EXPRESSION_STATEMENT@409..415 + 0: JS_BOOLEAN_LITERAL_EXPRESSION@409..414 + 0: TRUE_KW@409..414 "true" [Newline("\n")] [] + 1: SEMICOLON@414..415 ";" [] [] + 13: JS_VARIABLE_STATEMENT@415..435 + 0: JS_VARIABLE_DECLARATION@415..434 + 0: CONST_KW@415..422 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@422..434 + 0: JS_VARIABLE_DECLARATOR@422..434 + 0: JS_IDENTIFIER_BINDING@422..425 + 0: IDENT@422..425 "x3" [] [Whitespace(" ")] 1: (empty) - 2: JS_INITIALIZER_CLAUSE@513..522 - 0: EQ@513..515 "=" [] [Whitespace(" ")] - 1: TS_INSTANTIATION_EXPRESSION@515..522 - 0: JS_IDENTIFIER_EXPRESSION@515..516 - 0: JS_REFERENCE_IDENTIFIER@515..516 - 0: IDENT@515..516 "f" [] [] - 1: TS_TYPE_ARGUMENTS@516..522 - 0: L_ANGLE@516..517 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@517..521 - 0: TS_BOOLEAN_LITERAL_TYPE@517..521 - 0: TRUE_KW@517..521 "true" [] [] - 2: R_ANGLE@521..522 ">" [] [] - 1: SEMICOLON@522..523 ";" [] [] - 16: JS_EXPRESSION_STATEMENT@523..529 - 0: JS_BOOLEAN_LITERAL_EXPRESSION@523..528 - 0: TRUE_KW@523..528 "true" [Newline("\n")] [] - 1: SEMICOLON@528..529 ";" [] [] - 17: JS_EXPRESSION_STATEMENT@529..540 - 0: TS_INSTANTIATION_EXPRESSION@529..539 - 0: JS_PARENTHESIZED_EXPRESSION@529..536 - 0: L_PAREN@529..531 "(" [Newline("\n")] [] - 1: TS_INSTANTIATION_EXPRESSION@531..535 - 0: JS_IDENTIFIER_EXPRESSION@531..532 - 0: JS_REFERENCE_IDENTIFIER@531..532 - 0: IDENT@531..532 "f" [] [] - 1: TS_TYPE_ARGUMENTS@532..535 - 0: L_ANGLE@532..533 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@533..534 - 0: TS_REFERENCE_TYPE@533..534 - 0: JS_REFERENCE_IDENTIFIER@533..534 - 0: IDENT@533..534 "T" [] [] + 2: JS_INITIALIZER_CLAUSE@425..434 + 0: EQ@425..427 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@427..434 + 0: JS_IDENTIFIER_EXPRESSION@427..428 + 0: JS_REFERENCE_IDENTIFIER@427..428 + 0: IDENT@427..428 "f" [] [] + 1: TS_TYPE_ARGUMENTS@428..434 + 0: L_ANGLE@428..429 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@429..433 + 0: TS_BOOLEAN_LITERAL_TYPE@429..433 + 0: TRUE_KW@429..433 "true" [] [] + 2: R_ANGLE@433..434 ">" [] [] + 1: SEMICOLON@434..435 ";" [] [] + 14: JS_EXPRESSION_STATEMENT@435..441 + 0: JS_BOOLEAN_LITERAL_EXPRESSION@435..440 + 0: TRUE_KW@435..440 "true" [Newline("\n")] [] + 1: SEMICOLON@440..441 ";" [] [] + 15: JS_EXPRESSION_STATEMENT@441..452 + 0: TS_INSTANTIATION_EXPRESSION@441..451 + 0: JS_PARENTHESIZED_EXPRESSION@441..448 + 0: L_PAREN@441..443 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@443..447 + 0: JS_IDENTIFIER_EXPRESSION@443..444 + 0: JS_REFERENCE_IDENTIFIER@443..444 + 0: IDENT@443..444 "f" [] [] + 1: TS_TYPE_ARGUMENTS@444..447 + 0: L_ANGLE@444..445 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@445..446 + 0: TS_REFERENCE_TYPE@445..446 + 0: JS_REFERENCE_IDENTIFIER@445..446 + 0: IDENT@445..446 "T" [] [] 1: (empty) - 2: R_ANGLE@534..535 ">" [] [] - 2: R_PAREN@535..536 ")" [] [] - 1: TS_TYPE_ARGUMENTS@536..539 - 0: L_ANGLE@536..537 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@537..538 - 0: TS_REFERENCE_TYPE@537..538 - 0: JS_REFERENCE_IDENTIFIER@537..538 - 0: IDENT@537..538 "K" [] [] + 2: R_ANGLE@446..447 ">" [] [] + 2: R_PAREN@447..448 ")" [] [] + 1: TS_TYPE_ARGUMENTS@448..451 + 0: L_ANGLE@448..449 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@449..450 + 0: TS_REFERENCE_TYPE@449..450 + 0: JS_REFERENCE_IDENTIFIER@449..450 + 0: IDENT@449..450 "K" [] [] 1: (empty) - 2: R_ANGLE@538..539 ">" [] [] - 1: SEMICOLON@539..540 ";" [] [] - 18: JS_EXPRESSION_STATEMENT@540..553 - 0: JS_CALL_EXPRESSION@540..552 - 0: JS_PARENTHESIZED_EXPRESSION@540..547 - 0: L_PAREN@540..542 "(" [Newline("\n")] [] - 1: TS_INSTANTIATION_EXPRESSION@542..546 - 0: JS_IDENTIFIER_EXPRESSION@542..543 - 0: JS_REFERENCE_IDENTIFIER@542..543 - 0: IDENT@542..543 "f" [] [] - 1: TS_TYPE_ARGUMENTS@543..546 - 0: L_ANGLE@543..544 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@544..545 - 0: TS_REFERENCE_TYPE@544..545 - 0: JS_REFERENCE_IDENTIFIER@544..545 - 0: IDENT@544..545 "T" [] [] + 2: R_ANGLE@450..451 ">" [] [] + 1: SEMICOLON@451..452 ";" [] [] + 16: JS_EXPRESSION_STATEMENT@452..465 + 0: JS_CALL_EXPRESSION@452..464 + 0: JS_PARENTHESIZED_EXPRESSION@452..459 + 0: L_PAREN@452..454 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@454..458 + 0: JS_IDENTIFIER_EXPRESSION@454..455 + 0: JS_REFERENCE_IDENTIFIER@454..455 + 0: IDENT@454..455 "f" [] [] + 1: TS_TYPE_ARGUMENTS@455..458 + 0: L_ANGLE@455..456 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@456..457 + 0: TS_REFERENCE_TYPE@456..457 + 0: JS_REFERENCE_IDENTIFIER@456..457 + 0: IDENT@456..457 "T" [] [] 1: (empty) - 2: R_ANGLE@545..546 ">" [] [] - 2: R_PAREN@546..547 ")" [] [] + 2: R_ANGLE@457..458 ">" [] [] + 2: R_PAREN@458..459 ")" [] [] 1: (empty) - 2: TS_TYPE_ARGUMENTS@547..550 - 0: L_ANGLE@547..548 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@548..549 - 0: TS_REFERENCE_TYPE@548..549 - 0: JS_REFERENCE_IDENTIFIER@548..549 - 0: IDENT@548..549 "K" [] [] + 2: TS_TYPE_ARGUMENTS@459..462 + 0: L_ANGLE@459..460 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@460..461 + 0: TS_REFERENCE_TYPE@460..461 + 0: JS_REFERENCE_IDENTIFIER@460..461 + 0: IDENT@460..461 "K" [] [] 1: (empty) - 2: R_ANGLE@549..550 ">" [] [] - 3: JS_CALL_ARGUMENTS@550..552 - 0: L_PAREN@550..551 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@551..551 - 2: R_PAREN@551..552 ")" [] [] - 1: SEMICOLON@552..553 ";" [] [] - 19: JS_EXPRESSION_STATEMENT@553..568 - 0: JS_CALL_EXPRESSION@553..567 - 0: TS_INSTANTIATION_EXPRESSION@553..563 - 0: JS_PARENTHESIZED_EXPRESSION@553..560 - 0: L_PAREN@553..555 "(" [Newline("\n")] [] - 1: TS_INSTANTIATION_EXPRESSION@555..559 - 0: JS_IDENTIFIER_EXPRESSION@555..556 - 0: JS_REFERENCE_IDENTIFIER@555..556 - 0: IDENT@555..556 "f" [] [] - 1: TS_TYPE_ARGUMENTS@556..559 - 0: L_ANGLE@556..557 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@557..558 - 0: TS_REFERENCE_TYPE@557..558 - 0: JS_REFERENCE_IDENTIFIER@557..558 - 0: IDENT@557..558 "T" [] [] + 2: R_ANGLE@461..462 ">" [] [] + 3: JS_CALL_ARGUMENTS@462..464 + 0: L_PAREN@462..463 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@463..463 + 2: R_PAREN@463..464 ")" [] [] + 1: SEMICOLON@464..465 ";" [] [] + 17: JS_EXPRESSION_STATEMENT@465..480 + 0: JS_CALL_EXPRESSION@465..479 + 0: TS_INSTANTIATION_EXPRESSION@465..475 + 0: JS_PARENTHESIZED_EXPRESSION@465..472 + 0: L_PAREN@465..467 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@467..471 + 0: JS_IDENTIFIER_EXPRESSION@467..468 + 0: JS_REFERENCE_IDENTIFIER@467..468 + 0: IDENT@467..468 "f" [] [] + 1: TS_TYPE_ARGUMENTS@468..471 + 0: L_ANGLE@468..469 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@469..470 + 0: TS_REFERENCE_TYPE@469..470 + 0: JS_REFERENCE_IDENTIFIER@469..470 + 0: IDENT@469..470 "T" [] [] 1: (empty) - 2: R_ANGLE@558..559 ">" [] [] - 2: R_PAREN@559..560 ")" [] [] - 1: TS_TYPE_ARGUMENTS@560..563 - 0: L_ANGLE@560..561 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@561..562 - 0: TS_REFERENCE_TYPE@561..562 - 0: JS_REFERENCE_IDENTIFIER@561..562 - 0: IDENT@561..562 "K" [] [] + 2: R_ANGLE@470..471 ">" [] [] + 2: R_PAREN@471..472 ")" [] [] + 1: TS_TYPE_ARGUMENTS@472..475 + 0: L_ANGLE@472..473 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@473..474 + 0: TS_REFERENCE_TYPE@473..474 + 0: JS_REFERENCE_IDENTIFIER@473..474 + 0: IDENT@473..474 "K" [] [] 1: (empty) - 2: R_ANGLE@562..563 ">" [] [] - 1: QUESTIONDOT@563..565 "?." [] [] + 2: R_ANGLE@474..475 ">" [] [] + 1: QUESTIONDOT@475..477 "?." [] [] 2: (empty) - 3: JS_CALL_ARGUMENTS@565..567 - 0: L_PAREN@565..566 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@566..566 - 2: R_PAREN@566..567 ")" [] [] - 1: SEMICOLON@567..568 ";" [] [] - 20: JS_EXPRESSION_STATEMENT@568..584 - 0: JS_CALL_EXPRESSION@568..583 - 0: JS_PARENTHESIZED_EXPRESSION@568..578 - 0: L_PAREN@568..570 "(" [Newline("\n")] [] - 1: TS_INSTANTIATION_EXPRESSION@570..577 - 0: JS_STATIC_MEMBER_EXPRESSION@570..574 - 0: JS_IDENTIFIER_EXPRESSION@570..571 - 0: JS_REFERENCE_IDENTIFIER@570..571 - 0: IDENT@570..571 "a" [] [] - 1: QUESTIONDOT@571..573 "?." [] [] - 2: JS_NAME@573..574 - 0: IDENT@573..574 "f" [] [] - 1: TS_TYPE_ARGUMENTS@574..577 - 0: L_ANGLE@574..575 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@575..576 - 0: TS_REFERENCE_TYPE@575..576 - 0: JS_REFERENCE_IDENTIFIER@575..576 - 0: IDENT@575..576 "T" [] [] + 3: JS_CALL_ARGUMENTS@477..479 + 0: L_PAREN@477..478 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@478..478 + 2: R_PAREN@478..479 ")" [] [] + 1: SEMICOLON@479..480 ";" [] [] + 18: JS_EXPRESSION_STATEMENT@480..496 + 0: JS_CALL_EXPRESSION@480..495 + 0: JS_PARENTHESIZED_EXPRESSION@480..490 + 0: L_PAREN@480..482 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@482..489 + 0: JS_STATIC_MEMBER_EXPRESSION@482..486 + 0: JS_IDENTIFIER_EXPRESSION@482..483 + 0: JS_REFERENCE_IDENTIFIER@482..483 + 0: IDENT@482..483 "a" [] [] + 1: QUESTIONDOT@483..485 "?." [] [] + 2: JS_NAME@485..486 + 0: IDENT@485..486 "f" [] [] + 1: TS_TYPE_ARGUMENTS@486..489 + 0: L_ANGLE@486..487 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@487..488 + 0: TS_REFERENCE_TYPE@487..488 + 0: JS_REFERENCE_IDENTIFIER@487..488 + 0: IDENT@487..488 "T" [] [] 1: (empty) - 2: R_ANGLE@576..577 ">" [] [] - 2: R_PAREN@577..578 ")" [] [] + 2: R_ANGLE@488..489 ">" [] [] + 2: R_PAREN@489..490 ")" [] [] 1: (empty) - 2: TS_TYPE_ARGUMENTS@578..581 - 0: L_ANGLE@578..579 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@579..580 - 0: TS_REFERENCE_TYPE@579..580 - 0: JS_REFERENCE_IDENTIFIER@579..580 - 0: IDENT@579..580 "K" [] [] + 2: TS_TYPE_ARGUMENTS@490..493 + 0: L_ANGLE@490..491 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@491..492 + 0: TS_REFERENCE_TYPE@491..492 + 0: JS_REFERENCE_IDENTIFIER@491..492 + 0: IDENT@491..492 "K" [] [] 1: (empty) - 2: R_ANGLE@580..581 ">" [] [] - 3: JS_CALL_ARGUMENTS@581..583 - 0: L_PAREN@581..582 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@582..582 - 2: R_PAREN@582..583 ")" [] [] - 1: SEMICOLON@583..584 ";" [] [] - 21: JS_EXPRESSION_STATEMENT@584..601 - 0: JS_NEW_EXPRESSION@584..600 - 0: NEW_KW@584..589 "new" [Newline("\n")] [Whitespace(" ")] - 1: JS_PARENTHESIZED_EXPRESSION@589..595 - 0: L_PAREN@589..590 "(" [] [] - 1: TS_INSTANTIATION_EXPRESSION@590..594 - 0: JS_IDENTIFIER_EXPRESSION@590..591 - 0: JS_REFERENCE_IDENTIFIER@590..591 - 0: IDENT@590..591 "a" [] [] - 1: TS_TYPE_ARGUMENTS@591..594 - 0: L_ANGLE@591..592 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@592..593 - 0: TS_REFERENCE_TYPE@592..593 - 0: JS_REFERENCE_IDENTIFIER@592..593 - 0: IDENT@592..593 "T" [] [] + 2: R_ANGLE@492..493 ">" [] [] + 3: JS_CALL_ARGUMENTS@493..495 + 0: L_PAREN@493..494 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@494..494 + 2: R_PAREN@494..495 ")" [] [] + 1: SEMICOLON@495..496 ";" [] [] + 19: JS_EXPRESSION_STATEMENT@496..513 + 0: JS_NEW_EXPRESSION@496..512 + 0: NEW_KW@496..501 "new" [Newline("\n")] [Whitespace(" ")] + 1: JS_PARENTHESIZED_EXPRESSION@501..507 + 0: L_PAREN@501..502 "(" [] [] + 1: TS_INSTANTIATION_EXPRESSION@502..506 + 0: JS_IDENTIFIER_EXPRESSION@502..503 + 0: JS_REFERENCE_IDENTIFIER@502..503 + 0: IDENT@502..503 "a" [] [] + 1: TS_TYPE_ARGUMENTS@503..506 + 0: L_ANGLE@503..504 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@504..505 + 0: TS_REFERENCE_TYPE@504..505 + 0: JS_REFERENCE_IDENTIFIER@504..505 + 0: IDENT@504..505 "T" [] [] 1: (empty) - 2: R_ANGLE@593..594 ">" [] [] - 2: R_PAREN@594..595 ")" [] [] - 2: TS_TYPE_ARGUMENTS@595..598 - 0: L_ANGLE@595..596 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@596..597 - 0: TS_REFERENCE_TYPE@596..597 - 0: JS_REFERENCE_IDENTIFIER@596..597 - 0: IDENT@596..597 "K" [] [] + 2: R_ANGLE@505..506 ">" [] [] + 2: R_PAREN@506..507 ")" [] [] + 2: TS_TYPE_ARGUMENTS@507..510 + 0: L_ANGLE@507..508 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@508..509 + 0: TS_REFERENCE_TYPE@508..509 + 0: JS_REFERENCE_IDENTIFIER@508..509 + 0: IDENT@508..509 "K" [] [] 1: (empty) - 2: R_ANGLE@597..598 ">" [] [] - 3: JS_CALL_ARGUMENTS@598..600 - 0: L_PAREN@598..599 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@599..599 - 2: R_PAREN@599..600 ")" [] [] - 1: SEMICOLON@600..601 ";" [] [] - 22: JS_EXPRESSION_STATEMENT@601..620 - 0: JS_CALL_EXPRESSION@601..619 - 0: TS_INSTANTIATION_EXPRESSION@601..615 - 0: JS_IDENTIFIER_EXPRESSION@601..603 - 0: JS_REFERENCE_IDENTIFIER@601..603 - 0: IDENT@601..603 "f" [Newline("\n")] [] - 1: TS_TYPE_ARGUMENTS@603..615 - 0: L_ANGLE@603..604 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@604..614 - 0: TS_FUNCTION_TYPE@604..614 - 0: TS_TYPE_PARAMETERS@604..607 - 0: L_ANGLE@604..605 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@605..606 - 0: TS_TYPE_PARAMETER@605..606 - 0: TS_TYPE_PARAMETER_NAME@605..606 - 0: IDENT@605..606 "T" [] [] + 2: R_ANGLE@509..510 ">" [] [] + 3: JS_CALL_ARGUMENTS@510..512 + 0: L_PAREN@510..511 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@511..511 + 2: R_PAREN@511..512 ")" [] [] + 1: SEMICOLON@512..513 ";" [] [] + 20: JS_EXPRESSION_STATEMENT@513..532 + 0: JS_CALL_EXPRESSION@513..531 + 0: TS_INSTANTIATION_EXPRESSION@513..527 + 0: JS_IDENTIFIER_EXPRESSION@513..515 + 0: JS_REFERENCE_IDENTIFIER@513..515 + 0: IDENT@513..515 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@515..527 + 0: L_ANGLE@515..516 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@516..526 + 0: TS_FUNCTION_TYPE@516..526 + 0: TS_TYPE_PARAMETERS@516..519 + 0: L_ANGLE@516..517 "<" [] [] + 1: TS_TYPE_PARAMETER_LIST@517..518 + 0: TS_TYPE_PARAMETER@517..518 + 0: TS_TYPE_PARAMETER_NAME@517..518 + 0: IDENT@517..518 "T" [] [] 1: (empty) 2: (empty) - 2: R_ANGLE@606..607 ">" [] [] - 1: JS_PARAMETERS@607..610 - 0: L_PAREN@607..608 "(" [] [] - 1: JS_PARAMETER_LIST@608..608 - 2: R_PAREN@608..610 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@610..613 "=>" [] [Whitespace(" ")] - 3: TS_REFERENCE_TYPE@613..614 - 0: JS_REFERENCE_IDENTIFIER@613..614 - 0: IDENT@613..614 "T" [] [] + 2: R_ANGLE@518..519 ">" [] [] + 1: JS_PARAMETERS@519..522 + 0: L_PAREN@519..520 "(" [] [] + 1: JS_PARAMETER_LIST@520..520 + 2: R_PAREN@520..522 ")" [] [Whitespace(" ")] + 2: FAT_ARROW@522..525 "=>" [] [Whitespace(" ")] + 3: TS_REFERENCE_TYPE@525..526 + 0: JS_REFERENCE_IDENTIFIER@525..526 + 0: IDENT@525..526 "T" [] [] 1: (empty) - 2: R_ANGLE@614..615 ">" [] [] - 1: QUESTIONDOT@615..617 "?." [] [] + 2: R_ANGLE@526..527 ">" [] [] + 1: QUESTIONDOT@527..529 "?." [] [] 2: (empty) - 3: JS_CALL_ARGUMENTS@617..619 - 0: L_PAREN@617..618 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@618..618 - 2: R_PAREN@618..619 ")" [] [] - 1: SEMICOLON@619..620 ";" [] [] - 23: JS_EXPRESSION_STATEMENT@620..639 - 0: JS_CALL_EXPRESSION@620..638 - 0: JS_IDENTIFIER_EXPRESSION@620..622 - 0: JS_REFERENCE_IDENTIFIER@620..622 - 0: IDENT@620..622 "f" [Newline("\n")] [] - 1: QUESTIONDOT@622..624 "?." [] [] - 2: TS_TYPE_ARGUMENTS@624..636 - 0: L_ANGLE@624..625 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@625..635 - 0: TS_FUNCTION_TYPE@625..635 - 0: TS_TYPE_PARAMETERS@625..628 - 0: L_ANGLE@625..626 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@626..627 - 0: TS_TYPE_PARAMETER@626..627 - 0: TS_TYPE_PARAMETER_NAME@626..627 - 0: IDENT@626..627 "T" [] [] + 3: JS_CALL_ARGUMENTS@529..531 + 0: L_PAREN@529..530 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@530..530 + 2: R_PAREN@530..531 ")" [] [] + 1: SEMICOLON@531..532 ";" [] [] + 21: JS_EXPRESSION_STATEMENT@532..551 + 0: JS_CALL_EXPRESSION@532..550 + 0: JS_IDENTIFIER_EXPRESSION@532..534 + 0: JS_REFERENCE_IDENTIFIER@532..534 + 0: IDENT@532..534 "f" [Newline("\n")] [] + 1: QUESTIONDOT@534..536 "?." [] [] + 2: TS_TYPE_ARGUMENTS@536..548 + 0: L_ANGLE@536..537 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@537..547 + 0: TS_FUNCTION_TYPE@537..547 + 0: TS_TYPE_PARAMETERS@537..540 + 0: L_ANGLE@537..538 "<" [] [] + 1: TS_TYPE_PARAMETER_LIST@538..539 + 0: TS_TYPE_PARAMETER@538..539 + 0: TS_TYPE_PARAMETER_NAME@538..539 + 0: IDENT@538..539 "T" [] [] 1: (empty) 2: (empty) - 2: R_ANGLE@627..628 ">" [] [] - 1: JS_PARAMETERS@628..631 - 0: L_PAREN@628..629 "(" [] [] - 1: JS_PARAMETER_LIST@629..629 - 2: R_PAREN@629..631 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@631..634 "=>" [] [Whitespace(" ")] - 3: TS_REFERENCE_TYPE@634..635 - 0: JS_REFERENCE_IDENTIFIER@634..635 - 0: IDENT@634..635 "T" [] [] + 2: R_ANGLE@539..540 ">" [] [] + 1: JS_PARAMETERS@540..543 + 0: L_PAREN@540..541 "(" [] [] + 1: JS_PARAMETER_LIST@541..541 + 2: R_PAREN@541..543 ")" [] [Whitespace(" ")] + 2: FAT_ARROW@543..546 "=>" [] [Whitespace(" ")] + 3: TS_REFERENCE_TYPE@546..547 + 0: JS_REFERENCE_IDENTIFIER@546..547 + 0: IDENT@546..547 "T" [] [] 1: (empty) - 2: R_ANGLE@635..636 ">" [] [] - 3: JS_CALL_ARGUMENTS@636..638 - 0: L_PAREN@636..637 "(" [] [] - 1: JS_CALL_ARGUMENT_LIST@637..637 - 2: R_PAREN@637..638 ")" [] [] - 1: SEMICOLON@638..639 ";" [] [] - 24: JS_EXPRESSION_STATEMENT@639..659 - 0: JS_CONDITIONAL_EXPRESSION@639..658 - 0: TS_INSTANTIATION_EXPRESSION@639..645 - 0: JS_IDENTIFIER_EXPRESSION@639..641 - 0: JS_REFERENCE_IDENTIFIER@639..641 - 0: IDENT@639..641 "f" [Newline("\n")] [] - 1: TS_TYPE_ARGUMENTS@641..645 - 0: L_ANGLE@641..642 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@642..643 - 0: TS_REFERENCE_TYPE@642..643 - 0: JS_REFERENCE_IDENTIFIER@642..643 - 0: IDENT@642..643 "x" [] [] + 2: R_ANGLE@547..548 ">" [] [] + 3: JS_CALL_ARGUMENTS@548..550 + 0: L_PAREN@548..549 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@549..549 + 2: R_PAREN@549..550 ")" [] [] + 1: SEMICOLON@550..551 ";" [] [] + 22: JS_EXPRESSION_STATEMENT@551..571 + 0: JS_CONDITIONAL_EXPRESSION@551..570 + 0: TS_INSTANTIATION_EXPRESSION@551..557 + 0: JS_IDENTIFIER_EXPRESSION@551..553 + 0: JS_REFERENCE_IDENTIFIER@551..553 + 0: IDENT@551..553 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@553..557 + 0: L_ANGLE@553..554 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@554..555 + 0: TS_REFERENCE_TYPE@554..555 + 0: JS_REFERENCE_IDENTIFIER@554..555 + 0: IDENT@554..555 "x" [] [] 1: (empty) - 2: R_ANGLE@643..645 ">" [] [Whitespace(" ")] - 1: QUESTION@645..647 "?" [] [Whitespace(" ")] - 2: TS_INSTANTIATION_EXPRESSION@647..652 - 0: JS_IDENTIFIER_EXPRESSION@647..648 - 0: JS_REFERENCE_IDENTIFIER@647..648 - 0: IDENT@647..648 "g" [] [] - 1: TS_TYPE_ARGUMENTS@648..652 - 0: L_ANGLE@648..649 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@649..650 - 0: TS_REFERENCE_TYPE@649..650 - 0: JS_REFERENCE_IDENTIFIER@649..650 - 0: IDENT@649..650 "y" [] [] + 2: R_ANGLE@555..557 ">" [] [Whitespace(" ")] + 1: QUESTION@557..559 "?" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@559..564 + 0: JS_IDENTIFIER_EXPRESSION@559..560 + 0: JS_REFERENCE_IDENTIFIER@559..560 + 0: IDENT@559..560 "g" [] [] + 1: TS_TYPE_ARGUMENTS@560..564 + 0: L_ANGLE@560..561 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@561..562 + 0: TS_REFERENCE_TYPE@561..562 + 0: JS_REFERENCE_IDENTIFIER@561..562 + 0: IDENT@561..562 "y" [] [] 1: (empty) - 2: R_ANGLE@650..652 ">" [] [Whitespace(" ")] - 3: COLON@652..654 ":" [] [Whitespace(" ")] - 4: TS_INSTANTIATION_EXPRESSION@654..658 - 0: JS_IDENTIFIER_EXPRESSION@654..655 - 0: JS_REFERENCE_IDENTIFIER@654..655 - 0: IDENT@654..655 "h" [] [] - 1: TS_TYPE_ARGUMENTS@655..658 - 0: L_ANGLE@655..656 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@656..657 - 0: TS_REFERENCE_TYPE@656..657 - 0: JS_REFERENCE_IDENTIFIER@656..657 - 0: IDENT@656..657 "z" [] [] + 2: R_ANGLE@562..564 ">" [] [Whitespace(" ")] + 3: COLON@564..566 ":" [] [Whitespace(" ")] + 4: TS_INSTANTIATION_EXPRESSION@566..570 + 0: JS_IDENTIFIER_EXPRESSION@566..567 + 0: JS_REFERENCE_IDENTIFIER@566..567 + 0: IDENT@566..567 "h" [] [] + 1: TS_TYPE_ARGUMENTS@567..570 + 0: L_ANGLE@567..568 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@568..569 + 0: TS_REFERENCE_TYPE@568..569 + 0: JS_REFERENCE_IDENTIFIER@568..569 + 0: IDENT@568..569 "z" [] [] 1: (empty) - 2: R_ANGLE@657..658 ">" [] [] - 1: SEMICOLON@658..659 ";" [] [] - 25: JS_EXPRESSION_STATEMENT@659..667 - 0: JS_ARRAY_EXPRESSION@659..666 - 0: L_BRACK@659..661 "[" [Newline("\n")] [] - 1: JS_ARRAY_ELEMENT_LIST@661..665 - 0: TS_INSTANTIATION_EXPRESSION@661..665 - 0: JS_IDENTIFIER_EXPRESSION@661..662 - 0: JS_REFERENCE_IDENTIFIER@661..662 - 0: IDENT@661..662 "f" [] [] - 1: TS_TYPE_ARGUMENTS@662..665 - 0: L_ANGLE@662..663 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@663..664 - 0: TS_REFERENCE_TYPE@663..664 - 0: JS_REFERENCE_IDENTIFIER@663..664 - 0: IDENT@663..664 "x" [] [] + 2: R_ANGLE@569..570 ">" [] [] + 1: SEMICOLON@570..571 ";" [] [] + 23: JS_EXPRESSION_STATEMENT@571..579 + 0: JS_ARRAY_EXPRESSION@571..578 + 0: L_BRACK@571..573 "[" [Newline("\n")] [] + 1: JS_ARRAY_ELEMENT_LIST@573..577 + 0: TS_INSTANTIATION_EXPRESSION@573..577 + 0: JS_IDENTIFIER_EXPRESSION@573..574 + 0: JS_REFERENCE_IDENTIFIER@573..574 + 0: IDENT@573..574 "f" [] [] + 1: TS_TYPE_ARGUMENTS@574..577 + 0: L_ANGLE@574..575 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@575..576 + 0: TS_REFERENCE_TYPE@575..576 + 0: JS_REFERENCE_IDENTIFIER@575..576 + 0: IDENT@575..576 "x" [] [] 1: (empty) - 2: R_ANGLE@664..665 ">" [] [] - 2: R_BRACK@665..666 "]" [] [] - 1: SEMICOLON@666..667 ";" [] [] - 26: JS_BLOCK_STATEMENT@667..676 - 0: L_CURLY@667..670 "{" [Newline("\n")] [Whitespace(" ")] - 1: JS_STATEMENT_LIST@670..675 - 0: JS_EXPRESSION_STATEMENT@670..675 - 0: TS_INSTANTIATION_EXPRESSION@670..675 - 0: JS_IDENTIFIER_EXPRESSION@670..671 - 0: JS_REFERENCE_IDENTIFIER@670..671 - 0: IDENT@670..671 "f" [] [] - 1: TS_TYPE_ARGUMENTS@671..675 - 0: L_ANGLE@671..672 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@672..673 - 0: TS_REFERENCE_TYPE@672..673 - 0: JS_REFERENCE_IDENTIFIER@672..673 - 0: IDENT@672..673 "x" [] [] + 2: R_ANGLE@576..577 ">" [] [] + 2: R_BRACK@577..578 "]" [] [] + 1: SEMICOLON@578..579 ";" [] [] + 24: JS_BLOCK_STATEMENT@579..588 + 0: L_CURLY@579..582 "{" [Newline("\n")] [Whitespace(" ")] + 1: JS_STATEMENT_LIST@582..587 + 0: JS_EXPRESSION_STATEMENT@582..587 + 0: TS_INSTANTIATION_EXPRESSION@582..587 + 0: JS_IDENTIFIER_EXPRESSION@582..583 + 0: JS_REFERENCE_IDENTIFIER@582..583 + 0: IDENT@582..583 "f" [] [] + 1: TS_TYPE_ARGUMENTS@583..587 + 0: L_ANGLE@583..584 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@584..585 + 0: TS_REFERENCE_TYPE@584..585 + 0: JS_REFERENCE_IDENTIFIER@584..585 + 0: IDENT@584..585 "x" [] [] 1: (empty) - 2: R_ANGLE@673..675 ">" [] [Whitespace(" ")] + 2: R_ANGLE@585..587 ">" [] [Whitespace(" ")] 1: (empty) - 2: R_CURLY@675..676 "}" [] [] - 3: EOF@676..677 "" [Newline("\n")] [] + 2: R_CURLY@587..588 "}" [] [] + 3: EOF@588..589 "" [Newline("\n")] [] diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.ts b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.ts index 86c132c177d..956a945a4a4 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.ts +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions.ts @@ -2,8 +2,6 @@ let f1 = fx; let f2 = fx; let f3 = fx['test']; const a2 = f.g; // () => number -const a3 = f.g; // () => U -const a4 = f.g; // () => number const a5 = f['g']; // () => number const a7 = (f)['g']; const a6 = f['g']; // type Error