diff --git a/crates/rome_js_formatter/tests/specs/prettier/typescript/instantiation-expression/binary-expr.ts.snap b/crates/rome_js_formatter/tests/specs/prettier/typescript/instantiation-expression/binary-expr.ts.snap deleted file mode 100644 index cfa956a2231..00000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/typescript/instantiation-expression/binary-expr.ts.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/rome_formatter_test/src/snapshot_builder.rs -info: - test_file: typescript/instantiation-expression/binary-expr.ts ---- - -# Input - -```ts -new A < B > -C - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -1,2 +1 @@ --new A(); --C; -+new A() < B > C; -``` - -# Output - -```ts -new A() < B > C; -``` - - diff --git a/crates/rome_js_parser/src/syntax/expr.rs b/crates/rome_js_parser/src/syntax/expr.rs index 682524473a8..4f217bedaa5 100644 --- a/crates/rome_js_parser/src/syntax/expr.rs +++ b/crates/rome_js_parser/src/syntax/expr.rs @@ -427,6 +427,15 @@ pub(super) fn parse_conditional_expr(p: &mut JsParser, context: ExpressionContex } } +pub(crate) fn is_at_binary_operator(p: &JsParser, context: ExpressionContext) -> bool { + let cur_kind = p.cur(); + + match cur_kind { + T![in] => context.is_in_included(), + kind => OperatorPrecedence::try_from_binary_operator(kind).is_some(), + } +} + /// A binary expression such as `2 + 2` or `foo * bar + 2` or a logical expression 'a || b' fn parse_binary_or_logical_expression( p: &mut JsParser, @@ -768,7 +777,7 @@ fn parse_member_expression_rest( } T![<] | T![<<] => { // only those two possible token in cur position `parse_ts_type_arguments_in_expression` could possibly return a `Present(_)` - if let Present(_) = parse_ts_type_arguments_in_expression(p) { + if let Present(_) = parse_ts_type_arguments_in_expression(p, context) { let new_marker = lhs.precede(p); lhs = new_marker.complete(p, JsSyntaxKind::TS_INSTANTIATION_EXPRESSION); continue; @@ -930,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); @@ -1233,6 +1260,7 @@ pub(crate) fn is_nth_at_expression(p: &mut JsParser, n: usize) -> bool { | TRUE_KW | FALSE_KW | JS_NUMBER_LITERAL + | JS_BIG_INT_LITERAL | JS_STRING_LITERAL | NULL_KW => true, t => t.is_contextual_keyword() || t.is_future_reserved_keyword(), @@ -1766,7 +1794,7 @@ fn parse_call_expression_rest( // a<(arg: T) => number, number, string>(); let type_arguments = if optional_chain_call { - let type_arguments = parse_ts_type_arguments_in_expression(p).ok(); + let type_arguments = parse_ts_type_arguments_in_expression(p, context).ok(); if p.cur() == BACKTICK { // test ts ts_tagged_template_literal // html`abcd` diff --git a/crates/rome_js_parser/src/syntax/typescript/types.rs b/crates/rome_js_parser/src/syntax/typescript/types.rs index 2b42cc90e4f..ead88502d18 100644 --- a/crates/rome_js_parser/src/syntax/typescript/types.rs +++ b/crates/rome_js_parser/src/syntax/typescript/types.rs @@ -2,10 +2,10 @@ use crate::parser::{RecoveryError, RecoveryResult}; use crate::prelude::*; use crate::state::{EnterType, SignatureFlags}; use crate::syntax::expr::{ - is_at_identifier, is_nth_at_identifier, is_nth_at_identifier_or_keyword, - parse_big_int_literal_expression, parse_identifier, parse_literal_expression, parse_name, - parse_number_literal_expression, parse_reference_identifier, parse_template_elements, - ExpressionContext, + is_at_binary_operator, is_at_expression, is_at_identifier, is_nth_at_identifier, + is_nth_at_identifier_or_keyword, parse_big_int_literal_expression, parse_identifier, + parse_literal_expression, parse_name, parse_number_literal_expression, + parse_reference_identifier, parse_template_elements, ExpressionContext, }; use crate::syntax::function::{ parse_formal_parameter, parse_parameter_list, skip_parameter_start, ParameterContext, @@ -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 @@ -1256,21 +1254,245 @@ fn parse_ts_type_predicate(p: &mut JsParser) -> ParsedSyntax { // const b4 = f?.(); // Type Error, expected no type arguments // const x1 = f // (true); -// // Parsed as relational expression // const x2 = f // true; -// // Parsed as instantiation expression // const x3 = f; // true; +// (f); +// (f)(); +// (f)?.(); +// (a?.f)(); +// new (a)(); +// f<() => T>?.(); +// f?.<() => T>(); +// f ? g : h; +// [f]; +// { f } // test ts ts_type_instantiation_expression // type StringBox = Box; -// test_err ts ts_instantiation_expressions1 +// test ts ts_instantiation_expressions_1 +// class A { +// constructor() { +// f super(); +// } +// } +// f``; +// f(1); +// f ?? 1; +// f || 1; +// f && 1; +// f | 1; +// f ^ 1; +// f & 1; +// f == f; +// f != f; +// f === f; +// f !== f; +// f <= f; +// f instanceof f; +// f in {}; +// f as {}; +// f satisfies {}; +// f * f; +// f / f; +// f % f; +// f ** f; +// f < T > +f; +// f < T > -f; +// f < T > this; +// f < T > null; +// f < T > true; +// f < T > false; +// f < T > 1; +// f < T > 123n; +// f < T > []; +// f < T > {}; +// f < T > function test() {}; +// f < T > class A {}; +// f < T > new A(); +// f / 1; +// f < T > +1; +// f < T > -1; +// f < T > ~1; +// f < T > !1; +// f < T > someIdentifier; +// f < T > delete a[field]; +// f < T > typeof MyClass; +// f < T > void a; +// f <= 1; +// f < T > (await 1); +// f < T > import.meta; +// f < T > import("123"); +// a < b >> c; +// f = h >>> 0 < j >>> 0; + +// test ts ts_instantiation_expressions_new_line +// class A { +// constructor() { +// f +// super(); +// } +// } +// function *f() { +// const f = f +// yield; +// } +// f +// ?? 1; +// f +// || 1; +// f +// && 1; +// f +// | 1; +// f +// ^ 1; +// f +// & 1; +// f +// == f; +// f +// <= f; +// f +// != f; +// f +// === f; +// f +// !== f; +// f +// instanceof f; +// f +// in {}; +// f +// * f; +// f +// / f; +// f +// % f; +// f +// ** f; +// f +// +f; +// f +// -f; +// f +// this; +// f +// null; +// f +// true; +// f +// false; +// f +// 1; +// f +// 123n; +// f +// {}; +// f +// function test() {}; +// f +// class A {}; +// f +// new A(); +// f +// / 1; +// f +// +1; +// f +// -1; +// f +// ~1; +// f +// !1; +// f +// someIdentifier; +// f +// delete a[field]; +// f +// typeof MyClass; +// f +// void a; +// f +// <= 1; +// f +// (await 1); +// f +// import.meta; +// f +// import("123"); + +// test ts ts_instantiation_expressions_asi +// const x5 = f +// let yy = 0; +// const x6 = f +// interface I {} +// let x10 = f +// this.bar() +// let x11 = f +// function bar() {} +// let x12 = f +// class C {} +// let x13 = f +// bar() +// let x14 = f +// void bar() +// class C1 { +// static specialFoo = f +// static bar = 123 +// } +// class C2 { +// public specialFoo = f +// public bar = 123 +// } +// class C3 { +// private specialFoo = f +// private bar = 123 +// } +// class C4 { +// protected specialFoo = f +// protected bar = 123 +// } +// class C5 { +// protected specialFoo = f +// #bar = 123 +// } +// const Bar = Foo +// const Baz = 123 + +// test_err ts ts_instantiation_expressions_1 // const a8 = f; // Relational operator error // const b1 = f?.; // Error, `(` expected +// f << f; +// f = g; +// f >> f; +// f >= f; +// f < f; +// f > f; +// f import<1>; +// f yield; +// f ++; +// f --; +// f /= 1; +// f <= f; +// f << f; +// f +// []; +// f +// as {}; +// f +// satisfies {}; +// class C5 { +// protected specialFoo = f #bar = 123 +// } +// for (const a = b.test in []) {} -pub(crate) fn parse_ts_type_arguments_in_expression(p: &mut JsParser) -> ParsedSyntax { +pub(crate) fn parse_ts_type_arguments_in_expression( + p: &mut JsParser, + context: ExpressionContext, +) -> ParsedSyntax { // Don't parse type arguments in JS because the syntax is ambiguous // https://github.com/microsoft/TypeScript/issues/36662 @@ -1285,7 +1507,7 @@ pub(crate) fn parse_ts_type_arguments_in_expression(p: &mut JsParser) -> ParsedS p.re_lex(ReLexContext::TypeArgumentLessThan); let arguments = parse_ts_type_arguments_impl(p, false); - if p.last() == Some(T![>]) && can_follow_type_arguments_in_expr(p.cur()) { + if p.last() == Some(T![>]) && can_follow_type_arguments_in_expr(p, context) { Ok(Present(arguments)) } else { Err(()) @@ -1294,36 +1516,23 @@ pub(crate) fn parse_ts_type_arguments_in_expression(p: &mut JsParser) -> ParsedS .unwrap_or(Absent) } -#[inline] -pub fn can_follow_type_arguments_in_expr(cur_kind: JsSyntaxKind) -> bool { - matches!( - cur_kind, - T!['('] - | BACKTICK - // These tokens can't follow in a call expression, nor can they start an - // expression. So, consider the type argument list part of an instantiation - // expression. - | T![,] - | T![.] - | T![?.] - | T![')'] - | T![']'] - | T![:] - | T![;] - | T![?] - | T![==] - | T![===] - | T![!=] - | T![!==] - | T![&&] - | T![||] - | T![??] - | T![^] - | T![&] - | T![|] - | T!['}'] - | EOF - ) +fn can_follow_type_arguments_in_expr(p: &mut JsParser, context: ExpressionContext) -> bool { + let cur_kind = p.cur(); + match cur_kind { + // These tokens can follow a type argument list in a call expression. + T!['('] | BACKTICK | EOF => true, + // A type argument list followed by `<` never makes sense, and a type argument list followed + // by `>` is ambiguous with a (re-scanned) `>>` operator, so we disqualify both. Also, in + // this context, `+` and `-` are unary operators, not binary operators. + T![<] | T![>] | T![+] | T![-] => false, + // We favor the type argument list interpretation when it is immediately followed by + // a line break, a binary operator, or something that can't start an expression. + _ => { + p.has_preceding_line_break() + || is_at_binary_operator(p, context) + || !is_at_expression(p) + } + } } pub(crate) fn parse_ts_type_arguments(p: &mut JsParser) -> ParsedSyntax { 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/err/ts_instantiation_expressions1.rast b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions1.rast deleted file mode 100644 index 5cb97ff4afc..00000000000 --- a/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions1.rast +++ /dev/null @@ -1,171 +0,0 @@ -JsModule { - interpreter_token: missing (optional), - directives: JsDirectiveList [], - items: JsModuleItemList [ - JsVariableStatement { - declaration: JsVariableDeclaration { - kind: CONST_KW@0..6 "const" [] [Whitespace(" ")], - declarators: JsVariableDeclaratorList [ - JsVariableDeclarator { - id: JsIdentifierBinding { - name_token: IDENT@6..9 "a8" [] [Whitespace(" ")], - }, - variable_annotation: missing (optional), - initializer: JsInitializerClause { - eq_token: EQ@9..11 "=" [] [Whitespace(" ")], - expression: JsBinaryExpression { - left: JsBinaryExpression { - left: JsIdentifierExpression { - name: JsReferenceIdentifier { - value_token: IDENT@11..12 "f" [] [], - }, - }, - operator_token: L_ANGLE@12..13 "<" [] [], - right: JsIdentifierExpression { - name: JsReferenceIdentifier { - value_token: IDENT@13..19 "number" [] [], - }, - }, - }, - operator_token: R_ANGLE@19..20 ">" [] [], - right: TsTypeAssertionExpression { - l_angle_token: L_ANGLE@20..21 "<" [] [], - ty: TsNumberType { - number_token: NUMBER_KW@21..27 "number" [] [], - }, - r_angle_token: R_ANGLE@27..28 ">" [] [], - expression: missing (required), - }, - }, - }, - }, - ], - }, - semicolon_token: SEMICOLON@28..59 ";" [] [Whitespace(" "), Comments("// Relational operato ...")], - }, - JsVariableStatement { - declaration: JsVariableDeclaration { - kind: CONST_KW@59..66 "const" [Newline("\n")] [Whitespace(" ")], - declarators: JsVariableDeclaratorList [ - JsVariableDeclarator { - id: JsIdentifierBinding { - name_token: IDENT@66..69 "b1" [] [Whitespace(" ")], - }, - variable_annotation: missing (optional), - initializer: JsInitializerClause { - eq_token: EQ@69..71 "=" [] [Whitespace(" ")], - expression: JsCallExpression { - callee: JsIdentifierExpression { - name: JsReferenceIdentifier { - value_token: IDENT@71..72 "f" [] [], - }, - }, - optional_chain_token: QUESTIONDOT@72..74 "?." [] [], - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@74..75 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsNumberType { - number_token: NUMBER_KW@75..81 "number" [] [], - }, - ], - r_angle_token: R_ANGLE@81..82 ">" [] [], - }, - arguments: missing (required), - }, - }, - }, - ], - }, - semicolon_token: SEMICOLON@82..107 ";" [] [Whitespace(" "), Comments("// Error, `(` expected")], - }, - ], - eof_token: EOF@107..108 "" [Newline("\n")] [], -} - -0: JS_MODULE@0..108 - 0: (empty) - 1: JS_DIRECTIVE_LIST@0..0 - 2: JS_MODULE_ITEM_LIST@0..107 - 0: JS_VARIABLE_STATEMENT@0..59 - 0: JS_VARIABLE_DECLARATION@0..28 - 0: CONST_KW@0..6 "const" [] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@6..28 - 0: JS_VARIABLE_DECLARATOR@6..28 - 0: JS_IDENTIFIER_BINDING@6..9 - 0: IDENT@6..9 "a8" [] [Whitespace(" ")] - 1: (empty) - 2: JS_INITIALIZER_CLAUSE@9..28 - 0: EQ@9..11 "=" [] [Whitespace(" ")] - 1: JS_BINARY_EXPRESSION@11..28 - 0: JS_BINARY_EXPRESSION@11..19 - 0: JS_IDENTIFIER_EXPRESSION@11..12 - 0: JS_REFERENCE_IDENTIFIER@11..12 - 0: IDENT@11..12 "f" [] [] - 1: L_ANGLE@12..13 "<" [] [] - 2: JS_IDENTIFIER_EXPRESSION@13..19 - 0: JS_REFERENCE_IDENTIFIER@13..19 - 0: IDENT@13..19 "number" [] [] - 1: R_ANGLE@19..20 ">" [] [] - 2: TS_TYPE_ASSERTION_EXPRESSION@20..28 - 0: L_ANGLE@20..21 "<" [] [] - 1: TS_NUMBER_TYPE@21..27 - 0: NUMBER_KW@21..27 "number" [] [] - 2: R_ANGLE@27..28 ">" [] [] - 3: (empty) - 1: SEMICOLON@28..59 ";" [] [Whitespace(" "), Comments("// Relational operato ...")] - 1: JS_VARIABLE_STATEMENT@59..107 - 0: JS_VARIABLE_DECLARATION@59..82 - 0: CONST_KW@59..66 "const" [Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@66..82 - 0: JS_VARIABLE_DECLARATOR@66..82 - 0: JS_IDENTIFIER_BINDING@66..69 - 0: IDENT@66..69 "b1" [] [Whitespace(" ")] - 1: (empty) - 2: JS_INITIALIZER_CLAUSE@69..82 - 0: EQ@69..71 "=" [] [Whitespace(" ")] - 1: JS_CALL_EXPRESSION@71..82 - 0: JS_IDENTIFIER_EXPRESSION@71..72 - 0: JS_REFERENCE_IDENTIFIER@71..72 - 0: IDENT@71..72 "f" [] [] - 1: QUESTIONDOT@72..74 "?." [] [] - 2: TS_TYPE_ARGUMENTS@74..82 - 0: L_ANGLE@74..75 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@75..81 - 0: TS_NUMBER_TYPE@75..81 - 0: NUMBER_KW@75..81 "number" [] [] - 2: R_ANGLE@81..82 ">" [] [] - 3: (empty) - 1: SEMICOLON@82..107 ";" [] [Whitespace(" "), Comments("// Error, `(` expected")] - 3: EOF@107..108 "" [Newline("\n")] [] --- -ts_instantiation_expressions1.ts:1:29 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - - × expected an expression but instead found ';' - - > 1 │ const a8 = f; // Relational operator error - │ ^ - 2 │ const b1 = f?.; // Error, `(` expected - 3 │ - - i Expected an expression here - - > 1 │ const a8 = f; // Relational operator error - │ ^ - 2 │ const b1 = f?.; // Error, `(` expected - 3 │ - --- -ts_instantiation_expressions1.ts:2:23 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - - × expected `(` but instead found `;` - - 1 │ const a8 = f; // Relational operator error - > 2 │ const b1 = f?.; // Error, `(` expected - │ ^ - 3 │ - - i Remove ; - --- -const a8 = f; // Relational operator error -const b1 = f?.; // Error, `(` expected diff --git a/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions1.ts b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions1.ts deleted file mode 100644 index 3f80de13b1b..00000000000 --- a/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions1.ts +++ /dev/null @@ -1,2 +0,0 @@ -const a8 = f; // Relational operator error -const b1 = f?.; // Error, `(` expected diff --git a/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.rast b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.rast new file mode 100644 index 00000000000..4d882ea13ab --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.rast @@ -0,0 +1,1826 @@ +JsModule { + interpreter_token: missing (optional), + directives: JsDirectiveList [], + items: JsModuleItemList [ + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: CONST_KW@0..6 "const" [] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@6..9 "a8" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@9..11 "=" [] [Whitespace(" ")], + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@11..12 "f" [] [], + }, + }, + operator_token: L_ANGLE@12..13 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@13..19 "number" [] [], + }, + }, + }, + operator_token: R_ANGLE@19..20 ">" [] [], + right: TsTypeAssertionExpression { + l_angle_token: L_ANGLE@20..21 "<" [] [], + ty: TsNumberType { + number_token: NUMBER_KW@21..27 "number" [] [], + }, + r_angle_token: R_ANGLE@27..28 ">" [] [], + expression: missing (required), + }, + }, + }, + }, + ], + }, + semicolon_token: SEMICOLON@28..59 ";" [] [Whitespace(" "), Comments("// Relational operato ...")], + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: CONST_KW@59..66 "const" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@66..69 "b1" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@69..71 "=" [] [Whitespace(" ")], + expression: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@71..72 "f" [] [], + }, + }, + optional_chain_token: QUESTIONDOT@72..74 "?." [] [], + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@74..75 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsNumberType { + number_token: NUMBER_KW@75..81 "number" [] [], + }, + ], + r_angle_token: R_ANGLE@81..82 ">" [] [], + }, + arguments: missing (required), + }, + }, + }, + ], + }, + semicolon_token: SEMICOLON@82..107 ";" [] [Whitespace(" "), Comments("// Error, `(` expected")], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@107..109 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@109..110 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@110..111 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@111..113 ">" [] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@113..114 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@114..116 "<" [] [Whitespace(" ")], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@116..117 "f" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: missing (required), + }, + parameters: missing (required), + fat_arrow_token: missing (required), + return_type: TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@117..118 "<" [] [], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@118..119 "T" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: R_ANGLE@119..120 ">" [] [], + }, + parameters: missing (required), + fat_arrow_token: missing (required), + return_type: missing (required), + }, + }, + ], + r_angle_token: missing (required), + }, + }, + semicolon_token: SEMICOLON@120..121 ";" [] [], + }, + JsExpressionStatement { + expression: JsAssignmentExpression { + left: JsBogusAssignment { + items: [ + JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@121..123 "f" [Newline("\n")] [], + }, + }, + TsTypeArguments { + l_angle_token: L_ANGLE@123..124 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@124..125 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@125..127 ">" [] [Whitespace(" ")], + }, + ], + }, + operator_token: EQ@127..129 "=" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@129..130 "g" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@130..131 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@131..132 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@132..133 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@133..134 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@134..136 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@136..137 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@137..138 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@138..140 ">" [] [Whitespace(" ")], + right: JsBinaryExpression { + left: missing (required), + operator_token: SHR@140..143 ">>" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@143..144 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@144..145 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@145..146 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@146..147 ">" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@147..148 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@148..150 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@150..151 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@151..152 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@152..154 ">" [] [Whitespace(" ")], + right: missing (required), + }, + operator_token: GTEQ@154..157 ">=" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@157..158 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@158..159 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@159..160 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@160..161 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@161..162 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@162..164 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@164..165 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@165..166 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@166..168 ">" [] [Whitespace(" ")], + right: TsTypeAssertionExpression { + l_angle_token: L_ANGLE@168..170 "<" [] [Whitespace(" ")], + ty: TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@170..171 "f" [] [], + }, + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@171..172 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@172..173 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@173..174 ">" [] [], + }, + }, + r_angle_token: missing (required), + expression: missing (required), + }, + }, + semicolon_token: SEMICOLON@174..175 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@175..177 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@177..178 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@178..179 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@179..181 ">" [] [Whitespace(" ")], + right: missing (required), + }, + operator_token: R_ANGLE@181..183 ">" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@183..184 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@184..185 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@185..186 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@186..187 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@187..188 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@188..190 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@190..191 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@191..192 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@192..194 ">" [] [Whitespace(" ")], + right: missing (required), + }, + semicolon_token: missing (optional), + }, + JsImport { + import_token: IMPORT_KW@194..200 "import" [] [], + import_clause: missing (required), + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: TsTypeAssertionExpression { + l_angle_token: L_ANGLE@200..201 "<" [] [], + ty: TsNumberLiteralType { + minus_token: missing (optional), + literal_token: JS_NUMBER_LITERAL@201..202 "1" [] [], + }, + r_angle_token: R_ANGLE@202..203 ">" [] [], + expression: missing (required), + }, + semicolon_token: SEMICOLON@203..204 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@204..206 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@206..207 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@207..208 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@208..210 ">" [] [Whitespace(" ")], + right: JsBogusExpression { + items: [ + JsBogus { + items: [ + IDENT@210..215 "yield" [] [], + ], + }, + ], + }, + }, + semicolon_token: SEMICOLON@215..216 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@216..218 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@218..219 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@219..220 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@220..222 ">" [] [Whitespace(" ")], + right: JsPreUpdateExpression { + operator_token: PLUS2@222..224 "++" [] [], + operand: missing (required), + }, + }, + semicolon_token: SEMICOLON@224..225 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@225..227 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@227..228 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@228..229 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@229..231 ">" [] [Whitespace(" ")], + right: JsPreUpdateExpression { + operator_token: MINUS2@231..233 "--" [] [], + operand: missing (required), + }, + }, + semicolon_token: SEMICOLON@233..234 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@234..236 "f" [Newline("\n")] [], + }, + }, + operator_token: L_ANGLE@236..237 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@237..238 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@238..240 ">" [] [Whitespace(" ")], + right: JsRegexLiteralExpression { + value_token: JS_REGEX_LITERAL@240..245 "/= 1;" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@245..247 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@247..248 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@248..249 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@249..251 ">" [] [Whitespace(" ")], + }, + }, + operator_token: LTEQ@251..254 "<=" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@254..255 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@255..256 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@256..257 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@257..258 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@258..259 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@259..261 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@261..262 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@262..263 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@263..265 ">" [] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@265..266 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@266..268 "<" [] [Whitespace(" ")], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@268..269 "f" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: missing (required), + }, + parameters: missing (required), + fat_arrow_token: missing (required), + return_type: TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@269..270 "<" [] [], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@270..271 "T" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: R_ANGLE@271..272 ">" [] [], + }, + parameters: missing (required), + fat_arrow_token: missing (required), + return_type: missing (required), + }, + }, + ], + r_angle_token: missing (required), + }, + }, + semicolon_token: SEMICOLON@272..273 ";" [] [], + }, + JsExpressionStatement { + expression: JsComputedMemberExpression { + object: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@273..276 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@276..277 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@277..278 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@278..279 ">" [] [], + }, + }, + optional_chain_token: missing (optional), + l_brack_token: L_BRACK@279..281 "[" [Newline("\n")] [], + member: missing (required), + r_brack_token: R_BRACK@281..282 "]" [] [], + }, + semicolon_token: SEMICOLON@282..283 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@283..285 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@285..286 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@286..287 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@287..288 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@288..292 "as" [Newline("\n")] [Whitespace(" ")], + }, + }, + semicolon_token: missing (optional), + }, + JsBlockStatement { + l_curly_token: L_CURLY@292..293 "{" [] [], + statements: JsStatementList [], + r_curly_token: R_CURLY@293..294 "}" [] [], + }, + JsEmptyStatement { + semicolon_token: SEMICOLON@294..295 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@295..297 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@297..298 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@298..299 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@299..300 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@300..311 "satisfies" [Newline("\n")] [Whitespace(" ")], + }, + }, + semicolon_token: missing (optional), + }, + JsBlockStatement { + l_curly_token: L_CURLY@311..312 "{" [] [], + statements: JsStatementList [], + r_curly_token: R_CURLY@312..313 "}" [] [], + }, + JsEmptyStatement { + semicolon_token: SEMICOLON@313..314 ";" [] [], + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@314..321 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@321..324 "C5" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@324..325 "{" [] [], + members: JsClassMemberList [ + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PROTECTED_KW@325..340 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@340..351 "specialFoo" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@351..353 "=" [] [Whitespace(" ")], + expression: JsAssignmentExpression { + left: JsBogusAssignment { + items: [ + JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@353..354 "f" [] [], + }, + }, + operator_token: L_ANGLE@354..355 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@355..361 "string" [] [], + }, + }, + }, + R_ANGLE@361..363 ">" [] [Whitespace(" ")], + JsBogusExpression { + items: [ + HASH@363..364 "#" [] [], + IDENT@364..368 "bar" [] [Whitespace(" ")], + ], + }, + ], + }, + operator_token: EQ@368..370 "=" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@370..373 "123" [] [], + }, + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@373..375 "}" [Newline("\n")] [], + }, + JsForInStatement { + for_token: FOR_KW@375..380 "for" [Newline("\n")] [Whitespace(" ")], + l_paren_token: L_PAREN@380..381 "(" [] [], + initializer: JsForVariableDeclaration { + kind_token: CONST_KW@381..387 "const" [] [Whitespace(" ")], + declarator: JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@387..389 "a" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@389..391 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsStaticMemberExpression { + object: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@391..392 "b" [] [], + }, + }, + operator_token: DOT@392..393 "." [] [], + member: JsName { + value_token: IDENT@393..397 "test" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@397..398 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsStringType { + string_token: STRING_KW@398..404 "string" [] [], + }, + ], + r_angle_token: R_ANGLE@404..406 ">" [] [Whitespace(" ")], + }, + }, + }, + }, + }, + in_token: IN_KW@406..409 "in" [] [Whitespace(" ")], + expression: JsArrayExpression { + l_brack_token: L_BRACK@409..410 "[" [] [], + elements: JsArrayElementList [], + r_brack_token: R_BRACK@410..411 "]" [] [], + }, + r_paren_token: R_PAREN@411..413 ")" [] [Whitespace(" ")], + body: JsBlockStatement { + l_curly_token: L_CURLY@413..414 "{" [] [], + statements: JsStatementList [], + r_curly_token: R_CURLY@414..415 "}" [] [], + }, + }, + ], + eof_token: EOF@415..416 "" [Newline("\n")] [], +} + +0: JS_MODULE@0..416 + 0: (empty) + 1: JS_DIRECTIVE_LIST@0..0 + 2: JS_MODULE_ITEM_LIST@0..415 + 0: JS_VARIABLE_STATEMENT@0..59 + 0: JS_VARIABLE_DECLARATION@0..28 + 0: CONST_KW@0..6 "const" [] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@6..28 + 0: JS_VARIABLE_DECLARATOR@6..28 + 0: JS_IDENTIFIER_BINDING@6..9 + 0: IDENT@6..9 "a8" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@9..28 + 0: EQ@9..11 "=" [] [Whitespace(" ")] + 1: JS_BINARY_EXPRESSION@11..28 + 0: JS_BINARY_EXPRESSION@11..19 + 0: JS_IDENTIFIER_EXPRESSION@11..12 + 0: JS_REFERENCE_IDENTIFIER@11..12 + 0: IDENT@11..12 "f" [] [] + 1: L_ANGLE@12..13 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@13..19 + 0: JS_REFERENCE_IDENTIFIER@13..19 + 0: IDENT@13..19 "number" [] [] + 1: R_ANGLE@19..20 ">" [] [] + 2: TS_TYPE_ASSERTION_EXPRESSION@20..28 + 0: L_ANGLE@20..21 "<" [] [] + 1: TS_NUMBER_TYPE@21..27 + 0: NUMBER_KW@21..27 "number" [] [] + 2: R_ANGLE@27..28 ">" [] [] + 3: (empty) + 1: SEMICOLON@28..59 ";" [] [Whitespace(" "), Comments("// Relational operato ...")] + 1: JS_VARIABLE_STATEMENT@59..107 + 0: JS_VARIABLE_DECLARATION@59..82 + 0: CONST_KW@59..66 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@66..82 + 0: JS_VARIABLE_DECLARATOR@66..82 + 0: JS_IDENTIFIER_BINDING@66..69 + 0: IDENT@66..69 "b1" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@69..82 + 0: EQ@69..71 "=" [] [Whitespace(" ")] + 1: JS_CALL_EXPRESSION@71..82 + 0: JS_IDENTIFIER_EXPRESSION@71..72 + 0: JS_REFERENCE_IDENTIFIER@71..72 + 0: IDENT@71..72 "f" [] [] + 1: QUESTIONDOT@72..74 "?." [] [] + 2: TS_TYPE_ARGUMENTS@74..82 + 0: L_ANGLE@74..75 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@75..81 + 0: TS_NUMBER_TYPE@75..81 + 0: NUMBER_KW@75..81 "number" [] [] + 2: R_ANGLE@81..82 ">" [] [] + 3: (empty) + 1: SEMICOLON@82..107 ";" [] [Whitespace(" "), Comments("// Error, `(` expected")] + 2: JS_EXPRESSION_STATEMENT@107..121 + 0: TS_INSTANTIATION_EXPRESSION@107..120 + 0: TS_INSTANTIATION_EXPRESSION@107..113 + 0: JS_IDENTIFIER_EXPRESSION@107..109 + 0: JS_REFERENCE_IDENTIFIER@107..109 + 0: IDENT@107..109 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@109..113 + 0: L_ANGLE@109..110 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@110..111 + 0: TS_REFERENCE_TYPE@110..111 + 0: JS_REFERENCE_IDENTIFIER@110..111 + 0: IDENT@110..111 "T" [] [] + 1: (empty) + 2: R_ANGLE@111..113 ">" [] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@113..120 + 0: L_ANGLE@113..114 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@114..120 + 0: TS_FUNCTION_TYPE@114..120 + 0: TS_TYPE_PARAMETERS@114..117 + 0: L_ANGLE@114..116 "<" [] [Whitespace(" ")] + 1: TS_TYPE_PARAMETER_LIST@116..117 + 0: TS_TYPE_PARAMETER@116..117 + 0: TS_TYPE_PARAMETER_NAME@116..117 + 0: IDENT@116..117 "f" [] [] + 1: (empty) + 2: (empty) + 2: (empty) + 1: (empty) + 2: (empty) + 3: TS_FUNCTION_TYPE@117..120 + 0: TS_TYPE_PARAMETERS@117..120 + 0: L_ANGLE@117..118 "<" [] [] + 1: TS_TYPE_PARAMETER_LIST@118..119 + 0: TS_TYPE_PARAMETER@118..119 + 0: TS_TYPE_PARAMETER_NAME@118..119 + 0: IDENT@118..119 "T" [] [] + 1: (empty) + 2: (empty) + 2: R_ANGLE@119..120 ">" [] [] + 1: (empty) + 2: (empty) + 3: (empty) + 2: (empty) + 1: SEMICOLON@120..121 ";" [] [] + 3: JS_EXPRESSION_STATEMENT@121..134 + 0: JS_ASSIGNMENT_EXPRESSION@121..133 + 0: JS_BOGUS_ASSIGNMENT@121..127 + 0: JS_IDENTIFIER_EXPRESSION@121..123 + 0: JS_REFERENCE_IDENTIFIER@121..123 + 0: IDENT@121..123 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@123..127 + 0: L_ANGLE@123..124 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@124..125 + 0: TS_REFERENCE_TYPE@124..125 + 0: JS_REFERENCE_IDENTIFIER@124..125 + 0: IDENT@124..125 "T" [] [] + 1: (empty) + 2: R_ANGLE@125..127 ">" [] [Whitespace(" ")] + 1: EQ@127..129 "=" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@129..133 + 0: JS_IDENTIFIER_EXPRESSION@129..130 + 0: JS_REFERENCE_IDENTIFIER@129..130 + 0: IDENT@129..130 "g" [] [] + 1: TS_TYPE_ARGUMENTS@130..133 + 0: L_ANGLE@130..131 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@131..132 + 0: TS_REFERENCE_TYPE@131..132 + 0: JS_REFERENCE_IDENTIFIER@131..132 + 0: IDENT@131..132 "K" [] [] + 1: (empty) + 2: R_ANGLE@132..133 ">" [] [] + 1: SEMICOLON@133..134 ";" [] [] + 4: JS_EXPRESSION_STATEMENT@134..148 + 0: JS_BINARY_EXPRESSION@134..147 + 0: JS_BINARY_EXPRESSION@134..138 + 0: JS_IDENTIFIER_EXPRESSION@134..136 + 0: JS_REFERENCE_IDENTIFIER@134..136 + 0: IDENT@134..136 "f" [Newline("\n")] [] + 1: L_ANGLE@136..137 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@137..138 + 0: JS_REFERENCE_IDENTIFIER@137..138 + 0: IDENT@137..138 "T" [] [] + 1: R_ANGLE@138..140 ">" [] [Whitespace(" ")] + 2: JS_BINARY_EXPRESSION@140..147 + 0: (empty) + 1: SHR@140..143 ">>" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@143..147 + 0: JS_IDENTIFIER_EXPRESSION@143..144 + 0: JS_REFERENCE_IDENTIFIER@143..144 + 0: IDENT@143..144 "f" [] [] + 1: TS_TYPE_ARGUMENTS@144..147 + 0: L_ANGLE@144..145 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@145..146 + 0: TS_REFERENCE_TYPE@145..146 + 0: JS_REFERENCE_IDENTIFIER@145..146 + 0: IDENT@145..146 "T" [] [] + 1: (empty) + 2: R_ANGLE@146..147 ">" [] [] + 1: SEMICOLON@147..148 ";" [] [] + 5: JS_EXPRESSION_STATEMENT@148..162 + 0: JS_BINARY_EXPRESSION@148..161 + 0: JS_BINARY_EXPRESSION@148..154 + 0: JS_BINARY_EXPRESSION@148..152 + 0: JS_IDENTIFIER_EXPRESSION@148..150 + 0: JS_REFERENCE_IDENTIFIER@148..150 + 0: IDENT@148..150 "f" [Newline("\n")] [] + 1: L_ANGLE@150..151 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@151..152 + 0: JS_REFERENCE_IDENTIFIER@151..152 + 0: IDENT@151..152 "T" [] [] + 1: R_ANGLE@152..154 ">" [] [Whitespace(" ")] + 2: (empty) + 1: GTEQ@154..157 ">=" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@157..161 + 0: JS_IDENTIFIER_EXPRESSION@157..158 + 0: JS_REFERENCE_IDENTIFIER@157..158 + 0: IDENT@157..158 "f" [] [] + 1: TS_TYPE_ARGUMENTS@158..161 + 0: L_ANGLE@158..159 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@159..160 + 0: TS_REFERENCE_TYPE@159..160 + 0: JS_REFERENCE_IDENTIFIER@159..160 + 0: IDENT@159..160 "T" [] [] + 1: (empty) + 2: R_ANGLE@160..161 ">" [] [] + 1: SEMICOLON@161..162 ";" [] [] + 6: JS_EXPRESSION_STATEMENT@162..175 + 0: JS_BINARY_EXPRESSION@162..174 + 0: JS_BINARY_EXPRESSION@162..166 + 0: JS_IDENTIFIER_EXPRESSION@162..164 + 0: JS_REFERENCE_IDENTIFIER@162..164 + 0: IDENT@162..164 "f" [Newline("\n")] [] + 1: L_ANGLE@164..165 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@165..166 + 0: JS_REFERENCE_IDENTIFIER@165..166 + 0: IDENT@165..166 "T" [] [] + 1: R_ANGLE@166..168 ">" [] [Whitespace(" ")] + 2: TS_TYPE_ASSERTION_EXPRESSION@168..174 + 0: L_ANGLE@168..170 "<" [] [Whitespace(" ")] + 1: TS_REFERENCE_TYPE@170..174 + 0: JS_REFERENCE_IDENTIFIER@170..171 + 0: IDENT@170..171 "f" [] [] + 1: TS_TYPE_ARGUMENTS@171..174 + 0: L_ANGLE@171..172 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@172..173 + 0: TS_REFERENCE_TYPE@172..173 + 0: JS_REFERENCE_IDENTIFIER@172..173 + 0: IDENT@172..173 "T" [] [] + 1: (empty) + 2: R_ANGLE@173..174 ">" [] [] + 2: (empty) + 3: (empty) + 1: SEMICOLON@174..175 ";" [] [] + 7: JS_EXPRESSION_STATEMENT@175..188 + 0: JS_BINARY_EXPRESSION@175..187 + 0: JS_BINARY_EXPRESSION@175..181 + 0: JS_BINARY_EXPRESSION@175..179 + 0: JS_IDENTIFIER_EXPRESSION@175..177 + 0: JS_REFERENCE_IDENTIFIER@175..177 + 0: IDENT@175..177 "f" [Newline("\n")] [] + 1: L_ANGLE@177..178 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@178..179 + 0: JS_REFERENCE_IDENTIFIER@178..179 + 0: IDENT@178..179 "T" [] [] + 1: R_ANGLE@179..181 ">" [] [Whitespace(" ")] + 2: (empty) + 1: R_ANGLE@181..183 ">" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@183..187 + 0: JS_IDENTIFIER_EXPRESSION@183..184 + 0: JS_REFERENCE_IDENTIFIER@183..184 + 0: IDENT@183..184 "f" [] [] + 1: TS_TYPE_ARGUMENTS@184..187 + 0: L_ANGLE@184..185 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@185..186 + 0: TS_REFERENCE_TYPE@185..186 + 0: JS_REFERENCE_IDENTIFIER@185..186 + 0: IDENT@185..186 "T" [] [] + 1: (empty) + 2: R_ANGLE@186..187 ">" [] [] + 1: SEMICOLON@187..188 ";" [] [] + 8: JS_EXPRESSION_STATEMENT@188..194 + 0: JS_BINARY_EXPRESSION@188..194 + 0: JS_BINARY_EXPRESSION@188..192 + 0: JS_IDENTIFIER_EXPRESSION@188..190 + 0: JS_REFERENCE_IDENTIFIER@188..190 + 0: IDENT@188..190 "f" [Newline("\n")] [] + 1: L_ANGLE@190..191 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@191..192 + 0: JS_REFERENCE_IDENTIFIER@191..192 + 0: IDENT@191..192 "T" [] [] + 1: R_ANGLE@192..194 ">" [] [Whitespace(" ")] + 2: (empty) + 1: (empty) + 9: JS_IMPORT@194..200 + 0: IMPORT_KW@194..200 "import" [] [] + 1: (empty) + 2: (empty) + 10: JS_EXPRESSION_STATEMENT@200..204 + 0: TS_TYPE_ASSERTION_EXPRESSION@200..203 + 0: L_ANGLE@200..201 "<" [] [] + 1: TS_NUMBER_LITERAL_TYPE@201..202 + 0: (empty) + 1: JS_NUMBER_LITERAL@201..202 "1" [] [] + 2: R_ANGLE@202..203 ">" [] [] + 3: (empty) + 1: SEMICOLON@203..204 ";" [] [] + 11: JS_EXPRESSION_STATEMENT@204..216 + 0: JS_BINARY_EXPRESSION@204..215 + 0: JS_BINARY_EXPRESSION@204..208 + 0: JS_IDENTIFIER_EXPRESSION@204..206 + 0: JS_REFERENCE_IDENTIFIER@204..206 + 0: IDENT@204..206 "f" [Newline("\n")] [] + 1: L_ANGLE@206..207 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@207..208 + 0: JS_REFERENCE_IDENTIFIER@207..208 + 0: IDENT@207..208 "T" [] [] + 1: R_ANGLE@208..210 ">" [] [Whitespace(" ")] + 2: JS_BOGUS_EXPRESSION@210..215 + 0: JS_BOGUS@210..215 + 0: IDENT@210..215 "yield" [] [] + 1: SEMICOLON@215..216 ";" [] [] + 12: JS_EXPRESSION_STATEMENT@216..225 + 0: JS_BINARY_EXPRESSION@216..224 + 0: JS_BINARY_EXPRESSION@216..220 + 0: JS_IDENTIFIER_EXPRESSION@216..218 + 0: JS_REFERENCE_IDENTIFIER@216..218 + 0: IDENT@216..218 "f" [Newline("\n")] [] + 1: L_ANGLE@218..219 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@219..220 + 0: JS_REFERENCE_IDENTIFIER@219..220 + 0: IDENT@219..220 "T" [] [] + 1: R_ANGLE@220..222 ">" [] [Whitespace(" ")] + 2: JS_PRE_UPDATE_EXPRESSION@222..224 + 0: PLUS2@222..224 "++" [] [] + 1: (empty) + 1: SEMICOLON@224..225 ";" [] [] + 13: JS_EXPRESSION_STATEMENT@225..234 + 0: JS_BINARY_EXPRESSION@225..233 + 0: JS_BINARY_EXPRESSION@225..229 + 0: JS_IDENTIFIER_EXPRESSION@225..227 + 0: JS_REFERENCE_IDENTIFIER@225..227 + 0: IDENT@225..227 "f" [Newline("\n")] [] + 1: L_ANGLE@227..228 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@228..229 + 0: JS_REFERENCE_IDENTIFIER@228..229 + 0: IDENT@228..229 "T" [] [] + 1: R_ANGLE@229..231 ">" [] [Whitespace(" ")] + 2: JS_PRE_UPDATE_EXPRESSION@231..233 + 0: MINUS2@231..233 "--" [] [] + 1: (empty) + 1: SEMICOLON@233..234 ";" [] [] + 14: JS_EXPRESSION_STATEMENT@234..245 + 0: JS_BINARY_EXPRESSION@234..245 + 0: JS_BINARY_EXPRESSION@234..238 + 0: JS_IDENTIFIER_EXPRESSION@234..236 + 0: JS_REFERENCE_IDENTIFIER@234..236 + 0: IDENT@234..236 "f" [Newline("\n")] [] + 1: L_ANGLE@236..237 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@237..238 + 0: JS_REFERENCE_IDENTIFIER@237..238 + 0: IDENT@237..238 "T" [] [] + 1: R_ANGLE@238..240 ">" [] [Whitespace(" ")] + 2: JS_REGEX_LITERAL_EXPRESSION@240..245 + 0: JS_REGEX_LITERAL@240..245 "/= 1;" [] [] + 1: (empty) + 15: JS_EXPRESSION_STATEMENT@245..259 + 0: JS_BINARY_EXPRESSION@245..258 + 0: TS_INSTANTIATION_EXPRESSION@245..251 + 0: JS_IDENTIFIER_EXPRESSION@245..247 + 0: JS_REFERENCE_IDENTIFIER@245..247 + 0: IDENT@245..247 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@247..251 + 0: L_ANGLE@247..248 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@248..249 + 0: TS_REFERENCE_TYPE@248..249 + 0: JS_REFERENCE_IDENTIFIER@248..249 + 0: IDENT@248..249 "T" [] [] + 1: (empty) + 2: R_ANGLE@249..251 ">" [] [Whitespace(" ")] + 1: LTEQ@251..254 "<=" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@254..258 + 0: JS_IDENTIFIER_EXPRESSION@254..255 + 0: JS_REFERENCE_IDENTIFIER@254..255 + 0: IDENT@254..255 "f" [] [] + 1: TS_TYPE_ARGUMENTS@255..258 + 0: L_ANGLE@255..256 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@256..257 + 0: TS_REFERENCE_TYPE@256..257 + 0: JS_REFERENCE_IDENTIFIER@256..257 + 0: IDENT@256..257 "T" [] [] + 1: (empty) + 2: R_ANGLE@257..258 ">" [] [] + 1: SEMICOLON@258..259 ";" [] [] + 16: JS_EXPRESSION_STATEMENT@259..273 + 0: TS_INSTANTIATION_EXPRESSION@259..272 + 0: TS_INSTANTIATION_EXPRESSION@259..265 + 0: JS_IDENTIFIER_EXPRESSION@259..261 + 0: JS_REFERENCE_IDENTIFIER@259..261 + 0: IDENT@259..261 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@261..265 + 0: L_ANGLE@261..262 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@262..263 + 0: TS_REFERENCE_TYPE@262..263 + 0: JS_REFERENCE_IDENTIFIER@262..263 + 0: IDENT@262..263 "T" [] [] + 1: (empty) + 2: R_ANGLE@263..265 ">" [] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@265..272 + 0: L_ANGLE@265..266 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@266..272 + 0: TS_FUNCTION_TYPE@266..272 + 0: TS_TYPE_PARAMETERS@266..269 + 0: L_ANGLE@266..268 "<" [] [Whitespace(" ")] + 1: TS_TYPE_PARAMETER_LIST@268..269 + 0: TS_TYPE_PARAMETER@268..269 + 0: TS_TYPE_PARAMETER_NAME@268..269 + 0: IDENT@268..269 "f" [] [] + 1: (empty) + 2: (empty) + 2: (empty) + 1: (empty) + 2: (empty) + 3: TS_FUNCTION_TYPE@269..272 + 0: TS_TYPE_PARAMETERS@269..272 + 0: L_ANGLE@269..270 "<" [] [] + 1: TS_TYPE_PARAMETER_LIST@270..271 + 0: TS_TYPE_PARAMETER@270..271 + 0: TS_TYPE_PARAMETER_NAME@270..271 + 0: IDENT@270..271 "T" [] [] + 1: (empty) + 2: (empty) + 2: R_ANGLE@271..272 ">" [] [] + 1: (empty) + 2: (empty) + 3: (empty) + 2: (empty) + 1: SEMICOLON@272..273 ";" [] [] + 17: JS_EXPRESSION_STATEMENT@273..283 + 0: JS_COMPUTED_MEMBER_EXPRESSION@273..282 + 0: TS_INSTANTIATION_EXPRESSION@273..279 + 0: JS_IDENTIFIER_EXPRESSION@273..276 + 0: JS_REFERENCE_IDENTIFIER@273..276 + 0: IDENT@273..276 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@276..279 + 0: L_ANGLE@276..277 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@277..278 + 0: TS_REFERENCE_TYPE@277..278 + 0: JS_REFERENCE_IDENTIFIER@277..278 + 0: IDENT@277..278 "T" [] [] + 1: (empty) + 2: R_ANGLE@278..279 ">" [] [] + 1: (empty) + 2: L_BRACK@279..281 "[" [Newline("\n")] [] + 3: (empty) + 4: R_BRACK@281..282 "]" [] [] + 1: SEMICOLON@282..283 ";" [] [] + 18: JS_EXPRESSION_STATEMENT@283..288 + 0: TS_INSTANTIATION_EXPRESSION@283..288 + 0: JS_IDENTIFIER_EXPRESSION@283..285 + 0: JS_REFERENCE_IDENTIFIER@283..285 + 0: IDENT@283..285 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@285..288 + 0: L_ANGLE@285..286 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@286..287 + 0: TS_REFERENCE_TYPE@286..287 + 0: JS_REFERENCE_IDENTIFIER@286..287 + 0: IDENT@286..287 "T" [] [] + 1: (empty) + 2: R_ANGLE@287..288 ">" [] [] + 1: (empty) + 19: JS_EXPRESSION_STATEMENT@288..292 + 0: JS_IDENTIFIER_EXPRESSION@288..292 + 0: JS_REFERENCE_IDENTIFIER@288..292 + 0: IDENT@288..292 "as" [Newline("\n")] [Whitespace(" ")] + 1: (empty) + 20: JS_BLOCK_STATEMENT@292..294 + 0: L_CURLY@292..293 "{" [] [] + 1: JS_STATEMENT_LIST@293..293 + 2: R_CURLY@293..294 "}" [] [] + 21: JS_EMPTY_STATEMENT@294..295 + 0: SEMICOLON@294..295 ";" [] [] + 22: JS_EXPRESSION_STATEMENT@295..300 + 0: TS_INSTANTIATION_EXPRESSION@295..300 + 0: JS_IDENTIFIER_EXPRESSION@295..297 + 0: JS_REFERENCE_IDENTIFIER@295..297 + 0: IDENT@295..297 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@297..300 + 0: L_ANGLE@297..298 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@298..299 + 0: TS_REFERENCE_TYPE@298..299 + 0: JS_REFERENCE_IDENTIFIER@298..299 + 0: IDENT@298..299 "T" [] [] + 1: (empty) + 2: R_ANGLE@299..300 ">" [] [] + 1: (empty) + 23: JS_EXPRESSION_STATEMENT@300..311 + 0: JS_IDENTIFIER_EXPRESSION@300..311 + 0: JS_REFERENCE_IDENTIFIER@300..311 + 0: IDENT@300..311 "satisfies" [Newline("\n")] [Whitespace(" ")] + 1: (empty) + 24: JS_BLOCK_STATEMENT@311..313 + 0: L_CURLY@311..312 "{" [] [] + 1: JS_STATEMENT_LIST@312..312 + 2: R_CURLY@312..313 "}" [] [] + 25: JS_EMPTY_STATEMENT@313..314 + 0: SEMICOLON@313..314 ";" [] [] + 26: JS_CLASS_DECLARATION@314..375 + 0: (empty) + 1: CLASS_KW@314..321 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@321..324 + 0: IDENT@321..324 "C5" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@324..325 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@325..373 + 0: JS_PROPERTY_CLASS_MEMBER@325..373 + 0: JS_PROPERTY_MODIFIER_LIST@325..340 + 0: TS_ACCESSIBILITY_MODIFIER@325..340 + 0: PROTECTED_KW@325..340 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@340..351 + 0: IDENT@340..351 "specialFoo" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@351..373 + 0: EQ@351..353 "=" [] [Whitespace(" ")] + 1: JS_ASSIGNMENT_EXPRESSION@353..373 + 0: JS_BOGUS_ASSIGNMENT@353..368 + 0: JS_BINARY_EXPRESSION@353..361 + 0: JS_IDENTIFIER_EXPRESSION@353..354 + 0: JS_REFERENCE_IDENTIFIER@353..354 + 0: IDENT@353..354 "f" [] [] + 1: L_ANGLE@354..355 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@355..361 + 0: JS_REFERENCE_IDENTIFIER@355..361 + 0: IDENT@355..361 "string" [] [] + 1: R_ANGLE@361..363 ">" [] [Whitespace(" ")] + 2: JS_BOGUS_EXPRESSION@363..368 + 0: HASH@363..364 "#" [] [] + 1: IDENT@364..368 "bar" [] [Whitespace(" ")] + 1: EQ@368..370 "=" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@370..373 + 0: JS_NUMBER_LITERAL@370..373 "123" [] [] + 4: (empty) + 8: R_CURLY@373..375 "}" [Newline("\n")] [] + 27: JS_FOR_IN_STATEMENT@375..415 + 0: FOR_KW@375..380 "for" [Newline("\n")] [Whitespace(" ")] + 1: L_PAREN@380..381 "(" [] [] + 2: JS_FOR_VARIABLE_DECLARATION@381..406 + 0: CONST_KW@381..387 "const" [] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR@387..406 + 0: JS_IDENTIFIER_BINDING@387..389 + 0: IDENT@387..389 "a" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@389..406 + 0: EQ@389..391 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@391..406 + 0: JS_STATIC_MEMBER_EXPRESSION@391..397 + 0: JS_IDENTIFIER_EXPRESSION@391..392 + 0: JS_REFERENCE_IDENTIFIER@391..392 + 0: IDENT@391..392 "b" [] [] + 1: DOT@392..393 "." [] [] + 2: JS_NAME@393..397 + 0: IDENT@393..397 "test" [] [] + 1: TS_TYPE_ARGUMENTS@397..406 + 0: L_ANGLE@397..398 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@398..404 + 0: TS_STRING_TYPE@398..404 + 0: STRING_KW@398..404 "string" [] [] + 2: R_ANGLE@404..406 ">" [] [Whitespace(" ")] + 3: IN_KW@406..409 "in" [] [Whitespace(" ")] + 4: JS_ARRAY_EXPRESSION@409..411 + 0: L_BRACK@409..410 "[" [] [] + 1: JS_ARRAY_ELEMENT_LIST@410..410 + 2: R_BRACK@410..411 "]" [] [] + 5: R_PAREN@411..413 ")" [] [Whitespace(" ")] + 6: JS_BLOCK_STATEMENT@413..415 + 0: L_CURLY@413..414 "{" [] [] + 1: JS_STATEMENT_LIST@414..414 + 2: R_CURLY@414..415 "}" [] [] + 3: EOF@415..416 "" [Newline("\n")] [] +-- +ts_instantiation_expressions_1.ts:1:29 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an expression but instead found ';' + + > 1 │ const a8 = f; // Relational operator error + │ ^ + 2 │ const b1 = f?.; // Error, `(` expected + 3 │ f << f; + + i Expected an expression here + + > 1 │ const a8 = f; // Relational operator error + │ ^ + 2 │ const b1 = f?.; // Error, `(` expected + 3 │ f << f; + +-- +ts_instantiation_expressions_1.ts:2:23 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected `(` but instead found `;` + + 1 │ const a8 = f; // Relational operator error + > 2 │ const b1 = f?.; // Error, `(` expected + │ ^ + 3 │ f << f; + 4 │ f = g; + + i Remove ; + +-- +ts_instantiation_expressions_1.ts:3:10 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected `,` but instead found `<` + + 1 │ const a8 = f; // Relational operator error + 2 │ const b1 = f?.; // Error, `(` expected + > 3 │ f << f; + │ ^ + 4 │ f = g; + 5 │ f >> f; + + i Remove < + +-- +ts_instantiation_expressions_1.ts:3:13 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected a parenthesis '(' but instead found ';' + + 1 │ const a8 = f; // Relational operator error + 2 │ const b1 = f?.; // Error, `(` expected + > 3 │ f << f; + │ ^ + 4 │ f = g; + 5 │ f >> f; + + i Expected a parenthesis '(' here + + 1 │ const a8 = f; // Relational operator error + 2 │ const b1 = f?.; // Error, `(` expected + > 3 │ f << f; + │ ^ + 4 │ f = g; + 5 │ f >> f; + +-- +ts_instantiation_expressions_1.ts:4:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Invalid assignment to `f` + + 2 │ const b1 = f?.; // Error, `(` expected + 3 │ f << f; + > 4 │ f = g; + │ ^^^^ + 5 │ f >> f; + 6 │ f >= f; + + i This expression cannot be assigned to + +-- +ts_instantiation_expressions_1.ts:5:6 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Expected an expression for the left hand side of the `>>` operator. + + 3 │ f << f; + 4 │ f = g; + > 5 │ f >> f; + │ ^^ + 6 │ f >= f; + 7 │ f < f; + + i This operator requires a left hand side value + +-- +ts_instantiation_expressions_1.ts:6:6 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an expression but instead found '>=' + + 4 │ f = g; + 5 │ f >> f; + > 6 │ f >= f; + │ ^^ + 7 │ f < f; + 8 │ f > f; + + i Expected an expression here + + 4 │ f = g; + 5 │ f >> f; + > 6 │ f >= f; + │ ^^ + 7 │ f < f; + 8 │ f > f; + +-- +ts_instantiation_expressions_1.ts:7:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected `>` but instead found `;` + + 5 │ f >> f; + 6 │ f >= f; + > 7 │ f < f; + │ ^ + 8 │ f > f; + 9 │ f import<1>; + + i Remove ; + +-- +ts_instantiation_expressions_1.ts:8:6 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an expression but instead found '>' + + 6 │ f >= f; + 7 │ f < f; + > 8 │ f > f; + │ ^ + 9 │ f import<1>; + 10 │ f yield; + + i Expected an expression here + + 6 │ f >= f; + 7 │ f < f; + > 8 │ f > f; + │ ^ + 9 │ f import<1>; + 10 │ f yield; + +-- +ts_instantiation_expressions_1.ts:9:6 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an expression but instead found 'import' + + 7 │ f < f; + 8 │ f > f; + > 9 │ f import<1>; + │ ^^^^^^ + 10 │ f yield; + 11 │ f ++; + + i Expected an expression here + + 7 │ f < f; + 8 │ f > f; + > 9 │ f import<1>; + │ ^^^^^^ + 10 │ f yield; + 11 │ f ++; + +-- +ts_instantiation_expressions_1.ts:9:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected a default import, a namespace import, or a named import but instead found '<' + + 7 │ f < f; + 8 │ f > f; + > 9 │ f import<1>; + │ ^ + 10 │ f yield; + 11 │ f ++; + + i Expected a default import, a namespace import, or a named import here + + 7 │ f < f; + 8 │ f > f; + > 9 │ f import<1>; + │ ^ + 10 │ f yield; + 11 │ f ++; + +-- +ts_instantiation_expressions_1.ts:9:15 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an expression but instead found ';' + + 7 │ f < f; + 8 │ f > f; + > 9 │ f import<1>; + │ ^ + 10 │ f yield; + 11 │ f ++; + + i Expected an expression here + + 7 │ f < f; + 8 │ f > f; + > 9 │ f import<1>; + │ ^ + 10 │ f yield; + 11 │ f ++; + +-- +ts_instantiation_expressions_1.ts:10:6 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Illegal use of reserved keyword `yield` as an identifier in strict mode + + 8 │ f > f; + 9 │ f import<1>; + > 10 │ f yield; + │ ^^^^^ + 11 │ f ++; + 12 │ f --; + +-- +ts_instantiation_expressions_1.ts:11:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an identifier, or a member expression but instead found ';' + + 9 │ f import<1>; + 10 │ f yield; + > 11 │ f ++; + │ ^ + 12 │ f --; + 13 │ f /= 1; + + i Expected an identifier, or a member expression here + + 9 │ f import<1>; + 10 │ f yield; + > 11 │ f ++; + │ ^ + 12 │ f --; + 13 │ f /= 1; + +-- +ts_instantiation_expressions_1.ts:12:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an identifier, or a member expression but instead found ';' + + 10 │ f yield; + 11 │ f ++; + > 12 │ f --; + │ ^ + 13 │ f /= 1; + 14 │ f <= f; + + i Expected an identifier, or a member expression here + + 10 │ f yield; + 11 │ f ++; + > 12 │ f --; + │ ^ + 13 │ f /= 1; + 14 │ f <= f; + +-- +ts_instantiation_expressions_1.ts:13:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × unterminated regex literal + + 11 │ f ++; + 12 │ f --; + > 13 │ f /= 1; + │ + 14 │ f <= f; + 15 │ f << f; + + i ...but the line ends here + + 11 │ f ++; + 12 │ f --; + > 13 │ f /= 1; + │ + 14 │ f <= f; + 15 │ f << f; + + i a regex literal starts there... + + 11 │ f ++; + 12 │ f --; + > 13 │ f /= 1; + │ ^ + 14 │ f <= f; + 15 │ f << f; + +-- +ts_instantiation_expressions_1.ts:15:10 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected `,` but instead found `<` + + 13 │ f /= 1; + 14 │ f <= f; + > 15 │ f << f; + │ ^ + 16 │ f + 17 │ []; + + i Remove < + +-- +ts_instantiation_expressions_1.ts:15:13 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected a parenthesis '(' but instead found ';' + + 13 │ f /= 1; + 14 │ f <= f; + > 15 │ f << f; + │ ^ + 16 │ f + 17 │ []; + + i Expected a parenthesis '(' here + + 13 │ f /= 1; + 14 │ f <= f; + > 15 │ f << f; + │ ^ + 16 │ f + 17 │ []; + +-- +ts_instantiation_expressions_1.ts:17:2 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected an expression but instead found ']' + + 15 │ f << f; + 16 │ f + > 17 │ []; + │ ^ + 18 │ f + 19 │ as {}; + + i Expected an expression here + + 15 │ f << f; + 16 │ f + > 17 │ []; + │ ^ + 18 │ f + 19 │ as {}; + +-- +ts_instantiation_expressions_1.ts:19:4 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Expected a semicolon or an implicit semicolon after a statement, but found none + + 17 │ []; + 18 │ f + > 19 │ as {}; + │ ^ + 20 │ f + 21 │ satisfies {}; + + i An explicit or implicit semicolon is expected here... + + 17 │ []; + 18 │ f + > 19 │ as {}; + │ ^ + 20 │ f + 21 │ satisfies {}; + + i ...Which is required to end this statement + + 17 │ []; + 18 │ f + > 19 │ as {}; + │ ^^^^ + 20 │ f + 21 │ satisfies {}; + +-- +ts_instantiation_expressions_1.ts:21:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Expected a semicolon or an implicit semicolon after a statement, but found none + + 19 │ as {}; + 20 │ f + > 21 │ satisfies {}; + │ ^ + 22 │ class C5 { + 23 │ protected specialFoo = f #bar = 123 + + i An explicit or implicit semicolon is expected here... + + 19 │ as {}; + 20 │ f + > 21 │ satisfies {}; + │ ^ + 22 │ class C5 { + 23 │ protected specialFoo = f #bar = 123 + + i ...Which is required to end this statement + + 19 │ as {}; + 20 │ f + > 21 │ satisfies {}; + │ ^^^^^^^^^^^ + 22 │ class C5 { + 23 │ protected specialFoo = f #bar = 123 + +-- +ts_instantiation_expressions_1.ts:23:38 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Private names are only allowed on the left side of a 'in' expression + + 21 │ satisfies {}; + 22 │ class C5 { + > 23 │ protected specialFoo = f #bar = 123 + │ ^^^^ + 24 │ } + 25 │ for (const a = b.test in []) {} + +-- +ts_instantiation_expressions_1.ts:23:28 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Invalid assignment to `f #bar` + + 21 │ satisfies {}; + 22 │ class C5 { + > 23 │ protected specialFoo = f #bar = 123 + │ ^^^^^^^^^^^^^^ + 24 │ } + 25 │ for (const a = b.test in []) {} + + i This expression cannot be assigned to + +-- +ts_instantiation_expressions_1.ts:25:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × `for..in` statement declarators cannot have an initializer expression + + 23 │ protected specialFoo = f #bar = 123 + 24 │ } + > 25 │ for (const a = b.test in []) {} + │ ^^^^^^^^^^^^^^^^ + 26 │ + +-- +const a8 = f; // Relational operator error +const b1 = f?.; // Error, `(` expected +f << f; +f = g; +f >> f; +f >= f; +f < f; +f > f; +f import<1>; +f yield; +f ++; +f --; +f /= 1; +f <= f; +f << f; +f +[]; +f +as {}; +f +satisfies {}; +class C5 { + protected specialFoo = f #bar = 123 +} +for (const a = b.test in []) {} diff --git a/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.ts b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.ts new file mode 100644 index 00000000000..02908d1ea1a --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.ts @@ -0,0 +1,25 @@ +const a8 = f; // Relational operator error +const b1 = f?.; // Error, `(` expected +f << f; +f = g; +f >> f; +f >= f; +f < f; +f > f; +f import<1>; +f yield; +f ++; +f --; +f /= 1; +f <= f; +f << f; +f +[]; +f +as {}; +f +satisfies {}; +class C5 { + protected specialFoo = f #bar = 123 +} +for (const a = b.test in []) {} 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 7f0e928501a..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,472 +158,842 @@ 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..520 "const" [Newline("\n"), Comments("// Parsed as relation ..."), Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@390..397 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@520..523 "x2" [] [Whitespace(" ")], + name_token: IDENT@397..400 "x2" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@523..525 "=" [] [Whitespace(" ")], - expression: JsBinaryExpression { - left: JsBinaryExpression { - left: JsIdentifierExpression { - name: JsReferenceIdentifier { - value_token: IDENT@525..526 "f" [] [], - }, - }, - operator_token: L_ANGLE@526..527 "<" [] [], - right: JsBooleanLiteralExpression { - value_token: TRUE_KW@527..531 "true" [] [], + eq_token: EQ@400..402 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@402..403 "f" [] [], }, }, - operator_token: R_ANGLE@531..532 ">" [] [], - right: JsBooleanLiteralExpression { - value_token: TRUE_KW@532..537 "true" [Newline("\n")] [], + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@403..404 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@404..408 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@408..409 ">" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@537..538 ";" [] [], + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsBooleanLiteralExpression { + value_token: TRUE_KW@409..414 "true" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@414..415 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@538..583 "const" [Newline("\n"), Comments("// Parsed as instanti ..."), Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@415..422 "const" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@583..586 "x3" [] [Whitespace(" ")], + name_token: IDENT@422..425 "x3" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@586..588 "=" [] [Whitespace(" ")], + eq_token: EQ@425..427 "=" [] [Whitespace(" ")], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@588..589 "f" [] [], + value_token: IDENT@427..428 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@589..590 "<" [] [], + l_angle_token: L_ANGLE@428..429 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsBooleanLiteralType { - literal: TRUE_KW@590..594 "true" [] [], + literal: TRUE_KW@429..433 "true" [] [], }, ], - r_angle_token: R_ANGLE@594..595 ">" [] [], + r_angle_token: R_ANGLE@433..434 ">" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@595..596 ";" [] [], + semicolon_token: SEMICOLON@434..435 ";" [] [], }, JsExpressionStatement { expression: JsBooleanLiteralExpression { - value_token: TRUE_KW@596..601 "true" [Newline("\n")] [], + value_token: TRUE_KW@435..440 "true" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@440..441 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsParenthesizedExpression { + l_paren_token: L_PAREN@441..443 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@443..444 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@444..445 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@445..446 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@446..447 ">" [] [], + }, + }, + r_paren_token: R_PAREN@447..448 ")" [] [], + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@448..449 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@449..450 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@450..451 ">" [] [], + }, + }, + semicolon_token: SEMICOLON@451..452 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsParenthesizedExpression { + l_paren_token: L_PAREN@452..454 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@454..455 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@455..456 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@456..457 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@457..458 ">" [] [], + }, + }, + r_paren_token: R_PAREN@458..459 ")" [] [], + }, + optional_chain_token: missing (optional), + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@459..460 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@460..461 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@461..462 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@462..463 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@463..464 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@464..465 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: TsInstantiationExpression { + expression: JsParenthesizedExpression { + l_paren_token: L_PAREN@465..467 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@467..468 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@468..469 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@469..470 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@470..471 ">" [] [], + }, + }, + r_paren_token: R_PAREN@471..472 ")" [] [], + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@472..473 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@473..474 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@474..475 ">" [] [], + }, + }, + optional_chain_token: QUESTIONDOT@475..477 "?." [] [], + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@477..478 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@478..479 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@479..480 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsParenthesizedExpression { + l_paren_token: L_PAREN@480..482 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsStaticMemberExpression { + object: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@482..483 "a" [] [], + }, + }, + operator_token: QUESTIONDOT@483..485 "?." [] [], + member: JsName { + value_token: IDENT@485..486 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@486..487 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@487..488 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@488..489 ">" [] [], + }, + }, + r_paren_token: R_PAREN@489..490 ")" [] [], + }, + optional_chain_token: missing (optional), + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@490..491 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@491..492 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@492..493 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@493..494 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@494..495 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@495..496 ";" [] [], + }, + JsExpressionStatement { + expression: JsNewExpression { + new_token: NEW_KW@496..501 "new" [Newline("\n")] [Whitespace(" ")], + callee: JsParenthesizedExpression { + l_paren_token: L_PAREN@501..502 "(" [] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@502..503 "a" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@503..504 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@504..505 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@505..506 ">" [] [], + }, + }, + r_paren_token: R_PAREN@506..507 ")" [] [], + }, + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@507..508 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@508..509 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@509..510 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@510..511 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@511..512 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@512..513 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@513..515 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@515..516 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@516..517 "<" [] [], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@517..518 "T" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: R_ANGLE@518..519 ">" [] [], + }, + parameters: JsParameters { + l_paren_token: L_PAREN@519..520 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@520..522 ")" [] [Whitespace(" ")], + }, + fat_arrow_token: FAT_ARROW@522..525 "=>" [] [Whitespace(" ")], + return_type: TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@525..526 "T" [] [], + }, + type_arguments: missing (optional), + }, + }, + ], + r_angle_token: R_ANGLE@526..527 ">" [] [], + }, + }, + optional_chain_token: QUESTIONDOT@527..529 "?." [] [], + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@529..530 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@530..531 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@531..532 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@532..534 "f" [Newline("\n")] [], + }, + }, + optional_chain_token: QUESTIONDOT@534..536 "?." [] [], + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@536..537 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@537..538 "<" [] [], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@538..539 "T" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: R_ANGLE@539..540 ">" [] [], + }, + parameters: JsParameters { + l_paren_token: L_PAREN@540..541 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@541..543 ")" [] [Whitespace(" ")], + }, + fat_arrow_token: FAT_ARROW@543..546 "=>" [] [Whitespace(" ")], + return_type: TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@546..547 "T" [] [], + }, + type_arguments: missing (optional), + }, + }, + ], + r_angle_token: R_ANGLE@547..548 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@548..549 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@549..550 ")" [] [], + }, }, - semicolon_token: SEMICOLON@601..602 ";" [] [], + semicolon_token: SEMICOLON@550..551 ";" [] [], + }, + JsExpressionStatement { + expression: JsConditionalExpression { + test: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@551..553 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@553..554 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@554..555 "x" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@555..557 ">" [] [Whitespace(" ")], + }, + }, + question_mark_token: QUESTION@557..559 "?" [] [Whitespace(" ")], + consequent: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@559..560 "g" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@560..561 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@561..562 "y" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@562..564 ">" [] [Whitespace(" ")], + }, + }, + colon_token: COLON@564..566 ":" [] [Whitespace(" ")], + alternate: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@566..567 "h" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@567..568 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@568..569 "z" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@569..570 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@570..571 ";" [] [], + }, + JsExpressionStatement { + expression: JsArrayExpression { + l_brack_token: L_BRACK@571..573 "[" [Newline("\n")] [], + elements: JsArrayElementList [ + TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@573..574 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@574..575 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@575..576 "x" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@576..577 ">" [] [], + }, + }, + ], + r_brack_token: R_BRACK@577..578 "]" [] [], + }, + semicolon_token: SEMICOLON@578..579 ";" [] [], + }, + JsBlockStatement { + l_curly_token: L_CURLY@579..582 "{" [Newline("\n")] [Whitespace(" ")], + statements: JsStatementList [ + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@582..583 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@583..584 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@584..585 "x" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@585..587 ">" [] [Whitespace(" ")], + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@587..588 "}" [] [], }, ], - eof_token: EOF@602..603 "" [Newline("\n")] [], + eof_token: EOF@588..589 "" [Newline("\n")] [], } -0: JS_MODULE@0..603 +0: JS_MODULE@0..589 0: (empty) 1: JS_DIRECTIVE_LIST@0..0 - 2: JS_MODULE_ITEM_LIST@0..602 + 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(" ")] @@ -721,307 +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..538 - 0: JS_VARIABLE_DECLARATION@478..537 - 0: CONST_KW@478..520 "const" [Newline("\n"), Comments("// Parsed as relation ..."), Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@520..537 - 0: JS_VARIABLE_DECLARATOR@520..537 - 0: JS_IDENTIFIER_BINDING@520..523 - 0: IDENT@520..523 "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@523..537 - 0: EQ@523..525 "=" [] [Whitespace(" ")] - 1: JS_BINARY_EXPRESSION@525..537 - 0: JS_BINARY_EXPRESSION@525..531 - 0: JS_IDENTIFIER_EXPRESSION@525..526 - 0: JS_REFERENCE_IDENTIFIER@525..526 - 0: IDENT@525..526 "f" [] [] - 1: L_ANGLE@526..527 "<" [] [] - 2: JS_BOOLEAN_LITERAL_EXPRESSION@527..531 - 0: TRUE_KW@527..531 "true" [] [] - 1: R_ANGLE@531..532 ">" [] [] - 2: JS_BOOLEAN_LITERAL_EXPRESSION@532..537 - 0: TRUE_KW@532..537 "true" [Newline("\n")] [] - 1: SEMICOLON@537..538 ";" [] [] - 14: JS_VARIABLE_STATEMENT@538..596 - 0: JS_VARIABLE_DECLARATION@538..595 - 0: CONST_KW@538..583 "const" [Newline("\n"), Comments("// Parsed as instanti ..."), Newline("\n")] [Whitespace(" ")] - 1: JS_VARIABLE_DECLARATOR_LIST@583..595 - 0: JS_VARIABLE_DECLARATOR@583..595 - 0: JS_IDENTIFIER_BINDING@583..586 - 0: IDENT@583..586 "x3" [] [Whitespace(" ")] + 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) + 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@586..595 - 0: EQ@586..588 "=" [] [Whitespace(" ")] - 1: TS_INSTANTIATION_EXPRESSION@588..595 - 0: JS_IDENTIFIER_EXPRESSION@588..589 - 0: JS_REFERENCE_IDENTIFIER@588..589 - 0: IDENT@588..589 "f" [] [] - 1: TS_TYPE_ARGUMENTS@589..595 - 0: L_ANGLE@589..590 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@590..594 - 0: TS_BOOLEAN_LITERAL_TYPE@590..594 - 0: TRUE_KW@590..594 "true" [] [] - 2: R_ANGLE@594..595 ">" [] [] - 1: SEMICOLON@595..596 ";" [] [] - 15: JS_EXPRESSION_STATEMENT@596..602 - 0: JS_BOOLEAN_LITERAL_EXPRESSION@596..601 - 0: TRUE_KW@596..601 "true" [Newline("\n")] [] - 1: SEMICOLON@601..602 ";" [] [] - 3: EOF@602..603 "" [Newline("\n")] [] + 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@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@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@457..458 ">" [] [] + 2: R_PAREN@458..459 ")" [] [] + 1: (empty) + 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@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@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@474..475 ">" [] [] + 1: QUESTIONDOT@475..477 "?." [] [] + 2: (empty) + 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@488..489 ">" [] [] + 2: R_PAREN@489..490 ")" [] [] + 1: (empty) + 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@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@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@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@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@526..527 ">" [] [] + 1: QUESTIONDOT@527..529 "?." [] [] + 2: (empty) + 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@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@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@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@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@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@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@585..587 ">" [] [Whitespace(" ")] + 1: (empty) + 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 74af27aff2d..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 @@ -12,9 +10,17 @@ const b3 = f?.(); const b4 = f?.(); // Type Error, expected no type arguments const x1 = f (true); -// Parsed as relational expression const x2 = f true; -// Parsed as instantiation expression const x3 = f; true; +(f); +(f)(); +(f)?.(); +(a?.f)(); +new (a)(); +f<() => T>?.(); +f?.<() => T>(); +f ? g : h; +[f]; +{ f } diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.rast b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.rast new file mode 100644 index 00000000000..f20566f7e2e --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.rast @@ -0,0 +1,2657 @@ +JsModule { + interpreter_token: missing (optional), + directives: JsDirectiveList [], + items: JsModuleItemList [ + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@0..6 "class" [] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@6..8 "A" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@8..9 "{" [] [], + members: JsClassMemberList [ + JsConstructorClassMember { + modifiers: JsConstructorModifierList [], + name: JsLiteralMemberName { + value: IDENT@9..22 "constructor" [Newline("\n"), Whitespace(" ")] [], + }, + parameters: JsConstructorParameters { + l_paren_token: L_PAREN@22..23 "(" [] [], + parameters: JsConstructorParameterList [], + r_paren_token: R_PAREN@23..25 ")" [] [Whitespace(" ")], + }, + body: JsFunctionBody { + l_curly_token: L_CURLY@25..26 "{" [] [], + directives: JsDirectiveList [], + statements: JsStatementList [ + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@26..31 "f" [Newline("\n"), Whitespace(" ")] [], + }, + }, + operator_token: L_ANGLE@31..32 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@32..33 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@33..35 ">" [] [Whitespace(" ")], + right: JsCallExpression { + callee: JsSuperExpression { + super_token: SUPER_KW@35..40 "super" [] [], + }, + optional_chain_token: missing (optional), + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@40..41 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@41..42 ")" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@42..43 ";" [] [], + }, + ], + r_curly_token: R_CURLY@43..46 "}" [Newline("\n"), Whitespace(" ")] [], + }, + }, + ], + r_curly_token: R_CURLY@46..48 "}" [Newline("\n")] [], + }, + JsExpressionStatement { + expression: JsTemplateExpression { + tag: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@48..50 "f" [Newline("\n")] [], + }, + }, + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@50..51 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@51..71 "TemplateStringsArray" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@71..72 ">" [] [], + }, + l_tick_token: BACKTICK@72..73 "`" [] [], + elements: JsTemplateElementList [], + r_tick_token: BACKTICK@73..74 "`" [] [], + }, + semicolon_token: SEMICOLON@74..75 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@75..77 "f" [Newline("\n")] [], + }, + }, + optional_chain_token: missing (optional), + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@77..78 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@78..79 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@79..80 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@80..81 "(" [] [], + args: JsCallArgumentList [ + JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@81..82 "1" [] [], + }, + ], + r_paren_token: R_PAREN@82..83 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@83..84 ";" [] [], + }, + JsExpressionStatement { + expression: JsLogicalExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@84..86 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@86..87 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@87..88 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@88..90 ">" [] [Whitespace(" ")], + }, + }, + operator_token: QUESTION2@90..93 "??" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@93..94 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@94..95 ";" [] [], + }, + JsExpressionStatement { + expression: JsLogicalExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@95..97 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@97..98 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@98..99 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@99..101 ">" [] [Whitespace(" ")], + }, + }, + operator_token: PIPE2@101..104 "||" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@104..105 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@105..106 ";" [] [], + }, + JsExpressionStatement { + expression: JsLogicalExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@106..108 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@108..109 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@109..110 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@110..112 ">" [] [Whitespace(" ")], + }, + }, + operator_token: AMP2@112..115 "&&" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@115..116 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@116..117 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@117..119 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@119..120 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@120..121 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@121..123 ">" [] [Whitespace(" ")], + }, + }, + operator_token: PIPE@123..125 "|" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@125..126 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@126..127 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@127..129 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@129..130 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@130..131 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@131..133 ">" [] [Whitespace(" ")], + }, + }, + operator_token: CARET@133..135 "^" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@135..136 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@136..137 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@137..139 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@139..140 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@140..141 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@141..143 ">" [] [Whitespace(" ")], + }, + }, + operator_token: AMP@143..145 "&" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@145..146 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@146..147 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@147..149 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@149..150 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@150..151 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@151..153 ">" [] [Whitespace(" ")], + }, + }, + operator_token: EQ2@153..156 "==" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@156..157 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@157..158 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@158..159 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@159..160 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@160..161 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@161..163 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@163..164 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@164..165 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@165..167 ">" [] [Whitespace(" ")], + }, + }, + operator_token: NEQ@167..170 "!=" [] [Whitespace(" ")], + right: 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 [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@172..173 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@173..174 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@174..175 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@175..177 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@177..178 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@178..179 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@179..181 ">" [] [Whitespace(" ")], + }, + }, + operator_token: EQ3@181..185 "===" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@185..186 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@186..187 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@187..188 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@188..189 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@189..190 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@190..192 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@192..193 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@193..194 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@194..196 ">" [] [Whitespace(" ")], + }, + }, + operator_token: NEQ2@196..200 "!==" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@200..201 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@201..202 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@202..203 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@203..204 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@204..205 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@205..207 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@207..208 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@208..209 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@209..211 ">" [] [Whitespace(" ")], + }, + }, + operator_token: LTEQ@211..214 "<=" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@214..215 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@215..216 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@216..217 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@217..218 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@218..219 ";" [] [], + }, + JsExpressionStatement { + expression: JsInstanceofExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@219..221 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@221..222 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@222..223 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@223..225 ">" [] [Whitespace(" ")], + }, + }, + instanceof_token: INSTANCEOF_KW@225..236 "instanceof" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@236..237 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@237..238 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@238..239 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@239..240 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@240..241 ";" [] [], + }, + JsExpressionStatement { + expression: JsInExpression { + property: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@241..243 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@243..244 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@244..245 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@245..247 ">" [] [Whitespace(" ")], + }, + }, + in_token: IN_KW@247..250 "in" [] [Whitespace(" ")], + object: JsObjectExpression { + l_curly_token: L_CURLY@250..251 "{" [] [], + members: JsObjectMemberList [], + r_curly_token: R_CURLY@251..252 "}" [] [], + }, + }, + semicolon_token: SEMICOLON@252..253 ";" [] [], + }, + JsExpressionStatement { + expression: TsAsExpression { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@253..255 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@255..256 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@256..257 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@257..259 ">" [] [Whitespace(" ")], + }, + }, + as_token: AS_KW@259..262 "as" [] [Whitespace(" ")], + ty: TsObjectType { + l_curly_token: L_CURLY@262..263 "{" [] [], + members: TsTypeMemberList [], + r_curly_token: R_CURLY@263..264 "}" [] [], + }, + }, + semicolon_token: SEMICOLON@264..265 ";" [] [], + }, + JsExpressionStatement { + expression: TsSatisfiesExpression { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@265..267 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@267..268 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@268..269 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@269..271 ">" [] [Whitespace(" ")], + }, + }, + satisfies_token: SATISFIES_KW@271..281 "satisfies" [] [Whitespace(" ")], + ty: TsObjectType { + l_curly_token: L_CURLY@281..282 "{" [] [], + members: TsTypeMemberList [], + r_curly_token: R_CURLY@282..283 "}" [] [], + }, + }, + semicolon_token: SEMICOLON@283..284 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@284..286 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@286..287 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@287..288 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@288..290 ">" [] [Whitespace(" ")], + }, + }, + operator_token: STAR@290..292 "*" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@292..293 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@293..294 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@294..295 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@295..296 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@296..297 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@297..299 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@299..300 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@300..301 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@301..303 ">" [] [Whitespace(" ")], + }, + }, + operator_token: SLASH@303..305 "/" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@305..306 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@306..307 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@307..308 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@308..309 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@309..310 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@310..312 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@312..313 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@313..314 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@314..316 ">" [] [Whitespace(" ")], + }, + }, + operator_token: PERCENT@316..318 "%" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@318..319 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@319..320 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@320..321 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@321..322 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@322..323 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@323..325 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@325..326 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@326..327 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@327..329 ">" [] [Whitespace(" ")], + }, + }, + operator_token: STAR2@329..332 "**" [] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@332..333 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@333..334 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@334..335 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@335..336 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@336..337 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@337..340 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@340..342 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@342..344 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@344..346 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: PLUS@346..347 "+" [] [], + argument: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@347..348 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@348..349 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@349..350 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@350..351 ">" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@351..352 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@352..355 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@355..357 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@357..359 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@359..361 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: MINUS@361..362 "-" [] [], + argument: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@362..363 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@363..364 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@364..365 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@365..366 ">" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@366..367 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@367..370 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@370..372 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@372..374 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@374..376 ">" [] [Whitespace(" ")], + right: JsThisExpression { + this_token: THIS_KW@376..380 "this" [] [], + }, + }, + semicolon_token: SEMICOLON@380..381 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@381..384 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@384..386 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@386..388 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@388..390 ">" [] [Whitespace(" ")], + right: JsNullLiteralExpression { + value_token: NULL_KW@390..394 "null" [] [], + }, + }, + semicolon_token: SEMICOLON@394..395 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@395..398 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@398..400 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@400..402 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@402..404 ">" [] [Whitespace(" ")], + right: JsBooleanLiteralExpression { + value_token: TRUE_KW@404..408 "true" [] [], + }, + }, + semicolon_token: SEMICOLON@408..409 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@409..412 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@412..414 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@414..416 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@416..418 ">" [] [Whitespace(" ")], + right: JsBooleanLiteralExpression { + value_token: FALSE_KW@418..423 "false" [] [], + }, + }, + semicolon_token: SEMICOLON@423..424 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@424..427 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@427..429 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@429..431 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@431..433 ">" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@433..434 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@434..435 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@435..438 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@438..440 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@440..442 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@442..444 ">" [] [Whitespace(" ")], + right: JsBigIntLiteralExpression { + value_token: JS_BIG_INT_LITERAL@444..448 "123n" [] [], + }, + }, + semicolon_token: SEMICOLON@448..449 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@449..452 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@452..454 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@454..456 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@456..458 ">" [] [Whitespace(" ")], + right: JsArrayExpression { + l_brack_token: L_BRACK@458..459 "[" [] [], + elements: JsArrayElementList [], + r_brack_token: R_BRACK@459..460 "]" [] [], + }, + }, + semicolon_token: SEMICOLON@460..461 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@461..464 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@464..466 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@466..468 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@468..470 ">" [] [Whitespace(" ")], + right: JsObjectExpression { + l_curly_token: L_CURLY@470..471 "{" [] [], + members: JsObjectMemberList [], + r_curly_token: R_CURLY@471..472 "}" [] [], + }, + }, + semicolon_token: SEMICOLON@472..473 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@473..476 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@476..478 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@478..480 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@480..482 ">" [] [Whitespace(" ")], + right: JsFunctionExpression { + async_token: missing (optional), + function_token: FUNCTION_KW@482..491 "function" [] [Whitespace(" ")], + star_token: missing (optional), + id: JsIdentifierBinding { + name_token: IDENT@491..495 "test" [] [], + }, + type_parameters: missing (optional), + parameters: JsParameters { + l_paren_token: L_PAREN@495..496 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@496..498 ")" [] [Whitespace(" ")], + }, + return_type_annotation: missing (optional), + body: JsFunctionBody { + l_curly_token: L_CURLY@498..499 "{" [] [], + directives: JsDirectiveList [], + statements: JsStatementList [], + r_curly_token: R_CURLY@499..500 "}" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@500..501 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@501..504 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@504..506 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@506..508 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@508..510 ">" [] [Whitespace(" ")], + right: JsClassExpression { + class_token: CLASS_KW@510..516 "class" [] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@516..518 "A" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@518..519 "{" [] [], + members: JsClassMemberList [], + r_curly_token: R_CURLY@519..520 "}" [] [], + }, + }, + semicolon_token: SEMICOLON@520..521 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@521..524 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@524..526 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@526..528 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@528..530 ">" [] [Whitespace(" ")], + right: JsNewExpression { + new_token: NEW_KW@530..534 "new" [] [Whitespace(" ")], + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@534..535 "A" [] [], + }, + }, + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@535..536 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@536..537 ")" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@537..538 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@538..540 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@540..541 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@541..542 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@542..544 ">" [] [Whitespace(" ")], + }, + }, + operator_token: SLASH@544..546 "/" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@546..547 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@547..548 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@548..551 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@551..553 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@553..555 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@555..557 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: PLUS@557..558 "+" [] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@558..559 "1" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@559..560 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@560..563 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@563..565 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@565..567 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@567..569 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: MINUS@569..570 "-" [] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@570..571 "1" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@571..572 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@572..575 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@575..577 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@577..579 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@579..581 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: TILDE@581..582 "~" [] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@582..583 "1" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@583..584 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@584..587 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@587..589 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@589..591 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@591..593 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: BANG@593..594 "!" [] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@594..595 "1" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@595..596 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@596..599 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@599..601 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@601..603 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@603..605 ">" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@605..619 "someIdentifier" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@619..620 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@620..623 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@623..625 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@625..627 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@627..629 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: DELETE_KW@629..636 "delete" [] [Whitespace(" ")], + argument: JsComputedMemberExpression { + object: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@636..637 "a" [] [], + }, + }, + optional_chain_token: missing (optional), + l_brack_token: L_BRACK@637..638 "[" [] [], + member: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@638..643 "field" [] [], + }, + }, + r_brack_token: R_BRACK@643..644 "]" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@644..645 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@645..648 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@648..650 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@650..652 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@652..654 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: TYPEOF_KW@654..661 "typeof" [] [Whitespace(" ")], + argument: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@661..668 "MyClass" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@668..669 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@669..672 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@672..674 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@674..676 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@676..678 ">" [] [Whitespace(" ")], + right: JsUnaryExpression { + operator_token: VOID_KW@678..683 "void" [] [Whitespace(" ")], + argument: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@683..684 "a" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@684..685 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@685..687 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@687..688 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@688..689 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@689..691 ">" [] [Whitespace(" ")], + }, + }, + operator_token: LTEQ@691..694 "<=" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@694..695 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@695..696 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@696..699 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + optional_chain_token: missing (optional), + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@699..701 "<" [] [Whitespace(" ")], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@701..703 "T" [] [Whitespace(" ")], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@703..705 ">" [] [Whitespace(" ")], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@705..706 "(" [] [], + args: JsCallArgumentList [ + JsAwaitExpression { + await_token: AWAIT_KW@706..712 "await" [] [Whitespace(" ")], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@712..713 "1" [] [], + }, + }, + ], + r_paren_token: R_PAREN@713..714 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@714..715 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@715..718 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@718..720 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@720..722 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@722..724 ">" [] [Whitespace(" ")], + right: JsImportMetaExpression { + import_token: IMPORT_KW@724..730 "import" [] [], + dot_token: DOT@730..731 "." [] [], + meta_token: META@731..735 "meta" [] [], + }, + }, + semicolon_token: SEMICOLON@735..736 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@736..739 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@739..741 "<" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@741..743 "T" [] [Whitespace(" ")], + }, + }, + }, + operator_token: R_ANGLE@743..745 ">" [] [Whitespace(" ")], + right: JsImportCallExpression { + import_token: IMPORT_KW@745..751 "import" [] [], + arguments: JsCallArguments { + l_paren_token: L_PAREN@751..752 "(" [] [], + args: JsCallArgumentList [ + JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@752..757 "\"123\"" [] [], + }, + ], + r_paren_token: R_PAREN@757..758 ")" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@758..759 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@759..762 "a" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@762..764 "<" [] [Whitespace(" ")], + right: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@764..766 "b" [] [Whitespace(" ")], + }, + }, + operator_token: SHR@766..769 ">>" [] [Whitespace(" ")], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@769..770 "c" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@770..771 ";" [] [], + }, + JsExpressionStatement { + expression: JsAssignmentExpression { + left: JsIdentifierAssignment { + name_token: IDENT@771..774 "f" [Newline("\n")] [Whitespace(" ")], + }, + operator_token: EQ@774..776 "=" [] [Whitespace(" ")], + right: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@776..778 "h" [] [Whitespace(" ")], + }, + }, + operator_token: USHR@778..782 ">>>" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@782..784 "0" [] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@784..786 "<" [] [Whitespace(" ")], + right: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@786..788 "j" [] [Whitespace(" ")], + }, + }, + operator_token: USHR@788..792 ">>>" [] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@792..793 "0" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@793..794 ";" [] [], + }, + ], + eof_token: EOF@794..795 "" [Newline("\n")] [], +} + +0: JS_MODULE@0..795 + 0: (empty) + 1: JS_DIRECTIVE_LIST@0..0 + 2: JS_MODULE_ITEM_LIST@0..794 + 0: JS_CLASS_DECLARATION@0..48 + 0: (empty) + 1: CLASS_KW@0..6 "class" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@6..8 + 0: IDENT@6..8 "A" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@8..9 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@9..46 + 0: JS_CONSTRUCTOR_CLASS_MEMBER@9..46 + 0: JS_CONSTRUCTOR_MODIFIER_LIST@9..9 + 1: JS_LITERAL_MEMBER_NAME@9..22 + 0: IDENT@9..22 "constructor" [Newline("\n"), Whitespace(" ")] [] + 2: JS_CONSTRUCTOR_PARAMETERS@22..25 + 0: L_PAREN@22..23 "(" [] [] + 1: JS_CONSTRUCTOR_PARAMETER_LIST@23..23 + 2: R_PAREN@23..25 ")" [] [Whitespace(" ")] + 3: JS_FUNCTION_BODY@25..46 + 0: L_CURLY@25..26 "{" [] [] + 1: JS_DIRECTIVE_LIST@26..26 + 2: JS_STATEMENT_LIST@26..43 + 0: JS_EXPRESSION_STATEMENT@26..43 + 0: JS_BINARY_EXPRESSION@26..42 + 0: JS_BINARY_EXPRESSION@26..33 + 0: JS_IDENTIFIER_EXPRESSION@26..31 + 0: JS_REFERENCE_IDENTIFIER@26..31 + 0: IDENT@26..31 "f" [Newline("\n"), Whitespace(" ")] [] + 1: L_ANGLE@31..32 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@32..33 + 0: JS_REFERENCE_IDENTIFIER@32..33 + 0: IDENT@32..33 "T" [] [] + 1: R_ANGLE@33..35 ">" [] [Whitespace(" ")] + 2: JS_CALL_EXPRESSION@35..42 + 0: JS_SUPER_EXPRESSION@35..40 + 0: SUPER_KW@35..40 "super" [] [] + 1: (empty) + 2: (empty) + 3: JS_CALL_ARGUMENTS@40..42 + 0: L_PAREN@40..41 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@41..41 + 2: R_PAREN@41..42 ")" [] [] + 1: SEMICOLON@42..43 ";" [] [] + 3: R_CURLY@43..46 "}" [Newline("\n"), Whitespace(" ")] [] + 8: R_CURLY@46..48 "}" [Newline("\n")] [] + 1: JS_EXPRESSION_STATEMENT@48..75 + 0: JS_TEMPLATE_EXPRESSION@48..74 + 0: JS_IDENTIFIER_EXPRESSION@48..50 + 0: JS_REFERENCE_IDENTIFIER@48..50 + 0: IDENT@48..50 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@50..72 + 0: L_ANGLE@50..51 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@51..71 + 0: TS_REFERENCE_TYPE@51..71 + 0: JS_REFERENCE_IDENTIFIER@51..71 + 0: IDENT@51..71 "TemplateStringsArray" [] [] + 1: (empty) + 2: R_ANGLE@71..72 ">" [] [] + 2: BACKTICK@72..73 "`" [] [] + 3: JS_TEMPLATE_ELEMENT_LIST@73..73 + 4: BACKTICK@73..74 "`" [] [] + 1: SEMICOLON@74..75 ";" [] [] + 2: JS_EXPRESSION_STATEMENT@75..84 + 0: JS_CALL_EXPRESSION@75..83 + 0: JS_IDENTIFIER_EXPRESSION@75..77 + 0: JS_REFERENCE_IDENTIFIER@75..77 + 0: IDENT@75..77 "f" [Newline("\n")] [] + 1: (empty) + 2: TS_TYPE_ARGUMENTS@77..80 + 0: L_ANGLE@77..78 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@78..79 + 0: TS_REFERENCE_TYPE@78..79 + 0: JS_REFERENCE_IDENTIFIER@78..79 + 0: IDENT@78..79 "T" [] [] + 1: (empty) + 2: R_ANGLE@79..80 ">" [] [] + 3: JS_CALL_ARGUMENTS@80..83 + 0: L_PAREN@80..81 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@81..82 + 0: JS_NUMBER_LITERAL_EXPRESSION@81..82 + 0: JS_NUMBER_LITERAL@81..82 "1" [] [] + 2: R_PAREN@82..83 ")" [] [] + 1: SEMICOLON@83..84 ";" [] [] + 3: JS_EXPRESSION_STATEMENT@84..95 + 0: JS_LOGICAL_EXPRESSION@84..94 + 0: TS_INSTANTIATION_EXPRESSION@84..90 + 0: JS_IDENTIFIER_EXPRESSION@84..86 + 0: JS_REFERENCE_IDENTIFIER@84..86 + 0: IDENT@84..86 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@86..90 + 0: L_ANGLE@86..87 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@87..88 + 0: TS_REFERENCE_TYPE@87..88 + 0: JS_REFERENCE_IDENTIFIER@87..88 + 0: IDENT@87..88 "T" [] [] + 1: (empty) + 2: R_ANGLE@88..90 ">" [] [Whitespace(" ")] + 1: QUESTION2@90..93 "??" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@93..94 + 0: JS_NUMBER_LITERAL@93..94 "1" [] [] + 1: SEMICOLON@94..95 ";" [] [] + 4: JS_EXPRESSION_STATEMENT@95..106 + 0: JS_LOGICAL_EXPRESSION@95..105 + 0: TS_INSTANTIATION_EXPRESSION@95..101 + 0: JS_IDENTIFIER_EXPRESSION@95..97 + 0: JS_REFERENCE_IDENTIFIER@95..97 + 0: IDENT@95..97 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@97..101 + 0: L_ANGLE@97..98 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@98..99 + 0: TS_REFERENCE_TYPE@98..99 + 0: JS_REFERENCE_IDENTIFIER@98..99 + 0: IDENT@98..99 "T" [] [] + 1: (empty) + 2: R_ANGLE@99..101 ">" [] [Whitespace(" ")] + 1: PIPE2@101..104 "||" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@104..105 + 0: JS_NUMBER_LITERAL@104..105 "1" [] [] + 1: SEMICOLON@105..106 ";" [] [] + 5: JS_EXPRESSION_STATEMENT@106..117 + 0: JS_LOGICAL_EXPRESSION@106..116 + 0: TS_INSTANTIATION_EXPRESSION@106..112 + 0: JS_IDENTIFIER_EXPRESSION@106..108 + 0: JS_REFERENCE_IDENTIFIER@106..108 + 0: IDENT@106..108 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@108..112 + 0: L_ANGLE@108..109 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@109..110 + 0: TS_REFERENCE_TYPE@109..110 + 0: JS_REFERENCE_IDENTIFIER@109..110 + 0: IDENT@109..110 "T" [] [] + 1: (empty) + 2: R_ANGLE@110..112 ">" [] [Whitespace(" ")] + 1: AMP2@112..115 "&&" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@115..116 + 0: JS_NUMBER_LITERAL@115..116 "1" [] [] + 1: SEMICOLON@116..117 ";" [] [] + 6: JS_EXPRESSION_STATEMENT@117..127 + 0: JS_BINARY_EXPRESSION@117..126 + 0: TS_INSTANTIATION_EXPRESSION@117..123 + 0: JS_IDENTIFIER_EXPRESSION@117..119 + 0: JS_REFERENCE_IDENTIFIER@117..119 + 0: IDENT@117..119 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@119..123 + 0: L_ANGLE@119..120 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@120..121 + 0: TS_REFERENCE_TYPE@120..121 + 0: JS_REFERENCE_IDENTIFIER@120..121 + 0: IDENT@120..121 "T" [] [] + 1: (empty) + 2: R_ANGLE@121..123 ">" [] [Whitespace(" ")] + 1: PIPE@123..125 "|" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@125..126 + 0: JS_NUMBER_LITERAL@125..126 "1" [] [] + 1: SEMICOLON@126..127 ";" [] [] + 7: JS_EXPRESSION_STATEMENT@127..137 + 0: JS_BINARY_EXPRESSION@127..136 + 0: TS_INSTANTIATION_EXPRESSION@127..133 + 0: JS_IDENTIFIER_EXPRESSION@127..129 + 0: JS_REFERENCE_IDENTIFIER@127..129 + 0: IDENT@127..129 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@129..133 + 0: L_ANGLE@129..130 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@130..131 + 0: TS_REFERENCE_TYPE@130..131 + 0: JS_REFERENCE_IDENTIFIER@130..131 + 0: IDENT@130..131 "T" [] [] + 1: (empty) + 2: R_ANGLE@131..133 ">" [] [Whitespace(" ")] + 1: CARET@133..135 "^" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@135..136 + 0: JS_NUMBER_LITERAL@135..136 "1" [] [] + 1: SEMICOLON@136..137 ";" [] [] + 8: JS_EXPRESSION_STATEMENT@137..147 + 0: JS_BINARY_EXPRESSION@137..146 + 0: TS_INSTANTIATION_EXPRESSION@137..143 + 0: JS_IDENTIFIER_EXPRESSION@137..139 + 0: JS_REFERENCE_IDENTIFIER@137..139 + 0: IDENT@137..139 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@139..143 + 0: L_ANGLE@139..140 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@140..141 + 0: TS_REFERENCE_TYPE@140..141 + 0: JS_REFERENCE_IDENTIFIER@140..141 + 0: IDENT@140..141 "T" [] [] + 1: (empty) + 2: R_ANGLE@141..143 ">" [] [Whitespace(" ")] + 1: AMP@143..145 "&" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@145..146 + 0: JS_NUMBER_LITERAL@145..146 "1" [] [] + 1: SEMICOLON@146..147 ";" [] [] + 9: JS_EXPRESSION_STATEMENT@147..161 + 0: JS_BINARY_EXPRESSION@147..160 + 0: TS_INSTANTIATION_EXPRESSION@147..153 + 0: JS_IDENTIFIER_EXPRESSION@147..149 + 0: JS_REFERENCE_IDENTIFIER@147..149 + 0: IDENT@147..149 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@149..153 + 0: L_ANGLE@149..150 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@150..151 + 0: TS_REFERENCE_TYPE@150..151 + 0: JS_REFERENCE_IDENTIFIER@150..151 + 0: IDENT@150..151 "T" [] [] + 1: (empty) + 2: R_ANGLE@151..153 ">" [] [Whitespace(" ")] + 1: EQ2@153..156 "==" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@156..160 + 0: JS_IDENTIFIER_EXPRESSION@156..157 + 0: JS_REFERENCE_IDENTIFIER@156..157 + 0: IDENT@156..157 "f" [] [] + 1: TS_TYPE_ARGUMENTS@157..160 + 0: L_ANGLE@157..158 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@158..159 + 0: TS_REFERENCE_TYPE@158..159 + 0: JS_REFERENCE_IDENTIFIER@158..159 + 0: IDENT@158..159 "T" [] [] + 1: (empty) + 2: R_ANGLE@159..160 ">" [] [] + 1: SEMICOLON@160..161 ";" [] [] + 10: JS_EXPRESSION_STATEMENT@161..175 + 0: JS_BINARY_EXPRESSION@161..174 + 0: TS_INSTANTIATION_EXPRESSION@161..167 + 0: JS_IDENTIFIER_EXPRESSION@161..163 + 0: JS_REFERENCE_IDENTIFIER@161..163 + 0: IDENT@161..163 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@163..167 + 0: L_ANGLE@163..164 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@164..165 + 0: TS_REFERENCE_TYPE@164..165 + 0: JS_REFERENCE_IDENTIFIER@164..165 + 0: IDENT@164..165 "T" [] [] + 1: (empty) + 2: R_ANGLE@165..167 ">" [] [Whitespace(" ")] + 1: NEQ@167..170 "!=" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@170..174 + 0: JS_IDENTIFIER_EXPRESSION@170..171 + 0: JS_REFERENCE_IDENTIFIER@170..171 + 0: IDENT@170..171 "f" [] [] + 1: TS_TYPE_ARGUMENTS@171..174 + 0: L_ANGLE@171..172 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@172..173 + 0: TS_REFERENCE_TYPE@172..173 + 0: JS_REFERENCE_IDENTIFIER@172..173 + 0: IDENT@172..173 "T" [] [] + 1: (empty) + 2: R_ANGLE@173..174 ">" [] [] + 1: SEMICOLON@174..175 ";" [] [] + 11: JS_EXPRESSION_STATEMENT@175..190 + 0: JS_BINARY_EXPRESSION@175..189 + 0: TS_INSTANTIATION_EXPRESSION@175..181 + 0: JS_IDENTIFIER_EXPRESSION@175..177 + 0: JS_REFERENCE_IDENTIFIER@175..177 + 0: IDENT@175..177 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@177..181 + 0: L_ANGLE@177..178 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@178..179 + 0: TS_REFERENCE_TYPE@178..179 + 0: JS_REFERENCE_IDENTIFIER@178..179 + 0: IDENT@178..179 "T" [] [] + 1: (empty) + 2: R_ANGLE@179..181 ">" [] [Whitespace(" ")] + 1: EQ3@181..185 "===" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@185..189 + 0: JS_IDENTIFIER_EXPRESSION@185..186 + 0: JS_REFERENCE_IDENTIFIER@185..186 + 0: IDENT@185..186 "f" [] [] + 1: TS_TYPE_ARGUMENTS@186..189 + 0: L_ANGLE@186..187 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@187..188 + 0: TS_REFERENCE_TYPE@187..188 + 0: JS_REFERENCE_IDENTIFIER@187..188 + 0: IDENT@187..188 "T" [] [] + 1: (empty) + 2: R_ANGLE@188..189 ">" [] [] + 1: SEMICOLON@189..190 ";" [] [] + 12: JS_EXPRESSION_STATEMENT@190..205 + 0: JS_BINARY_EXPRESSION@190..204 + 0: TS_INSTANTIATION_EXPRESSION@190..196 + 0: JS_IDENTIFIER_EXPRESSION@190..192 + 0: JS_REFERENCE_IDENTIFIER@190..192 + 0: IDENT@190..192 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@192..196 + 0: L_ANGLE@192..193 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@193..194 + 0: TS_REFERENCE_TYPE@193..194 + 0: JS_REFERENCE_IDENTIFIER@193..194 + 0: IDENT@193..194 "T" [] [] + 1: (empty) + 2: R_ANGLE@194..196 ">" [] [Whitespace(" ")] + 1: NEQ2@196..200 "!==" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@200..204 + 0: JS_IDENTIFIER_EXPRESSION@200..201 + 0: JS_REFERENCE_IDENTIFIER@200..201 + 0: IDENT@200..201 "f" [] [] + 1: TS_TYPE_ARGUMENTS@201..204 + 0: L_ANGLE@201..202 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@202..203 + 0: TS_REFERENCE_TYPE@202..203 + 0: JS_REFERENCE_IDENTIFIER@202..203 + 0: IDENT@202..203 "T" [] [] + 1: (empty) + 2: R_ANGLE@203..204 ">" [] [] + 1: SEMICOLON@204..205 ";" [] [] + 13: JS_EXPRESSION_STATEMENT@205..219 + 0: JS_BINARY_EXPRESSION@205..218 + 0: TS_INSTANTIATION_EXPRESSION@205..211 + 0: JS_IDENTIFIER_EXPRESSION@205..207 + 0: JS_REFERENCE_IDENTIFIER@205..207 + 0: IDENT@205..207 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@207..211 + 0: L_ANGLE@207..208 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@208..209 + 0: TS_REFERENCE_TYPE@208..209 + 0: JS_REFERENCE_IDENTIFIER@208..209 + 0: IDENT@208..209 "T" [] [] + 1: (empty) + 2: R_ANGLE@209..211 ">" [] [Whitespace(" ")] + 1: LTEQ@211..214 "<=" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@214..218 + 0: JS_IDENTIFIER_EXPRESSION@214..215 + 0: JS_REFERENCE_IDENTIFIER@214..215 + 0: IDENT@214..215 "f" [] [] + 1: TS_TYPE_ARGUMENTS@215..218 + 0: L_ANGLE@215..216 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@216..217 + 0: TS_REFERENCE_TYPE@216..217 + 0: JS_REFERENCE_IDENTIFIER@216..217 + 0: IDENT@216..217 "T" [] [] + 1: (empty) + 2: R_ANGLE@217..218 ">" [] [] + 1: SEMICOLON@218..219 ";" [] [] + 14: JS_EXPRESSION_STATEMENT@219..241 + 0: JS_INSTANCEOF_EXPRESSION@219..240 + 0: TS_INSTANTIATION_EXPRESSION@219..225 + 0: JS_IDENTIFIER_EXPRESSION@219..221 + 0: JS_REFERENCE_IDENTIFIER@219..221 + 0: IDENT@219..221 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@221..225 + 0: L_ANGLE@221..222 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@222..223 + 0: TS_REFERENCE_TYPE@222..223 + 0: JS_REFERENCE_IDENTIFIER@222..223 + 0: IDENT@222..223 "T" [] [] + 1: (empty) + 2: R_ANGLE@223..225 ">" [] [Whitespace(" ")] + 1: INSTANCEOF_KW@225..236 "instanceof" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@236..240 + 0: JS_IDENTIFIER_EXPRESSION@236..237 + 0: JS_REFERENCE_IDENTIFIER@236..237 + 0: IDENT@236..237 "f" [] [] + 1: TS_TYPE_ARGUMENTS@237..240 + 0: L_ANGLE@237..238 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@238..239 + 0: TS_REFERENCE_TYPE@238..239 + 0: JS_REFERENCE_IDENTIFIER@238..239 + 0: IDENT@238..239 "T" [] [] + 1: (empty) + 2: R_ANGLE@239..240 ">" [] [] + 1: SEMICOLON@240..241 ";" [] [] + 15: JS_EXPRESSION_STATEMENT@241..253 + 0: JS_IN_EXPRESSION@241..252 + 0: TS_INSTANTIATION_EXPRESSION@241..247 + 0: JS_IDENTIFIER_EXPRESSION@241..243 + 0: JS_REFERENCE_IDENTIFIER@241..243 + 0: IDENT@241..243 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@243..247 + 0: L_ANGLE@243..244 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@244..245 + 0: TS_REFERENCE_TYPE@244..245 + 0: JS_REFERENCE_IDENTIFIER@244..245 + 0: IDENT@244..245 "T" [] [] + 1: (empty) + 2: R_ANGLE@245..247 ">" [] [Whitespace(" ")] + 1: IN_KW@247..250 "in" [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@250..252 + 0: L_CURLY@250..251 "{" [] [] + 1: JS_OBJECT_MEMBER_LIST@251..251 + 2: R_CURLY@251..252 "}" [] [] + 1: SEMICOLON@252..253 ";" [] [] + 16: JS_EXPRESSION_STATEMENT@253..265 + 0: TS_AS_EXPRESSION@253..264 + 0: TS_INSTANTIATION_EXPRESSION@253..259 + 0: JS_IDENTIFIER_EXPRESSION@253..255 + 0: JS_REFERENCE_IDENTIFIER@253..255 + 0: IDENT@253..255 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@255..259 + 0: L_ANGLE@255..256 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@256..257 + 0: TS_REFERENCE_TYPE@256..257 + 0: JS_REFERENCE_IDENTIFIER@256..257 + 0: IDENT@256..257 "T" [] [] + 1: (empty) + 2: R_ANGLE@257..259 ">" [] [Whitespace(" ")] + 1: AS_KW@259..262 "as" [] [Whitespace(" ")] + 2: TS_OBJECT_TYPE@262..264 + 0: L_CURLY@262..263 "{" [] [] + 1: TS_TYPE_MEMBER_LIST@263..263 + 2: R_CURLY@263..264 "}" [] [] + 1: SEMICOLON@264..265 ";" [] [] + 17: JS_EXPRESSION_STATEMENT@265..284 + 0: TS_SATISFIES_EXPRESSION@265..283 + 0: TS_INSTANTIATION_EXPRESSION@265..271 + 0: JS_IDENTIFIER_EXPRESSION@265..267 + 0: JS_REFERENCE_IDENTIFIER@265..267 + 0: IDENT@265..267 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@267..271 + 0: L_ANGLE@267..268 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@268..269 + 0: TS_REFERENCE_TYPE@268..269 + 0: JS_REFERENCE_IDENTIFIER@268..269 + 0: IDENT@268..269 "T" [] [] + 1: (empty) + 2: R_ANGLE@269..271 ">" [] [Whitespace(" ")] + 1: SATISFIES_KW@271..281 "satisfies" [] [Whitespace(" ")] + 2: TS_OBJECT_TYPE@281..283 + 0: L_CURLY@281..282 "{" [] [] + 1: TS_TYPE_MEMBER_LIST@282..282 + 2: R_CURLY@282..283 "}" [] [] + 1: SEMICOLON@283..284 ";" [] [] + 18: JS_EXPRESSION_STATEMENT@284..297 + 0: JS_BINARY_EXPRESSION@284..296 + 0: TS_INSTANTIATION_EXPRESSION@284..290 + 0: JS_IDENTIFIER_EXPRESSION@284..286 + 0: JS_REFERENCE_IDENTIFIER@284..286 + 0: IDENT@284..286 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@286..290 + 0: L_ANGLE@286..287 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@287..288 + 0: TS_REFERENCE_TYPE@287..288 + 0: JS_REFERENCE_IDENTIFIER@287..288 + 0: IDENT@287..288 "T" [] [] + 1: (empty) + 2: R_ANGLE@288..290 ">" [] [Whitespace(" ")] + 1: STAR@290..292 "*" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@292..296 + 0: JS_IDENTIFIER_EXPRESSION@292..293 + 0: JS_REFERENCE_IDENTIFIER@292..293 + 0: IDENT@292..293 "f" [] [] + 1: TS_TYPE_ARGUMENTS@293..296 + 0: L_ANGLE@293..294 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@294..295 + 0: TS_REFERENCE_TYPE@294..295 + 0: JS_REFERENCE_IDENTIFIER@294..295 + 0: IDENT@294..295 "T" [] [] + 1: (empty) + 2: R_ANGLE@295..296 ">" [] [] + 1: SEMICOLON@296..297 ";" [] [] + 19: JS_EXPRESSION_STATEMENT@297..310 + 0: JS_BINARY_EXPRESSION@297..309 + 0: TS_INSTANTIATION_EXPRESSION@297..303 + 0: JS_IDENTIFIER_EXPRESSION@297..299 + 0: JS_REFERENCE_IDENTIFIER@297..299 + 0: IDENT@297..299 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@299..303 + 0: L_ANGLE@299..300 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@300..301 + 0: TS_REFERENCE_TYPE@300..301 + 0: JS_REFERENCE_IDENTIFIER@300..301 + 0: IDENT@300..301 "T" [] [] + 1: (empty) + 2: R_ANGLE@301..303 ">" [] [Whitespace(" ")] + 1: SLASH@303..305 "/" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@305..309 + 0: JS_IDENTIFIER_EXPRESSION@305..306 + 0: JS_REFERENCE_IDENTIFIER@305..306 + 0: IDENT@305..306 "f" [] [] + 1: TS_TYPE_ARGUMENTS@306..309 + 0: L_ANGLE@306..307 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@307..308 + 0: TS_REFERENCE_TYPE@307..308 + 0: JS_REFERENCE_IDENTIFIER@307..308 + 0: IDENT@307..308 "T" [] [] + 1: (empty) + 2: R_ANGLE@308..309 ">" [] [] + 1: SEMICOLON@309..310 ";" [] [] + 20: JS_EXPRESSION_STATEMENT@310..323 + 0: JS_BINARY_EXPRESSION@310..322 + 0: TS_INSTANTIATION_EXPRESSION@310..316 + 0: JS_IDENTIFIER_EXPRESSION@310..312 + 0: JS_REFERENCE_IDENTIFIER@310..312 + 0: IDENT@310..312 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@312..316 + 0: L_ANGLE@312..313 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@313..314 + 0: TS_REFERENCE_TYPE@313..314 + 0: JS_REFERENCE_IDENTIFIER@313..314 + 0: IDENT@313..314 "T" [] [] + 1: (empty) + 2: R_ANGLE@314..316 ">" [] [Whitespace(" ")] + 1: PERCENT@316..318 "%" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@318..322 + 0: JS_IDENTIFIER_EXPRESSION@318..319 + 0: JS_REFERENCE_IDENTIFIER@318..319 + 0: IDENT@318..319 "f" [] [] + 1: TS_TYPE_ARGUMENTS@319..322 + 0: L_ANGLE@319..320 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@320..321 + 0: TS_REFERENCE_TYPE@320..321 + 0: JS_REFERENCE_IDENTIFIER@320..321 + 0: IDENT@320..321 "T" [] [] + 1: (empty) + 2: R_ANGLE@321..322 ">" [] [] + 1: SEMICOLON@322..323 ";" [] [] + 21: JS_EXPRESSION_STATEMENT@323..337 + 0: JS_BINARY_EXPRESSION@323..336 + 0: TS_INSTANTIATION_EXPRESSION@323..329 + 0: JS_IDENTIFIER_EXPRESSION@323..325 + 0: JS_REFERENCE_IDENTIFIER@323..325 + 0: IDENT@323..325 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@325..329 + 0: L_ANGLE@325..326 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@326..327 + 0: TS_REFERENCE_TYPE@326..327 + 0: JS_REFERENCE_IDENTIFIER@326..327 + 0: IDENT@326..327 "T" [] [] + 1: (empty) + 2: R_ANGLE@327..329 ">" [] [Whitespace(" ")] + 1: STAR2@329..332 "**" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@332..336 + 0: JS_IDENTIFIER_EXPRESSION@332..333 + 0: JS_REFERENCE_IDENTIFIER@332..333 + 0: IDENT@332..333 "f" [] [] + 1: TS_TYPE_ARGUMENTS@333..336 + 0: L_ANGLE@333..334 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@334..335 + 0: TS_REFERENCE_TYPE@334..335 + 0: JS_REFERENCE_IDENTIFIER@334..335 + 0: IDENT@334..335 "T" [] [] + 1: (empty) + 2: R_ANGLE@335..336 ">" [] [] + 1: SEMICOLON@336..337 ";" [] [] + 22: JS_EXPRESSION_STATEMENT@337..352 + 0: JS_BINARY_EXPRESSION@337..351 + 0: JS_BINARY_EXPRESSION@337..344 + 0: JS_IDENTIFIER_EXPRESSION@337..340 + 0: JS_REFERENCE_IDENTIFIER@337..340 + 0: IDENT@337..340 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@340..342 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@342..344 + 0: JS_REFERENCE_IDENTIFIER@342..344 + 0: IDENT@342..344 "T" [] [Whitespace(" ")] + 1: R_ANGLE@344..346 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@346..351 + 0: PLUS@346..347 "+" [] [] + 1: TS_INSTANTIATION_EXPRESSION@347..351 + 0: JS_IDENTIFIER_EXPRESSION@347..348 + 0: JS_REFERENCE_IDENTIFIER@347..348 + 0: IDENT@347..348 "f" [] [] + 1: TS_TYPE_ARGUMENTS@348..351 + 0: L_ANGLE@348..349 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@349..350 + 0: TS_REFERENCE_TYPE@349..350 + 0: JS_REFERENCE_IDENTIFIER@349..350 + 0: IDENT@349..350 "T" [] [] + 1: (empty) + 2: R_ANGLE@350..351 ">" [] [] + 1: SEMICOLON@351..352 ";" [] [] + 23: JS_EXPRESSION_STATEMENT@352..367 + 0: JS_BINARY_EXPRESSION@352..366 + 0: JS_BINARY_EXPRESSION@352..359 + 0: JS_IDENTIFIER_EXPRESSION@352..355 + 0: JS_REFERENCE_IDENTIFIER@352..355 + 0: IDENT@352..355 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@355..357 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@357..359 + 0: JS_REFERENCE_IDENTIFIER@357..359 + 0: IDENT@357..359 "T" [] [Whitespace(" ")] + 1: R_ANGLE@359..361 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@361..366 + 0: MINUS@361..362 "-" [] [] + 1: TS_INSTANTIATION_EXPRESSION@362..366 + 0: JS_IDENTIFIER_EXPRESSION@362..363 + 0: JS_REFERENCE_IDENTIFIER@362..363 + 0: IDENT@362..363 "f" [] [] + 1: TS_TYPE_ARGUMENTS@363..366 + 0: L_ANGLE@363..364 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@364..365 + 0: TS_REFERENCE_TYPE@364..365 + 0: JS_REFERENCE_IDENTIFIER@364..365 + 0: IDENT@364..365 "T" [] [] + 1: (empty) + 2: R_ANGLE@365..366 ">" [] [] + 1: SEMICOLON@366..367 ";" [] [] + 24: JS_EXPRESSION_STATEMENT@367..381 + 0: JS_BINARY_EXPRESSION@367..380 + 0: JS_BINARY_EXPRESSION@367..374 + 0: JS_IDENTIFIER_EXPRESSION@367..370 + 0: JS_REFERENCE_IDENTIFIER@367..370 + 0: IDENT@367..370 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@370..372 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@372..374 + 0: JS_REFERENCE_IDENTIFIER@372..374 + 0: IDENT@372..374 "T" [] [Whitespace(" ")] + 1: R_ANGLE@374..376 ">" [] [Whitespace(" ")] + 2: JS_THIS_EXPRESSION@376..380 + 0: THIS_KW@376..380 "this" [] [] + 1: SEMICOLON@380..381 ";" [] [] + 25: JS_EXPRESSION_STATEMENT@381..395 + 0: JS_BINARY_EXPRESSION@381..394 + 0: JS_BINARY_EXPRESSION@381..388 + 0: JS_IDENTIFIER_EXPRESSION@381..384 + 0: JS_REFERENCE_IDENTIFIER@381..384 + 0: IDENT@381..384 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@384..386 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@386..388 + 0: JS_REFERENCE_IDENTIFIER@386..388 + 0: IDENT@386..388 "T" [] [Whitespace(" ")] + 1: R_ANGLE@388..390 ">" [] [Whitespace(" ")] + 2: JS_NULL_LITERAL_EXPRESSION@390..394 + 0: NULL_KW@390..394 "null" [] [] + 1: SEMICOLON@394..395 ";" [] [] + 26: JS_EXPRESSION_STATEMENT@395..409 + 0: JS_BINARY_EXPRESSION@395..408 + 0: JS_BINARY_EXPRESSION@395..402 + 0: JS_IDENTIFIER_EXPRESSION@395..398 + 0: JS_REFERENCE_IDENTIFIER@395..398 + 0: IDENT@395..398 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@398..400 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@400..402 + 0: JS_REFERENCE_IDENTIFIER@400..402 + 0: IDENT@400..402 "T" [] [Whitespace(" ")] + 1: R_ANGLE@402..404 ">" [] [Whitespace(" ")] + 2: JS_BOOLEAN_LITERAL_EXPRESSION@404..408 + 0: TRUE_KW@404..408 "true" [] [] + 1: SEMICOLON@408..409 ";" [] [] + 27: JS_EXPRESSION_STATEMENT@409..424 + 0: JS_BINARY_EXPRESSION@409..423 + 0: JS_BINARY_EXPRESSION@409..416 + 0: JS_IDENTIFIER_EXPRESSION@409..412 + 0: JS_REFERENCE_IDENTIFIER@409..412 + 0: IDENT@409..412 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@412..414 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@414..416 + 0: JS_REFERENCE_IDENTIFIER@414..416 + 0: IDENT@414..416 "T" [] [Whitespace(" ")] + 1: R_ANGLE@416..418 ">" [] [Whitespace(" ")] + 2: JS_BOOLEAN_LITERAL_EXPRESSION@418..423 + 0: FALSE_KW@418..423 "false" [] [] + 1: SEMICOLON@423..424 ";" [] [] + 28: JS_EXPRESSION_STATEMENT@424..435 + 0: JS_BINARY_EXPRESSION@424..434 + 0: JS_BINARY_EXPRESSION@424..431 + 0: JS_IDENTIFIER_EXPRESSION@424..427 + 0: JS_REFERENCE_IDENTIFIER@424..427 + 0: IDENT@424..427 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@427..429 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@429..431 + 0: JS_REFERENCE_IDENTIFIER@429..431 + 0: IDENT@429..431 "T" [] [Whitespace(" ")] + 1: R_ANGLE@431..433 ">" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@433..434 + 0: JS_NUMBER_LITERAL@433..434 "1" [] [] + 1: SEMICOLON@434..435 ";" [] [] + 29: JS_EXPRESSION_STATEMENT@435..449 + 0: JS_BINARY_EXPRESSION@435..448 + 0: JS_BINARY_EXPRESSION@435..442 + 0: JS_IDENTIFIER_EXPRESSION@435..438 + 0: JS_REFERENCE_IDENTIFIER@435..438 + 0: IDENT@435..438 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@438..440 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@440..442 + 0: JS_REFERENCE_IDENTIFIER@440..442 + 0: IDENT@440..442 "T" [] [Whitespace(" ")] + 1: R_ANGLE@442..444 ">" [] [Whitespace(" ")] + 2: JS_BIG_INT_LITERAL_EXPRESSION@444..448 + 0: JS_BIG_INT_LITERAL@444..448 "123n" [] [] + 1: SEMICOLON@448..449 ";" [] [] + 30: JS_EXPRESSION_STATEMENT@449..461 + 0: JS_BINARY_EXPRESSION@449..460 + 0: JS_BINARY_EXPRESSION@449..456 + 0: JS_IDENTIFIER_EXPRESSION@449..452 + 0: JS_REFERENCE_IDENTIFIER@449..452 + 0: IDENT@449..452 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@452..454 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@454..456 + 0: JS_REFERENCE_IDENTIFIER@454..456 + 0: IDENT@454..456 "T" [] [Whitespace(" ")] + 1: R_ANGLE@456..458 ">" [] [Whitespace(" ")] + 2: JS_ARRAY_EXPRESSION@458..460 + 0: L_BRACK@458..459 "[" [] [] + 1: JS_ARRAY_ELEMENT_LIST@459..459 + 2: R_BRACK@459..460 "]" [] [] + 1: SEMICOLON@460..461 ";" [] [] + 31: JS_EXPRESSION_STATEMENT@461..473 + 0: JS_BINARY_EXPRESSION@461..472 + 0: JS_BINARY_EXPRESSION@461..468 + 0: JS_IDENTIFIER_EXPRESSION@461..464 + 0: JS_REFERENCE_IDENTIFIER@461..464 + 0: IDENT@461..464 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@464..466 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@466..468 + 0: JS_REFERENCE_IDENTIFIER@466..468 + 0: IDENT@466..468 "T" [] [Whitespace(" ")] + 1: R_ANGLE@468..470 ">" [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@470..472 + 0: L_CURLY@470..471 "{" [] [] + 1: JS_OBJECT_MEMBER_LIST@471..471 + 2: R_CURLY@471..472 "}" [] [] + 1: SEMICOLON@472..473 ";" [] [] + 32: JS_EXPRESSION_STATEMENT@473..501 + 0: JS_BINARY_EXPRESSION@473..500 + 0: JS_BINARY_EXPRESSION@473..480 + 0: JS_IDENTIFIER_EXPRESSION@473..476 + 0: JS_REFERENCE_IDENTIFIER@473..476 + 0: IDENT@473..476 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@476..478 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@478..480 + 0: JS_REFERENCE_IDENTIFIER@478..480 + 0: IDENT@478..480 "T" [] [Whitespace(" ")] + 1: R_ANGLE@480..482 ">" [] [Whitespace(" ")] + 2: JS_FUNCTION_EXPRESSION@482..500 + 0: (empty) + 1: FUNCTION_KW@482..491 "function" [] [Whitespace(" ")] + 2: (empty) + 3: JS_IDENTIFIER_BINDING@491..495 + 0: IDENT@491..495 "test" [] [] + 4: (empty) + 5: JS_PARAMETERS@495..498 + 0: L_PAREN@495..496 "(" [] [] + 1: JS_PARAMETER_LIST@496..496 + 2: R_PAREN@496..498 ")" [] [Whitespace(" ")] + 6: (empty) + 7: JS_FUNCTION_BODY@498..500 + 0: L_CURLY@498..499 "{" [] [] + 1: JS_DIRECTIVE_LIST@499..499 + 2: JS_STATEMENT_LIST@499..499 + 3: R_CURLY@499..500 "}" [] [] + 1: SEMICOLON@500..501 ";" [] [] + 33: JS_EXPRESSION_STATEMENT@501..521 + 0: JS_BINARY_EXPRESSION@501..520 + 0: JS_BINARY_EXPRESSION@501..508 + 0: JS_IDENTIFIER_EXPRESSION@501..504 + 0: JS_REFERENCE_IDENTIFIER@501..504 + 0: IDENT@501..504 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@504..506 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@506..508 + 0: JS_REFERENCE_IDENTIFIER@506..508 + 0: IDENT@506..508 "T" [] [Whitespace(" ")] + 1: R_ANGLE@508..510 ">" [] [Whitespace(" ")] + 2: JS_CLASS_EXPRESSION@510..520 + 0: CLASS_KW@510..516 "class" [] [Whitespace(" ")] + 1: JS_IDENTIFIER_BINDING@516..518 + 0: IDENT@516..518 "A" [] [Whitespace(" ")] + 2: (empty) + 3: (empty) + 4: (empty) + 5: L_CURLY@518..519 "{" [] [] + 6: JS_CLASS_MEMBER_LIST@519..519 + 7: R_CURLY@519..520 "}" [] [] + 1: SEMICOLON@520..521 ";" [] [] + 34: JS_EXPRESSION_STATEMENT@521..538 + 0: JS_BINARY_EXPRESSION@521..537 + 0: JS_BINARY_EXPRESSION@521..528 + 0: JS_IDENTIFIER_EXPRESSION@521..524 + 0: JS_REFERENCE_IDENTIFIER@521..524 + 0: IDENT@521..524 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@524..526 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@526..528 + 0: JS_REFERENCE_IDENTIFIER@526..528 + 0: IDENT@526..528 "T" [] [Whitespace(" ")] + 1: R_ANGLE@528..530 ">" [] [Whitespace(" ")] + 2: JS_NEW_EXPRESSION@530..537 + 0: NEW_KW@530..534 "new" [] [Whitespace(" ")] + 1: JS_IDENTIFIER_EXPRESSION@534..535 + 0: JS_REFERENCE_IDENTIFIER@534..535 + 0: IDENT@534..535 "A" [] [] + 2: (empty) + 3: JS_CALL_ARGUMENTS@535..537 + 0: L_PAREN@535..536 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@536..536 + 2: R_PAREN@536..537 ")" [] [] + 1: SEMICOLON@537..538 ";" [] [] + 35: JS_EXPRESSION_STATEMENT@538..548 + 0: JS_BINARY_EXPRESSION@538..547 + 0: TS_INSTANTIATION_EXPRESSION@538..544 + 0: JS_IDENTIFIER_EXPRESSION@538..540 + 0: JS_REFERENCE_IDENTIFIER@538..540 + 0: IDENT@538..540 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@540..544 + 0: L_ANGLE@540..541 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@541..542 + 0: TS_REFERENCE_TYPE@541..542 + 0: JS_REFERENCE_IDENTIFIER@541..542 + 0: IDENT@541..542 "T" [] [] + 1: (empty) + 2: R_ANGLE@542..544 ">" [] [Whitespace(" ")] + 1: SLASH@544..546 "/" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@546..547 + 0: JS_NUMBER_LITERAL@546..547 "1" [] [] + 1: SEMICOLON@547..548 ";" [] [] + 36: JS_EXPRESSION_STATEMENT@548..560 + 0: JS_BINARY_EXPRESSION@548..559 + 0: JS_BINARY_EXPRESSION@548..555 + 0: JS_IDENTIFIER_EXPRESSION@548..551 + 0: JS_REFERENCE_IDENTIFIER@548..551 + 0: IDENT@548..551 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@551..553 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@553..555 + 0: JS_REFERENCE_IDENTIFIER@553..555 + 0: IDENT@553..555 "T" [] [Whitespace(" ")] + 1: R_ANGLE@555..557 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@557..559 + 0: PLUS@557..558 "+" [] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@558..559 + 0: JS_NUMBER_LITERAL@558..559 "1" [] [] + 1: SEMICOLON@559..560 ";" [] [] + 37: JS_EXPRESSION_STATEMENT@560..572 + 0: JS_BINARY_EXPRESSION@560..571 + 0: JS_BINARY_EXPRESSION@560..567 + 0: JS_IDENTIFIER_EXPRESSION@560..563 + 0: JS_REFERENCE_IDENTIFIER@560..563 + 0: IDENT@560..563 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@563..565 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@565..567 + 0: JS_REFERENCE_IDENTIFIER@565..567 + 0: IDENT@565..567 "T" [] [Whitespace(" ")] + 1: R_ANGLE@567..569 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@569..571 + 0: MINUS@569..570 "-" [] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@570..571 + 0: JS_NUMBER_LITERAL@570..571 "1" [] [] + 1: SEMICOLON@571..572 ";" [] [] + 38: JS_EXPRESSION_STATEMENT@572..584 + 0: JS_BINARY_EXPRESSION@572..583 + 0: JS_BINARY_EXPRESSION@572..579 + 0: JS_IDENTIFIER_EXPRESSION@572..575 + 0: JS_REFERENCE_IDENTIFIER@572..575 + 0: IDENT@572..575 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@575..577 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@577..579 + 0: JS_REFERENCE_IDENTIFIER@577..579 + 0: IDENT@577..579 "T" [] [Whitespace(" ")] + 1: R_ANGLE@579..581 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@581..583 + 0: TILDE@581..582 "~" [] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@582..583 + 0: JS_NUMBER_LITERAL@582..583 "1" [] [] + 1: SEMICOLON@583..584 ";" [] [] + 39: JS_EXPRESSION_STATEMENT@584..596 + 0: JS_BINARY_EXPRESSION@584..595 + 0: JS_BINARY_EXPRESSION@584..591 + 0: JS_IDENTIFIER_EXPRESSION@584..587 + 0: JS_REFERENCE_IDENTIFIER@584..587 + 0: IDENT@584..587 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@587..589 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@589..591 + 0: JS_REFERENCE_IDENTIFIER@589..591 + 0: IDENT@589..591 "T" [] [Whitespace(" ")] + 1: R_ANGLE@591..593 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@593..595 + 0: BANG@593..594 "!" [] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@594..595 + 0: JS_NUMBER_LITERAL@594..595 "1" [] [] + 1: SEMICOLON@595..596 ";" [] [] + 40: JS_EXPRESSION_STATEMENT@596..620 + 0: JS_BINARY_EXPRESSION@596..619 + 0: JS_BINARY_EXPRESSION@596..603 + 0: JS_IDENTIFIER_EXPRESSION@596..599 + 0: JS_REFERENCE_IDENTIFIER@596..599 + 0: IDENT@596..599 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@599..601 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@601..603 + 0: JS_REFERENCE_IDENTIFIER@601..603 + 0: IDENT@601..603 "T" [] [Whitespace(" ")] + 1: R_ANGLE@603..605 ">" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@605..619 + 0: JS_REFERENCE_IDENTIFIER@605..619 + 0: IDENT@605..619 "someIdentifier" [] [] + 1: SEMICOLON@619..620 ";" [] [] + 41: JS_EXPRESSION_STATEMENT@620..645 + 0: JS_BINARY_EXPRESSION@620..644 + 0: JS_BINARY_EXPRESSION@620..627 + 0: JS_IDENTIFIER_EXPRESSION@620..623 + 0: JS_REFERENCE_IDENTIFIER@620..623 + 0: IDENT@620..623 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@623..625 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@625..627 + 0: JS_REFERENCE_IDENTIFIER@625..627 + 0: IDENT@625..627 "T" [] [Whitespace(" ")] + 1: R_ANGLE@627..629 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@629..644 + 0: DELETE_KW@629..636 "delete" [] [Whitespace(" ")] + 1: JS_COMPUTED_MEMBER_EXPRESSION@636..644 + 0: JS_IDENTIFIER_EXPRESSION@636..637 + 0: JS_REFERENCE_IDENTIFIER@636..637 + 0: IDENT@636..637 "a" [] [] + 1: (empty) + 2: L_BRACK@637..638 "[" [] [] + 3: JS_IDENTIFIER_EXPRESSION@638..643 + 0: JS_REFERENCE_IDENTIFIER@638..643 + 0: IDENT@638..643 "field" [] [] + 4: R_BRACK@643..644 "]" [] [] + 1: SEMICOLON@644..645 ";" [] [] + 42: JS_EXPRESSION_STATEMENT@645..669 + 0: JS_BINARY_EXPRESSION@645..668 + 0: JS_BINARY_EXPRESSION@645..652 + 0: JS_IDENTIFIER_EXPRESSION@645..648 + 0: JS_REFERENCE_IDENTIFIER@645..648 + 0: IDENT@645..648 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@648..650 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@650..652 + 0: JS_REFERENCE_IDENTIFIER@650..652 + 0: IDENT@650..652 "T" [] [Whitespace(" ")] + 1: R_ANGLE@652..654 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@654..668 + 0: TYPEOF_KW@654..661 "typeof" [] [Whitespace(" ")] + 1: JS_IDENTIFIER_EXPRESSION@661..668 + 0: JS_REFERENCE_IDENTIFIER@661..668 + 0: IDENT@661..668 "MyClass" [] [] + 1: SEMICOLON@668..669 ";" [] [] + 43: JS_EXPRESSION_STATEMENT@669..685 + 0: JS_BINARY_EXPRESSION@669..684 + 0: JS_BINARY_EXPRESSION@669..676 + 0: JS_IDENTIFIER_EXPRESSION@669..672 + 0: JS_REFERENCE_IDENTIFIER@669..672 + 0: IDENT@669..672 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@672..674 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@674..676 + 0: JS_REFERENCE_IDENTIFIER@674..676 + 0: IDENT@674..676 "T" [] [Whitespace(" ")] + 1: R_ANGLE@676..678 ">" [] [Whitespace(" ")] + 2: JS_UNARY_EXPRESSION@678..684 + 0: VOID_KW@678..683 "void" [] [Whitespace(" ")] + 1: JS_IDENTIFIER_EXPRESSION@683..684 + 0: JS_REFERENCE_IDENTIFIER@683..684 + 0: IDENT@683..684 "a" [] [] + 1: SEMICOLON@684..685 ";" [] [] + 44: JS_EXPRESSION_STATEMENT@685..696 + 0: JS_BINARY_EXPRESSION@685..695 + 0: TS_INSTANTIATION_EXPRESSION@685..691 + 0: JS_IDENTIFIER_EXPRESSION@685..687 + 0: JS_REFERENCE_IDENTIFIER@685..687 + 0: IDENT@685..687 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@687..691 + 0: L_ANGLE@687..688 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@688..689 + 0: TS_REFERENCE_TYPE@688..689 + 0: JS_REFERENCE_IDENTIFIER@688..689 + 0: IDENT@688..689 "T" [] [] + 1: (empty) + 2: R_ANGLE@689..691 ">" [] [Whitespace(" ")] + 1: LTEQ@691..694 "<=" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@694..695 + 0: JS_NUMBER_LITERAL@694..695 "1" [] [] + 1: SEMICOLON@695..696 ";" [] [] + 45: JS_EXPRESSION_STATEMENT@696..715 + 0: JS_CALL_EXPRESSION@696..714 + 0: JS_IDENTIFIER_EXPRESSION@696..699 + 0: JS_REFERENCE_IDENTIFIER@696..699 + 0: IDENT@696..699 "f" [Newline("\n")] [Whitespace(" ")] + 1: (empty) + 2: TS_TYPE_ARGUMENTS@699..705 + 0: L_ANGLE@699..701 "<" [] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENT_LIST@701..703 + 0: TS_REFERENCE_TYPE@701..703 + 0: JS_REFERENCE_IDENTIFIER@701..703 + 0: IDENT@701..703 "T" [] [Whitespace(" ")] + 1: (empty) + 2: R_ANGLE@703..705 ">" [] [Whitespace(" ")] + 3: JS_CALL_ARGUMENTS@705..714 + 0: L_PAREN@705..706 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@706..713 + 0: JS_AWAIT_EXPRESSION@706..713 + 0: AWAIT_KW@706..712 "await" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@712..713 + 0: JS_NUMBER_LITERAL@712..713 "1" [] [] + 2: R_PAREN@713..714 ")" [] [] + 1: SEMICOLON@714..715 ";" [] [] + 46: JS_EXPRESSION_STATEMENT@715..736 + 0: JS_BINARY_EXPRESSION@715..735 + 0: JS_BINARY_EXPRESSION@715..722 + 0: JS_IDENTIFIER_EXPRESSION@715..718 + 0: JS_REFERENCE_IDENTIFIER@715..718 + 0: IDENT@715..718 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@718..720 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@720..722 + 0: JS_REFERENCE_IDENTIFIER@720..722 + 0: IDENT@720..722 "T" [] [Whitespace(" ")] + 1: R_ANGLE@722..724 ">" [] [Whitespace(" ")] + 2: JS_IMPORT_META_EXPRESSION@724..735 + 0: IMPORT_KW@724..730 "import" [] [] + 1: DOT@730..731 "." [] [] + 2: META@731..735 "meta" [] [] + 1: SEMICOLON@735..736 ";" [] [] + 47: JS_EXPRESSION_STATEMENT@736..759 + 0: JS_BINARY_EXPRESSION@736..758 + 0: JS_BINARY_EXPRESSION@736..743 + 0: JS_IDENTIFIER_EXPRESSION@736..739 + 0: JS_REFERENCE_IDENTIFIER@736..739 + 0: IDENT@736..739 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@739..741 "<" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@741..743 + 0: JS_REFERENCE_IDENTIFIER@741..743 + 0: IDENT@741..743 "T" [] [Whitespace(" ")] + 1: R_ANGLE@743..745 ">" [] [Whitespace(" ")] + 2: JS_IMPORT_CALL_EXPRESSION@745..758 + 0: IMPORT_KW@745..751 "import" [] [] + 1: JS_CALL_ARGUMENTS@751..758 + 0: L_PAREN@751..752 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@752..757 + 0: JS_STRING_LITERAL_EXPRESSION@752..757 + 0: JS_STRING_LITERAL@752..757 "\"123\"" [] [] + 2: R_PAREN@757..758 ")" [] [] + 1: SEMICOLON@758..759 ";" [] [] + 48: JS_EXPRESSION_STATEMENT@759..771 + 0: JS_BINARY_EXPRESSION@759..770 + 0: JS_IDENTIFIER_EXPRESSION@759..762 + 0: JS_REFERENCE_IDENTIFIER@759..762 + 0: IDENT@759..762 "a" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@762..764 "<" [] [Whitespace(" ")] + 2: JS_BINARY_EXPRESSION@764..770 + 0: JS_IDENTIFIER_EXPRESSION@764..766 + 0: JS_REFERENCE_IDENTIFIER@764..766 + 0: IDENT@764..766 "b" [] [Whitespace(" ")] + 1: SHR@766..769 ">>" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_EXPRESSION@769..770 + 0: JS_REFERENCE_IDENTIFIER@769..770 + 0: IDENT@769..770 "c" [] [] + 1: SEMICOLON@770..771 ";" [] [] + 49: JS_EXPRESSION_STATEMENT@771..794 + 0: JS_ASSIGNMENT_EXPRESSION@771..793 + 0: JS_IDENTIFIER_ASSIGNMENT@771..774 + 0: IDENT@771..774 "f" [Newline("\n")] [Whitespace(" ")] + 1: EQ@774..776 "=" [] [Whitespace(" ")] + 2: JS_BINARY_EXPRESSION@776..793 + 0: JS_BINARY_EXPRESSION@776..784 + 0: JS_IDENTIFIER_EXPRESSION@776..778 + 0: JS_REFERENCE_IDENTIFIER@776..778 + 0: IDENT@776..778 "h" [] [Whitespace(" ")] + 1: USHR@778..782 ">>>" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@782..784 + 0: JS_NUMBER_LITERAL@782..784 "0" [] [Whitespace(" ")] + 1: L_ANGLE@784..786 "<" [] [Whitespace(" ")] + 2: JS_BINARY_EXPRESSION@786..793 + 0: JS_IDENTIFIER_EXPRESSION@786..788 + 0: JS_REFERENCE_IDENTIFIER@786..788 + 0: IDENT@786..788 "j" [] [Whitespace(" ")] + 1: USHR@788..792 ">>>" [] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@792..793 + 0: JS_NUMBER_LITERAL@792..793 "0" [] [] + 1: SEMICOLON@793..794 ";" [] [] + 3: EOF@794..795 "" [Newline("\n")] [] diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.ts b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.ts new file mode 100644 index 00000000000..b4a2006a9a6 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.ts @@ -0,0 +1,54 @@ +class A { + constructor() { + f super(); + } +} +f``; +f(1); +f ?? 1; +f || 1; +f && 1; +f | 1; +f ^ 1; +f & 1; +f == f; +f != f; +f === f; +f !== f; +f <= f; +f instanceof f; +f in {}; +f as {}; +f satisfies {}; +f * f; +f / f; +f % f; +f ** f; +f < T > +f; +f < T > -f; +f < T > this; +f < T > null; +f < T > true; +f < T > false; +f < T > 1; +f < T > 123n; +f < T > []; +f < T > {}; +f < T > function test() {}; +f < T > class A {}; +f < T > new A(); +f / 1; +f < T > +1; +f < T > -1; +f < T > ~1; +f < T > !1; +f < T > someIdentifier; +f < T > delete a[field]; +f < T > typeof MyClass; +f < T > void a; +f <= 1; +f < T > (await 1); +f < T > import.meta; +f < T > import("123"); +a < b >> c; +f = h >>> 0 < j >>> 0; diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.rast b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.rast new file mode 100644 index 00000000000..888ae3749b5 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.rast @@ -0,0 +1,1218 @@ +JsModule { + interpreter_token: missing (optional), + directives: JsDirectiveList [], + items: JsModuleItemList [ + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: CONST_KW@0..6 "const" [] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@6..9 "x5" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@9..11 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@11..12 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@12..13 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@13..17 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@17..18 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: LET_KW@18..23 "let" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@23..26 "yy" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@26..28 "=" [] [Whitespace(" ")], + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@28..29 "0" [] [], + }, + }, + }, + ], + }, + semicolon_token: SEMICOLON@29..30 ";" [] [], + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: CONST_KW@30..37 "const" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@37..40 "x6" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@40..42 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@42..43 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@43..44 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@44..48 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@48..49 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + TsInterfaceDeclaration { + interface_token: INTERFACE_KW@49..60 "interface" [Newline("\n")] [Whitespace(" ")], + id: TsIdentifierBinding { + name_token: IDENT@60..62 "I" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + l_curly_token: L_CURLY@62..63 "{" [] [], + members: TsTypeMemberList [], + r_curly_token: R_CURLY@63..64 "}" [] [], + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: LET_KW@64..69 "let" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@69..73 "x10" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@73..75 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@75..76 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@76..77 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@77..81 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@81..82 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsStaticMemberExpression { + object: JsThisExpression { + this_token: THIS_KW@82..87 "this" [Newline("\n")] [], + }, + operator_token: DOT@87..88 "." [] [], + member: JsName { + value_token: IDENT@88..91 "bar" [] [], + }, + }, + optional_chain_token: missing (optional), + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@91..92 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@92..93 ")" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: LET_KW@93..98 "let" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@98..102 "x11" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@102..104 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@104..105 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@105..106 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@106..110 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@110..111 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsFunctionDeclaration { + async_token: missing (optional), + function_token: FUNCTION_KW@111..121 "function" [Newline("\n")] [Whitespace(" ")], + star_token: missing (optional), + id: JsIdentifierBinding { + name_token: IDENT@121..124 "bar" [] [], + }, + type_parameters: missing (optional), + parameters: JsParameters { + l_paren_token: L_PAREN@124..125 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@125..127 ")" [] [Whitespace(" ")], + }, + return_type_annotation: missing (optional), + body: JsFunctionBody { + l_curly_token: L_CURLY@127..128 "{" [] [], + directives: JsDirectiveList [], + statements: JsStatementList [], + r_curly_token: R_CURLY@128..129 "}" [] [], + }, + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: LET_KW@129..134 "let" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@134..138 "x12" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@138..140 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@140..141 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@141..142 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@142..146 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@146..147 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@147..154 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@154..156 "C" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@156..157 "{" [] [], + members: JsClassMemberList [], + r_curly_token: R_CURLY@157..158 "}" [] [], + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: LET_KW@158..163 "let" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@163..167 "x13" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@167..169 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@169..170 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@170..171 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@171..175 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@175..176 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@176..180 "bar" [Newline("\n")] [], + }, + }, + optional_chain_token: missing (optional), + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@180..181 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@181..182 ")" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: LET_KW@182..187 "let" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@187..191 "x14" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@191..193 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@193..194 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@194..195 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@195..199 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@199..200 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsUnaryExpression { + operator_token: VOID_KW@200..206 "void" [Newline("\n")] [Whitespace(" ")], + argument: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@206..209 "bar" [] [], + }, + }, + optional_chain_token: missing (optional), + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@209..210 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@210..211 ")" [] [], + }, + }, + }, + semicolon_token: missing (optional), + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@211..218 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@218..221 "C1" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@221..222 "{" [] [], + members: JsClassMemberList [ + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + JsStaticModifier { + modifier_token: STATIC_KW@222..234 "static" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@234..245 "specialFoo" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@245..247 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@247..248 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@248..249 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsStringType { + string_token: STRING_KW@249..255 "string" [] [], + }, + ], + r_angle_token: R_ANGLE@255..256 ">" [] [], + }, + }, + }, + semicolon_token: missing (optional), + }, + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + JsStaticModifier { + modifier_token: STATIC_KW@256..268 "static" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@268..272 "bar" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@272..274 "=" [] [Whitespace(" ")], + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@274..277 "123" [] [], + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@277..279 "}" [Newline("\n")] [], + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@279..286 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@286..289 "C2" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@289..290 "{" [] [], + members: JsClassMemberList [ + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PUBLIC_KW@290..302 "public" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@302..313 "specialFoo" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@313..315 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@315..316 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@316..317 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsStringType { + string_token: STRING_KW@317..323 "string" [] [], + }, + ], + r_angle_token: R_ANGLE@323..324 ">" [] [], + }, + }, + }, + semicolon_token: missing (optional), + }, + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PUBLIC_KW@324..336 "public" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@336..340 "bar" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@340..342 "=" [] [Whitespace(" ")], + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@342..345 "123" [] [], + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@345..347 "}" [Newline("\n")] [], + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@347..354 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@354..357 "C3" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@357..358 "{" [] [], + members: JsClassMemberList [ + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PRIVATE_KW@358..371 "private" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@371..382 "specialFoo" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@382..384 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@384..385 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@385..386 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsStringType { + string_token: STRING_KW@386..392 "string" [] [], + }, + ], + r_angle_token: R_ANGLE@392..393 ">" [] [], + }, + }, + }, + semicolon_token: missing (optional), + }, + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PRIVATE_KW@393..406 "private" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@406..410 "bar" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@410..412 "=" [] [Whitespace(" ")], + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@412..415 "123" [] [], + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@415..417 "}" [Newline("\n")] [], + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@417..424 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@424..427 "C4" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@427..428 "{" [] [], + members: JsClassMemberList [ + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PROTECTED_KW@428..443 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@443..454 "specialFoo" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@454..456 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@456..457 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@457..458 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsStringType { + string_token: STRING_KW@458..464 "string" [] [], + }, + ], + r_angle_token: R_ANGLE@464..465 ">" [] [], + }, + }, + }, + semicolon_token: missing (optional), + }, + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PROTECTED_KW@465..480 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@480..484 "bar" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@484..486 "=" [] [Whitespace(" ")], + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@486..489 "123" [] [], + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@489..491 "}" [Newline("\n")] [], + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@491..498 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@498..501 "C5" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@501..502 "{" [] [], + members: JsClassMemberList [ + JsPropertyClassMember { + modifiers: JsPropertyModifierList [ + TsAccessibilityModifier { + modifier_token: PROTECTED_KW@502..517 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + name: JsLiteralMemberName { + value: IDENT@517..528 "specialFoo" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@528..530 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@530..531 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@531..532 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsStringType { + string_token: STRING_KW@532..538 "string" [] [], + }, + ], + r_angle_token: R_ANGLE@538..539 ">" [] [], + }, + }, + }, + semicolon_token: missing (optional), + }, + JsPropertyClassMember { + modifiers: JsPropertyModifierList [], + name: JsPrivateClassMemberName { + hash_token: HASH@539..545 "#" [Newline("\n"), Whitespace(" ")] [], + id_token: IDENT@545..549 "bar" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@549..551 "=" [] [Whitespace(" ")], + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@551..554 "123" [] [], + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@554..556 "}" [Newline("\n")] [], + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: CONST_KW@556..563 "const" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@563..567 "Bar" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@567..569 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@569..572 "Foo" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@572..573 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsStringType { + string_token: STRING_KW@573..579 "string" [] [], + }, + ], + r_angle_token: R_ANGLE@579..580 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: CONST_KW@580..587 "const" [Newline("\n")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@587..591 "Baz" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@591..593 "=" [] [Whitespace(" ")], + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@593..596 "123" [] [], + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + ], + eof_token: EOF@596..597 "" [Newline("\n")] [], +} + +0: JS_MODULE@0..597 + 0: (empty) + 1: JS_DIRECTIVE_LIST@0..0 + 2: JS_MODULE_ITEM_LIST@0..596 + 0: JS_VARIABLE_STATEMENT@0..18 + 0: JS_VARIABLE_DECLARATION@0..18 + 0: CONST_KW@0..6 "const" [] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@6..18 + 0: JS_VARIABLE_DECLARATOR@6..18 + 0: JS_IDENTIFIER_BINDING@6..9 + 0: IDENT@6..9 "x5" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@9..18 + 0: EQ@9..11 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@11..18 + 0: JS_IDENTIFIER_EXPRESSION@11..12 + 0: JS_REFERENCE_IDENTIFIER@11..12 + 0: IDENT@11..12 "f" [] [] + 1: TS_TYPE_ARGUMENTS@12..18 + 0: L_ANGLE@12..13 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@13..17 + 0: TS_BOOLEAN_LITERAL_TYPE@13..17 + 0: TRUE_KW@13..17 "true" [] [] + 2: R_ANGLE@17..18 ">" [] [] + 1: (empty) + 1: JS_VARIABLE_STATEMENT@18..30 + 0: JS_VARIABLE_DECLARATION@18..29 + 0: LET_KW@18..23 "let" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@23..29 + 0: JS_VARIABLE_DECLARATOR@23..29 + 0: JS_IDENTIFIER_BINDING@23..26 + 0: IDENT@23..26 "yy" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@26..29 + 0: EQ@26..28 "=" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@28..29 + 0: JS_NUMBER_LITERAL@28..29 "0" [] [] + 1: SEMICOLON@29..30 ";" [] [] + 2: JS_VARIABLE_STATEMENT@30..49 + 0: JS_VARIABLE_DECLARATION@30..49 + 0: CONST_KW@30..37 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@37..49 + 0: JS_VARIABLE_DECLARATOR@37..49 + 0: JS_IDENTIFIER_BINDING@37..40 + 0: IDENT@37..40 "x6" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@40..49 + 0: EQ@40..42 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@42..49 + 0: JS_IDENTIFIER_EXPRESSION@42..43 + 0: JS_REFERENCE_IDENTIFIER@42..43 + 0: IDENT@42..43 "f" [] [] + 1: TS_TYPE_ARGUMENTS@43..49 + 0: L_ANGLE@43..44 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@44..48 + 0: TS_BOOLEAN_LITERAL_TYPE@44..48 + 0: TRUE_KW@44..48 "true" [] [] + 2: R_ANGLE@48..49 ">" [] [] + 1: (empty) + 3: TS_INTERFACE_DECLARATION@49..64 + 0: INTERFACE_KW@49..60 "interface" [Newline("\n")] [Whitespace(" ")] + 1: TS_IDENTIFIER_BINDING@60..62 + 0: IDENT@60..62 "I" [] [Whitespace(" ")] + 2: (empty) + 3: (empty) + 4: L_CURLY@62..63 "{" [] [] + 5: TS_TYPE_MEMBER_LIST@63..63 + 6: R_CURLY@63..64 "}" [] [] + 4: JS_VARIABLE_STATEMENT@64..82 + 0: JS_VARIABLE_DECLARATION@64..82 + 0: LET_KW@64..69 "let" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@69..82 + 0: JS_VARIABLE_DECLARATOR@69..82 + 0: JS_IDENTIFIER_BINDING@69..73 + 0: IDENT@69..73 "x10" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@73..82 + 0: EQ@73..75 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@75..82 + 0: JS_IDENTIFIER_EXPRESSION@75..76 + 0: JS_REFERENCE_IDENTIFIER@75..76 + 0: IDENT@75..76 "f" [] [] + 1: TS_TYPE_ARGUMENTS@76..82 + 0: L_ANGLE@76..77 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@77..81 + 0: TS_BOOLEAN_LITERAL_TYPE@77..81 + 0: TRUE_KW@77..81 "true" [] [] + 2: R_ANGLE@81..82 ">" [] [] + 1: (empty) + 5: JS_EXPRESSION_STATEMENT@82..93 + 0: JS_CALL_EXPRESSION@82..93 + 0: JS_STATIC_MEMBER_EXPRESSION@82..91 + 0: JS_THIS_EXPRESSION@82..87 + 0: THIS_KW@82..87 "this" [Newline("\n")] [] + 1: DOT@87..88 "." [] [] + 2: JS_NAME@88..91 + 0: IDENT@88..91 "bar" [] [] + 1: (empty) + 2: (empty) + 3: JS_CALL_ARGUMENTS@91..93 + 0: L_PAREN@91..92 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@92..92 + 2: R_PAREN@92..93 ")" [] [] + 1: (empty) + 6: JS_VARIABLE_STATEMENT@93..111 + 0: JS_VARIABLE_DECLARATION@93..111 + 0: LET_KW@93..98 "let" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@98..111 + 0: JS_VARIABLE_DECLARATOR@98..111 + 0: JS_IDENTIFIER_BINDING@98..102 + 0: IDENT@98..102 "x11" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@102..111 + 0: EQ@102..104 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@104..111 + 0: JS_IDENTIFIER_EXPRESSION@104..105 + 0: JS_REFERENCE_IDENTIFIER@104..105 + 0: IDENT@104..105 "f" [] [] + 1: TS_TYPE_ARGUMENTS@105..111 + 0: L_ANGLE@105..106 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@106..110 + 0: TS_BOOLEAN_LITERAL_TYPE@106..110 + 0: TRUE_KW@106..110 "true" [] [] + 2: R_ANGLE@110..111 ">" [] [] + 1: (empty) + 7: JS_FUNCTION_DECLARATION@111..129 + 0: (empty) + 1: FUNCTION_KW@111..121 "function" [Newline("\n")] [Whitespace(" ")] + 2: (empty) + 3: JS_IDENTIFIER_BINDING@121..124 + 0: IDENT@121..124 "bar" [] [] + 4: (empty) + 5: JS_PARAMETERS@124..127 + 0: L_PAREN@124..125 "(" [] [] + 1: JS_PARAMETER_LIST@125..125 + 2: R_PAREN@125..127 ")" [] [Whitespace(" ")] + 6: (empty) + 7: JS_FUNCTION_BODY@127..129 + 0: L_CURLY@127..128 "{" [] [] + 1: JS_DIRECTIVE_LIST@128..128 + 2: JS_STATEMENT_LIST@128..128 + 3: R_CURLY@128..129 "}" [] [] + 8: JS_VARIABLE_STATEMENT@129..147 + 0: JS_VARIABLE_DECLARATION@129..147 + 0: LET_KW@129..134 "let" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@134..147 + 0: JS_VARIABLE_DECLARATOR@134..147 + 0: JS_IDENTIFIER_BINDING@134..138 + 0: IDENT@134..138 "x12" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@138..147 + 0: EQ@138..140 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@140..147 + 0: JS_IDENTIFIER_EXPRESSION@140..141 + 0: JS_REFERENCE_IDENTIFIER@140..141 + 0: IDENT@140..141 "f" [] [] + 1: TS_TYPE_ARGUMENTS@141..147 + 0: L_ANGLE@141..142 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@142..146 + 0: TS_BOOLEAN_LITERAL_TYPE@142..146 + 0: TRUE_KW@142..146 "true" [] [] + 2: R_ANGLE@146..147 ">" [] [] + 1: (empty) + 9: JS_CLASS_DECLARATION@147..158 + 0: (empty) + 1: CLASS_KW@147..154 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@154..156 + 0: IDENT@154..156 "C" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@156..157 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@157..157 + 8: R_CURLY@157..158 "}" [] [] + 10: JS_VARIABLE_STATEMENT@158..176 + 0: JS_VARIABLE_DECLARATION@158..176 + 0: LET_KW@158..163 "let" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@163..176 + 0: JS_VARIABLE_DECLARATOR@163..176 + 0: JS_IDENTIFIER_BINDING@163..167 + 0: IDENT@163..167 "x13" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@167..176 + 0: EQ@167..169 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@169..176 + 0: JS_IDENTIFIER_EXPRESSION@169..170 + 0: JS_REFERENCE_IDENTIFIER@169..170 + 0: IDENT@169..170 "f" [] [] + 1: TS_TYPE_ARGUMENTS@170..176 + 0: L_ANGLE@170..171 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@171..175 + 0: TS_BOOLEAN_LITERAL_TYPE@171..175 + 0: TRUE_KW@171..175 "true" [] [] + 2: R_ANGLE@175..176 ">" [] [] + 1: (empty) + 11: JS_EXPRESSION_STATEMENT@176..182 + 0: JS_CALL_EXPRESSION@176..182 + 0: JS_IDENTIFIER_EXPRESSION@176..180 + 0: JS_REFERENCE_IDENTIFIER@176..180 + 0: IDENT@176..180 "bar" [Newline("\n")] [] + 1: (empty) + 2: (empty) + 3: JS_CALL_ARGUMENTS@180..182 + 0: L_PAREN@180..181 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@181..181 + 2: R_PAREN@181..182 ")" [] [] + 1: (empty) + 12: JS_VARIABLE_STATEMENT@182..200 + 0: JS_VARIABLE_DECLARATION@182..200 + 0: LET_KW@182..187 "let" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@187..200 + 0: JS_VARIABLE_DECLARATOR@187..200 + 0: JS_IDENTIFIER_BINDING@187..191 + 0: IDENT@187..191 "x14" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@191..200 + 0: EQ@191..193 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@193..200 + 0: JS_IDENTIFIER_EXPRESSION@193..194 + 0: JS_REFERENCE_IDENTIFIER@193..194 + 0: IDENT@193..194 "f" [] [] + 1: TS_TYPE_ARGUMENTS@194..200 + 0: L_ANGLE@194..195 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@195..199 + 0: TS_BOOLEAN_LITERAL_TYPE@195..199 + 0: TRUE_KW@195..199 "true" [] [] + 2: R_ANGLE@199..200 ">" [] [] + 1: (empty) + 13: JS_EXPRESSION_STATEMENT@200..211 + 0: JS_UNARY_EXPRESSION@200..211 + 0: VOID_KW@200..206 "void" [Newline("\n")] [Whitespace(" ")] + 1: JS_CALL_EXPRESSION@206..211 + 0: JS_IDENTIFIER_EXPRESSION@206..209 + 0: JS_REFERENCE_IDENTIFIER@206..209 + 0: IDENT@206..209 "bar" [] [] + 1: (empty) + 2: (empty) + 3: JS_CALL_ARGUMENTS@209..211 + 0: L_PAREN@209..210 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@210..210 + 2: R_PAREN@210..211 ")" [] [] + 1: (empty) + 14: JS_CLASS_DECLARATION@211..279 + 0: (empty) + 1: CLASS_KW@211..218 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@218..221 + 0: IDENT@218..221 "C1" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@221..222 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@222..277 + 0: JS_PROPERTY_CLASS_MEMBER@222..256 + 0: JS_PROPERTY_MODIFIER_LIST@222..234 + 0: JS_STATIC_MODIFIER@222..234 + 0: STATIC_KW@222..234 "static" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@234..245 + 0: IDENT@234..245 "specialFoo" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@245..256 + 0: EQ@245..247 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@247..256 + 0: JS_IDENTIFIER_EXPRESSION@247..248 + 0: JS_REFERENCE_IDENTIFIER@247..248 + 0: IDENT@247..248 "f" [] [] + 1: TS_TYPE_ARGUMENTS@248..256 + 0: L_ANGLE@248..249 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@249..255 + 0: TS_STRING_TYPE@249..255 + 0: STRING_KW@249..255 "string" [] [] + 2: R_ANGLE@255..256 ">" [] [] + 4: (empty) + 1: JS_PROPERTY_CLASS_MEMBER@256..277 + 0: JS_PROPERTY_MODIFIER_LIST@256..268 + 0: JS_STATIC_MODIFIER@256..268 + 0: STATIC_KW@256..268 "static" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@268..272 + 0: IDENT@268..272 "bar" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@272..277 + 0: EQ@272..274 "=" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@274..277 + 0: JS_NUMBER_LITERAL@274..277 "123" [] [] + 4: (empty) + 8: R_CURLY@277..279 "}" [Newline("\n")] [] + 15: JS_CLASS_DECLARATION@279..347 + 0: (empty) + 1: CLASS_KW@279..286 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@286..289 + 0: IDENT@286..289 "C2" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@289..290 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@290..345 + 0: JS_PROPERTY_CLASS_MEMBER@290..324 + 0: JS_PROPERTY_MODIFIER_LIST@290..302 + 0: TS_ACCESSIBILITY_MODIFIER@290..302 + 0: PUBLIC_KW@290..302 "public" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@302..313 + 0: IDENT@302..313 "specialFoo" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@313..324 + 0: EQ@313..315 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@315..324 + 0: JS_IDENTIFIER_EXPRESSION@315..316 + 0: JS_REFERENCE_IDENTIFIER@315..316 + 0: IDENT@315..316 "f" [] [] + 1: TS_TYPE_ARGUMENTS@316..324 + 0: L_ANGLE@316..317 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@317..323 + 0: TS_STRING_TYPE@317..323 + 0: STRING_KW@317..323 "string" [] [] + 2: R_ANGLE@323..324 ">" [] [] + 4: (empty) + 1: JS_PROPERTY_CLASS_MEMBER@324..345 + 0: JS_PROPERTY_MODIFIER_LIST@324..336 + 0: TS_ACCESSIBILITY_MODIFIER@324..336 + 0: PUBLIC_KW@324..336 "public" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@336..340 + 0: IDENT@336..340 "bar" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@340..345 + 0: EQ@340..342 "=" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@342..345 + 0: JS_NUMBER_LITERAL@342..345 "123" [] [] + 4: (empty) + 8: R_CURLY@345..347 "}" [Newline("\n")] [] + 16: JS_CLASS_DECLARATION@347..417 + 0: (empty) + 1: CLASS_KW@347..354 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@354..357 + 0: IDENT@354..357 "C3" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@357..358 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@358..415 + 0: JS_PROPERTY_CLASS_MEMBER@358..393 + 0: JS_PROPERTY_MODIFIER_LIST@358..371 + 0: TS_ACCESSIBILITY_MODIFIER@358..371 + 0: PRIVATE_KW@358..371 "private" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@371..382 + 0: IDENT@371..382 "specialFoo" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@382..393 + 0: EQ@382..384 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@384..393 + 0: JS_IDENTIFIER_EXPRESSION@384..385 + 0: JS_REFERENCE_IDENTIFIER@384..385 + 0: IDENT@384..385 "f" [] [] + 1: TS_TYPE_ARGUMENTS@385..393 + 0: L_ANGLE@385..386 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@386..392 + 0: TS_STRING_TYPE@386..392 + 0: STRING_KW@386..392 "string" [] [] + 2: R_ANGLE@392..393 ">" [] [] + 4: (empty) + 1: JS_PROPERTY_CLASS_MEMBER@393..415 + 0: JS_PROPERTY_MODIFIER_LIST@393..406 + 0: TS_ACCESSIBILITY_MODIFIER@393..406 + 0: PRIVATE_KW@393..406 "private" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@406..410 + 0: IDENT@406..410 "bar" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@410..415 + 0: EQ@410..412 "=" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@412..415 + 0: JS_NUMBER_LITERAL@412..415 "123" [] [] + 4: (empty) + 8: R_CURLY@415..417 "}" [Newline("\n")] [] + 17: JS_CLASS_DECLARATION@417..491 + 0: (empty) + 1: CLASS_KW@417..424 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@424..427 + 0: IDENT@424..427 "C4" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@427..428 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@428..489 + 0: JS_PROPERTY_CLASS_MEMBER@428..465 + 0: JS_PROPERTY_MODIFIER_LIST@428..443 + 0: TS_ACCESSIBILITY_MODIFIER@428..443 + 0: PROTECTED_KW@428..443 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@443..454 + 0: IDENT@443..454 "specialFoo" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@454..465 + 0: EQ@454..456 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@456..465 + 0: JS_IDENTIFIER_EXPRESSION@456..457 + 0: JS_REFERENCE_IDENTIFIER@456..457 + 0: IDENT@456..457 "f" [] [] + 1: TS_TYPE_ARGUMENTS@457..465 + 0: L_ANGLE@457..458 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@458..464 + 0: TS_STRING_TYPE@458..464 + 0: STRING_KW@458..464 "string" [] [] + 2: R_ANGLE@464..465 ">" [] [] + 4: (empty) + 1: JS_PROPERTY_CLASS_MEMBER@465..489 + 0: JS_PROPERTY_MODIFIER_LIST@465..480 + 0: TS_ACCESSIBILITY_MODIFIER@465..480 + 0: PROTECTED_KW@465..480 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@480..484 + 0: IDENT@480..484 "bar" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@484..489 + 0: EQ@484..486 "=" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@486..489 + 0: JS_NUMBER_LITERAL@486..489 "123" [] [] + 4: (empty) + 8: R_CURLY@489..491 "}" [Newline("\n")] [] + 18: JS_CLASS_DECLARATION@491..556 + 0: (empty) + 1: CLASS_KW@491..498 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@498..501 + 0: IDENT@498..501 "C5" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@501..502 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@502..554 + 0: JS_PROPERTY_CLASS_MEMBER@502..539 + 0: JS_PROPERTY_MODIFIER_LIST@502..517 + 0: TS_ACCESSIBILITY_MODIFIER@502..517 + 0: PROTECTED_KW@502..517 "protected" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_LITERAL_MEMBER_NAME@517..528 + 0: IDENT@517..528 "specialFoo" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@528..539 + 0: EQ@528..530 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@530..539 + 0: JS_IDENTIFIER_EXPRESSION@530..531 + 0: JS_REFERENCE_IDENTIFIER@530..531 + 0: IDENT@530..531 "f" [] [] + 1: TS_TYPE_ARGUMENTS@531..539 + 0: L_ANGLE@531..532 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@532..538 + 0: TS_STRING_TYPE@532..538 + 0: STRING_KW@532..538 "string" [] [] + 2: R_ANGLE@538..539 ">" [] [] + 4: (empty) + 1: JS_PROPERTY_CLASS_MEMBER@539..554 + 0: JS_PROPERTY_MODIFIER_LIST@539..539 + 1: JS_PRIVATE_CLASS_MEMBER_NAME@539..549 + 0: HASH@539..545 "#" [Newline("\n"), Whitespace(" ")] [] + 1: IDENT@545..549 "bar" [] [Whitespace(" ")] + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@549..554 + 0: EQ@549..551 "=" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@551..554 + 0: JS_NUMBER_LITERAL@551..554 "123" [] [] + 4: (empty) + 8: R_CURLY@554..556 "}" [Newline("\n")] [] + 19: JS_VARIABLE_STATEMENT@556..580 + 0: JS_VARIABLE_DECLARATION@556..580 + 0: CONST_KW@556..563 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@563..580 + 0: JS_VARIABLE_DECLARATOR@563..580 + 0: JS_IDENTIFIER_BINDING@563..567 + 0: IDENT@563..567 "Bar" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@567..580 + 0: EQ@567..569 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@569..580 + 0: JS_IDENTIFIER_EXPRESSION@569..572 + 0: JS_REFERENCE_IDENTIFIER@569..572 + 0: IDENT@569..572 "Foo" [] [] + 1: TS_TYPE_ARGUMENTS@572..580 + 0: L_ANGLE@572..573 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@573..579 + 0: TS_STRING_TYPE@573..579 + 0: STRING_KW@573..579 "string" [] [] + 2: R_ANGLE@579..580 ">" [] [] + 1: (empty) + 20: JS_VARIABLE_STATEMENT@580..596 + 0: JS_VARIABLE_DECLARATION@580..596 + 0: CONST_KW@580..587 "const" [Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@587..596 + 0: JS_VARIABLE_DECLARATOR@587..596 + 0: JS_IDENTIFIER_BINDING@587..591 + 0: IDENT@587..591 "Baz" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@591..596 + 0: EQ@591..593 "=" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@593..596 + 0: JS_NUMBER_LITERAL@593..596 "123" [] [] + 1: (empty) + 3: EOF@596..597 "" [Newline("\n")] [] diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.ts b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.ts new file mode 100644 index 00000000000..210307e1a9d --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.ts @@ -0,0 +1,36 @@ +const x5 = f +let yy = 0; +const x6 = f +interface I {} +let x10 = f +this.bar() +let x11 = f +function bar() {} +let x12 = f +class C {} +let x13 = f +bar() +let x14 = f +void bar() +class C1 { + static specialFoo = f + static bar = 123 +} +class C2 { + public specialFoo = f + public bar = 123 +} +class C3 { + private specialFoo = f + private bar = 123 +} +class C4 { + protected specialFoo = f + protected bar = 123 +} +class C5 { + protected specialFoo = f + #bar = 123 +} +const Bar = Foo +const Baz = 123 diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.rast b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.rast new file mode 100644 index 00000000000..cf669b6ca79 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.rast @@ -0,0 +1,2629 @@ +JsModule { + interpreter_token: missing (optional), + directives: JsDirectiveList [], + items: JsModuleItemList [ + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@0..6 "class" [] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@6..8 "A" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@8..9 "{" [] [], + members: JsClassMemberList [ + JsConstructorClassMember { + modifiers: JsConstructorModifierList [], + name: JsLiteralMemberName { + value: IDENT@9..22 "constructor" [Newline("\n"), Whitespace(" ")] [], + }, + parameters: JsConstructorParameters { + l_paren_token: L_PAREN@22..23 "(" [] [], + parameters: JsConstructorParameterList [], + r_paren_token: R_PAREN@23..25 ")" [] [Whitespace(" ")], + }, + body: JsFunctionBody { + l_curly_token: L_CURLY@25..26 "{" [] [], + directives: JsDirectiveList [], + statements: JsStatementList [ + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@26..31 "f" [Newline("\n"), Whitespace(" ")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@31..32 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@32..33 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@33..34 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsSuperExpression { + super_token: SUPER_KW@34..45 "super" [Newline("\n"), Whitespace(" ")] [], + }, + optional_chain_token: missing (optional), + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@45..46 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@46..47 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@47..48 ";" [] [], + }, + ], + r_curly_token: R_CURLY@48..51 "}" [Newline("\n"), Whitespace(" ")] [], + }, + }, + ], + r_curly_token: R_CURLY@51..53 "}" [Newline("\n")] [], + }, + JsFunctionDeclaration { + async_token: missing (optional), + function_token: FUNCTION_KW@53..63 "function" [Newline("\n")] [Whitespace(" ")], + star_token: STAR@63..64 "*" [] [], + id: JsIdentifierBinding { + name_token: IDENT@64..65 "f" [] [], + }, + type_parameters: missing (optional), + parameters: JsParameters { + l_paren_token: L_PAREN@65..66 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@66..68 ")" [] [Whitespace(" ")], + }, + return_type_annotation: missing (optional), + body: JsFunctionBody { + l_curly_token: L_CURLY@68..69 "{" [] [], + directives: JsDirectiveList [], + statements: JsStatementList [ + JsVariableStatement { + declaration: JsVariableDeclaration { + kind: CONST_KW@69..80 "const" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + declarators: JsVariableDeclaratorList [ + JsVariableDeclarator { + id: JsIdentifierBinding { + name_token: IDENT@80..82 "f" [] [Whitespace(" ")], + }, + variable_annotation: missing (optional), + initializer: JsInitializerClause { + eq_token: EQ@82..84 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@84..85 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@85..86 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@86..87 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@87..88 ">" [] [], + }, + }, + }, + }, + ], + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsYieldExpression { + yield_token: YIELD_KW@88..98 "yield" [Newline("\n"), Whitespace(" ")] [], + argument: missing (optional), + }, + semicolon_token: SEMICOLON@98..99 ";" [] [], + }, + ], + r_curly_token: R_CURLY@99..101 "}" [Newline("\n")] [], + }, + }, + JsExpressionStatement { + expression: JsLogicalExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@101..103 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@103..104 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@104..105 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@105..106 ">" [] [], + }, + }, + operator_token: QUESTION2@106..110 "??" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@110..111 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@111..112 ";" [] [], + }, + JsExpressionStatement { + expression: JsLogicalExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@112..114 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@114..115 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@115..116 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@116..117 ">" [] [], + }, + }, + operator_token: PIPE2@117..121 "||" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@121..122 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@122..123 ";" [] [], + }, + JsExpressionStatement { + expression: JsLogicalExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@123..125 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@125..126 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@126..127 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@127..128 ">" [] [], + }, + }, + operator_token: AMP2@128..132 "&&" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@132..133 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@133..134 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@134..136 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@136..137 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@137..138 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@138..139 ">" [] [], + }, + }, + operator_token: PIPE@139..142 "|" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@142..143 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@143..144 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@144..146 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@146..147 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@147..148 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@148..149 ">" [] [], + }, + }, + operator_token: CARET@149..152 "^" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@152..153 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@153..154 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@154..156 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@156..157 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@157..158 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@158..159 ">" [] [], + }, + }, + operator_token: AMP@159..162 "&" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@162..163 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@163..164 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@164..166 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@166..167 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@167..168 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@168..169 ">" [] [], + }, + }, + operator_token: EQ2@169..173 "==" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@173..174 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@174..175 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@175..176 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@176..177 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@177..178 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@178..180 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@180..181 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@181..182 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@182..183 ">" [] [], + }, + }, + operator_token: LTEQ@183..187 "<=" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@187..188 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@188..189 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@189..190 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@190..191 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@191..192 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@192..194 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@194..195 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@195..196 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@196..197 ">" [] [], + }, + }, + operator_token: NEQ@197..201 "!=" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@201..202 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@202..203 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@203..204 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@204..205 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@205..206 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@206..208 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@208..209 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@209..210 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@210..211 ">" [] [], + }, + }, + operator_token: EQ3@211..216 "===" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@216..217 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@217..218 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@218..219 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@219..220 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@220..221 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@221..223 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@223..224 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@224..225 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@225..226 ">" [] [], + }, + }, + operator_token: NEQ2@226..231 "!==" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@231..232 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@232..233 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@233..234 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@234..235 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@235..236 ";" [] [], + }, + JsExpressionStatement { + expression: JsInstanceofExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@236..238 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@238..239 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@239..240 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@240..241 ">" [] [], + }, + }, + instanceof_token: INSTANCEOF_KW@241..253 "instanceof" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@253..254 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@254..255 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@255..256 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@256..257 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@257..258 ";" [] [], + }, + JsExpressionStatement { + expression: JsInExpression { + property: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@258..260 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@260..261 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@261..262 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@262..263 ">" [] [], + }, + }, + in_token: IN_KW@263..267 "in" [Newline("\n")] [Whitespace(" ")], + object: JsObjectExpression { + l_curly_token: L_CURLY@267..268 "{" [] [], + members: JsObjectMemberList [], + r_curly_token: R_CURLY@268..269 "}" [] [], + }, + }, + semicolon_token: SEMICOLON@269..270 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@270..272 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@272..273 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@273..274 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@274..275 ">" [] [], + }, + }, + operator_token: STAR@275..278 "*" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@278..279 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@279..280 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@280..281 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@281..282 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@282..283 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@283..285 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@285..286 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@286..287 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@287..288 ">" [] [], + }, + }, + operator_token: SLASH@288..291 "/" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@291..292 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@292..293 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@293..294 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@294..295 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@295..296 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@296..298 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@298..299 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@299..300 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@300..301 ">" [] [], + }, + }, + operator_token: PERCENT@301..304 "%" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@304..305 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@305..306 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@306..307 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@307..308 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@308..309 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@309..311 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@311..312 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@312..313 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@313..314 ">" [] [], + }, + }, + operator_token: STAR2@314..318 "**" [Newline("\n")] [Whitespace(" ")], + right: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@318..319 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@319..320 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@320..321 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@321..322 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@322..323 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@323..326 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@326..327 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@327..328 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@328..329 ">" [] [], + right: JsUnaryExpression { + operator_token: PLUS@329..331 "+" [Newline("\n")] [], + argument: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@331..332 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@332..333 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@333..334 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@334..335 ">" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@335..336 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@336..339 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@339..340 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@340..341 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@341..342 ">" [] [], + right: JsUnaryExpression { + operator_token: MINUS@342..344 "-" [Newline("\n")] [], + argument: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@344..345 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@345..346 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@346..347 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@347..348 ">" [] [], + }, + }, + }, + }, + semicolon_token: SEMICOLON@348..349 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@349..352 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@352..353 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@353..354 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@354..355 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsThisExpression { + this_token: THIS_KW@355..360 "this" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@360..361 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@361..364 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@364..365 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@365..366 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@366..367 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsNullLiteralExpression { + value_token: NULL_KW@367..372 "null" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@372..373 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@373..376 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@376..377 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@377..378 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@378..379 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsBooleanLiteralExpression { + value_token: TRUE_KW@379..384 "true" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@384..385 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@385..388 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@388..389 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@389..390 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@390..391 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsBooleanLiteralExpression { + value_token: FALSE_KW@391..397 "false" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@397..398 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@398..401 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@401..402 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@402..403 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@403..404 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@404..406 "1" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@406..407 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@407..410 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@410..411 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@411..412 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@412..413 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsBigIntLiteralExpression { + value_token: JS_BIG_INT_LITERAL@413..418 "123n" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@418..419 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@419..422 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@422..423 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@423..424 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@424..425 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsBlockStatement { + l_curly_token: L_CURLY@425..427 "{" [Newline("\n")] [], + statements: JsStatementList [], + r_curly_token: R_CURLY@427..428 "}" [] [], + }, + JsEmptyStatement { + semicolon_token: SEMICOLON@428..429 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@429..432 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@432..433 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@433..434 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@434..435 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsFunctionDeclaration { + async_token: missing (optional), + function_token: FUNCTION_KW@435..445 "function" [Newline("\n")] [Whitespace(" ")], + star_token: missing (optional), + id: JsIdentifierBinding { + name_token: IDENT@445..449 "test" [] [], + }, + type_parameters: missing (optional), + parameters: JsParameters { + l_paren_token: L_PAREN@449..450 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@450..452 ")" [] [Whitespace(" ")], + }, + return_type_annotation: missing (optional), + body: JsFunctionBody { + l_curly_token: L_CURLY@452..453 "{" [] [], + directives: JsDirectiveList [], + statements: JsStatementList [], + r_curly_token: R_CURLY@453..454 "}" [] [], + }, + }, + JsEmptyStatement { + semicolon_token: SEMICOLON@454..455 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@455..458 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@458..459 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@459..460 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@460..461 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsClassDeclaration { + abstract_token: missing (optional), + class_token: CLASS_KW@461..468 "class" [Newline("\n")] [Whitespace(" ")], + id: JsIdentifierBinding { + name_token: IDENT@468..470 "A" [] [Whitespace(" ")], + }, + type_parameters: missing (optional), + extends_clause: missing (optional), + implements_clause: missing (optional), + l_curly_token: L_CURLY@470..471 "{" [] [], + members: JsClassMemberList [], + r_curly_token: R_CURLY@471..472 "}" [] [], + }, + JsEmptyStatement { + semicolon_token: SEMICOLON@472..473 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@473..476 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@476..477 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@477..478 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@478..479 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsNewExpression { + new_token: NEW_KW@479..484 "new" [Newline("\n")] [Whitespace(" ")], + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@484..485 "A" [] [], + }, + }, + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@485..486 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@486..487 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@487..488 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@488..490 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@490..491 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@491..492 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@492..493 ">" [] [], + }, + }, + operator_token: SLASH@493..496 "/" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@496..497 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@497..498 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@498..501 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@501..502 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@502..503 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@503..504 ">" [] [], + right: JsUnaryExpression { + operator_token: PLUS@504..506 "+" [Newline("\n")] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@506..507 "1" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@507..508 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: JsBinaryExpression { + left: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@508..511 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + operator_token: L_ANGLE@511..512 "<" [] [], + right: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@512..513 "T" [] [], + }, + }, + }, + operator_token: R_ANGLE@513..514 ">" [] [], + right: JsUnaryExpression { + operator_token: MINUS@514..516 "-" [Newline("\n")] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@516..517 "1" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@517..518 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@518..521 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@521..522 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@522..523 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@523..524 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsUnaryExpression { + operator_token: TILDE@524..526 "~" [Newline("\n")] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@526..527 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@527..528 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@528..531 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@531..532 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@532..533 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@533..534 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsUnaryExpression { + operator_token: BANG@534..536 "!" [Newline("\n")] [], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@536..537 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@537..538 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@538..541 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@541..542 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@542..543 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@543..544 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@544..559 "someIdentifier" [Newline("\n")] [], + }, + }, + semicolon_token: SEMICOLON@559..560 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@560..563 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@563..564 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@564..565 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@565..566 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsUnaryExpression { + operator_token: DELETE_KW@566..574 "delete" [Newline("\n")] [Whitespace(" ")], + argument: JsComputedMemberExpression { + object: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@574..575 "a" [] [], + }, + }, + optional_chain_token: missing (optional), + l_brack_token: L_BRACK@575..576 "[" [] [], + member: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@576..581 "field" [] [], + }, + }, + r_brack_token: R_BRACK@581..582 "]" [] [], + }, + }, + semicolon_token: SEMICOLON@582..583 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@583..586 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@586..587 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@587..588 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@588..589 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsUnaryExpression { + operator_token: TYPEOF_KW@589..597 "typeof" [Newline("\n")] [Whitespace(" ")], + argument: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@597..604 "MyClass" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@604..605 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@605..608 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@608..609 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@609..610 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@610..611 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsUnaryExpression { + operator_token: VOID_KW@611..617 "void" [Newline("\n")] [Whitespace(" ")], + argument: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@617..618 "a" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@618..619 ";" [] [], + }, + JsExpressionStatement { + expression: JsBinaryExpression { + left: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@619..621 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@621..622 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@622..623 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@623..624 ">" [] [], + }, + }, + operator_token: LTEQ@624..628 "<=" [Newline("\n")] [Whitespace(" ")], + right: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@628..629 "1" [] [], + }, + }, + semicolon_token: SEMICOLON@629..630 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@630..633 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + optional_chain_token: missing (optional), + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@633..634 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@634..635 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@635..636 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@636..638 "(" [Newline("\n")] [], + args: JsCallArgumentList [ + JsAwaitExpression { + await_token: AWAIT_KW@638..644 "await" [] [Whitespace(" ")], + argument: JsNumberLiteralExpression { + value_token: JS_NUMBER_LITERAL@644..645 "1" [] [], + }, + }, + ], + r_paren_token: R_PAREN@645..646 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@646..647 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@647..650 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@650..651 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@651..652 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@652..653 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsImportMetaExpression { + import_token: IMPORT_KW@653..660 "import" [Newline("\n")] [], + dot_token: DOT@660..661 "." [] [], + meta_token: META@661..665 "meta" [] [], + }, + semicolon_token: SEMICOLON@665..666 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@666..669 "f" [Newline("\n")] [Whitespace(" ")], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@669..670 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@670..671 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@671..672 ">" [] [], + }, + }, + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsImportCallExpression { + import_token: IMPORT_KW@672..679 "import" [Newline("\n")] [], + arguments: JsCallArguments { + l_paren_token: L_PAREN@679..680 "(" [] [], + args: JsCallArgumentList [ + JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@680..685 "\"123\"" [] [], + }, + ], + r_paren_token: R_PAREN@685..686 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@686..687 ";" [] [], + }, + ], + eof_token: EOF@687..688 "" [Newline("\n")] [], +} + +0: JS_MODULE@0..688 + 0: (empty) + 1: JS_DIRECTIVE_LIST@0..0 + 2: JS_MODULE_ITEM_LIST@0..687 + 0: JS_CLASS_DECLARATION@0..53 + 0: (empty) + 1: CLASS_KW@0..6 "class" [] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@6..8 + 0: IDENT@6..8 "A" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@8..9 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@9..51 + 0: JS_CONSTRUCTOR_CLASS_MEMBER@9..51 + 0: JS_CONSTRUCTOR_MODIFIER_LIST@9..9 + 1: JS_LITERAL_MEMBER_NAME@9..22 + 0: IDENT@9..22 "constructor" [Newline("\n"), Whitespace(" ")] [] + 2: JS_CONSTRUCTOR_PARAMETERS@22..25 + 0: L_PAREN@22..23 "(" [] [] + 1: JS_CONSTRUCTOR_PARAMETER_LIST@23..23 + 2: R_PAREN@23..25 ")" [] [Whitespace(" ")] + 3: JS_FUNCTION_BODY@25..51 + 0: L_CURLY@25..26 "{" [] [] + 1: JS_DIRECTIVE_LIST@26..26 + 2: JS_STATEMENT_LIST@26..48 + 0: JS_EXPRESSION_STATEMENT@26..34 + 0: TS_INSTANTIATION_EXPRESSION@26..34 + 0: JS_IDENTIFIER_EXPRESSION@26..31 + 0: JS_REFERENCE_IDENTIFIER@26..31 + 0: IDENT@26..31 "f" [Newline("\n"), Whitespace(" ")] [] + 1: TS_TYPE_ARGUMENTS@31..34 + 0: L_ANGLE@31..32 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@32..33 + 0: TS_REFERENCE_TYPE@32..33 + 0: JS_REFERENCE_IDENTIFIER@32..33 + 0: IDENT@32..33 "T" [] [] + 1: (empty) + 2: R_ANGLE@33..34 ">" [] [] + 1: (empty) + 1: JS_EXPRESSION_STATEMENT@34..48 + 0: JS_CALL_EXPRESSION@34..47 + 0: JS_SUPER_EXPRESSION@34..45 + 0: SUPER_KW@34..45 "super" [Newline("\n"), Whitespace(" ")] [] + 1: (empty) + 2: (empty) + 3: JS_CALL_ARGUMENTS@45..47 + 0: L_PAREN@45..46 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@46..46 + 2: R_PAREN@46..47 ")" [] [] + 1: SEMICOLON@47..48 ";" [] [] + 3: R_CURLY@48..51 "}" [Newline("\n"), Whitespace(" ")] [] + 8: R_CURLY@51..53 "}" [Newline("\n")] [] + 1: JS_FUNCTION_DECLARATION@53..101 + 0: (empty) + 1: FUNCTION_KW@53..63 "function" [Newline("\n")] [Whitespace(" ")] + 2: STAR@63..64 "*" [] [] + 3: JS_IDENTIFIER_BINDING@64..65 + 0: IDENT@64..65 "f" [] [] + 4: (empty) + 5: JS_PARAMETERS@65..68 + 0: L_PAREN@65..66 "(" [] [] + 1: JS_PARAMETER_LIST@66..66 + 2: R_PAREN@66..68 ")" [] [Whitespace(" ")] + 6: (empty) + 7: JS_FUNCTION_BODY@68..101 + 0: L_CURLY@68..69 "{" [] [] + 1: JS_DIRECTIVE_LIST@69..69 + 2: JS_STATEMENT_LIST@69..99 + 0: JS_VARIABLE_STATEMENT@69..88 + 0: JS_VARIABLE_DECLARATION@69..88 + 0: CONST_KW@69..80 "const" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@80..88 + 0: JS_VARIABLE_DECLARATOR@80..88 + 0: JS_IDENTIFIER_BINDING@80..82 + 0: IDENT@80..82 "f" [] [Whitespace(" ")] + 1: (empty) + 2: JS_INITIALIZER_CLAUSE@82..88 + 0: EQ@82..84 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@84..88 + 0: JS_IDENTIFIER_EXPRESSION@84..85 + 0: JS_REFERENCE_IDENTIFIER@84..85 + 0: IDENT@84..85 "f" [] [] + 1: TS_TYPE_ARGUMENTS@85..88 + 0: L_ANGLE@85..86 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@86..87 + 0: TS_REFERENCE_TYPE@86..87 + 0: JS_REFERENCE_IDENTIFIER@86..87 + 0: IDENT@86..87 "T" [] [] + 1: (empty) + 2: R_ANGLE@87..88 ">" [] [] + 1: (empty) + 1: JS_EXPRESSION_STATEMENT@88..99 + 0: JS_YIELD_EXPRESSION@88..98 + 0: YIELD_KW@88..98 "yield" [Newline("\n"), Whitespace(" ")] [] + 1: (empty) + 1: SEMICOLON@98..99 ";" [] [] + 3: R_CURLY@99..101 "}" [Newline("\n")] [] + 2: JS_EXPRESSION_STATEMENT@101..112 + 0: JS_LOGICAL_EXPRESSION@101..111 + 0: TS_INSTANTIATION_EXPRESSION@101..106 + 0: JS_IDENTIFIER_EXPRESSION@101..103 + 0: JS_REFERENCE_IDENTIFIER@101..103 + 0: IDENT@101..103 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@103..106 + 0: L_ANGLE@103..104 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@104..105 + 0: TS_REFERENCE_TYPE@104..105 + 0: JS_REFERENCE_IDENTIFIER@104..105 + 0: IDENT@104..105 "T" [] [] + 1: (empty) + 2: R_ANGLE@105..106 ">" [] [] + 1: QUESTION2@106..110 "??" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@110..111 + 0: JS_NUMBER_LITERAL@110..111 "1" [] [] + 1: SEMICOLON@111..112 ";" [] [] + 3: JS_EXPRESSION_STATEMENT@112..123 + 0: JS_LOGICAL_EXPRESSION@112..122 + 0: TS_INSTANTIATION_EXPRESSION@112..117 + 0: JS_IDENTIFIER_EXPRESSION@112..114 + 0: JS_REFERENCE_IDENTIFIER@112..114 + 0: IDENT@112..114 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@114..117 + 0: L_ANGLE@114..115 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@115..116 + 0: TS_REFERENCE_TYPE@115..116 + 0: JS_REFERENCE_IDENTIFIER@115..116 + 0: IDENT@115..116 "T" [] [] + 1: (empty) + 2: R_ANGLE@116..117 ">" [] [] + 1: PIPE2@117..121 "||" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@121..122 + 0: JS_NUMBER_LITERAL@121..122 "1" [] [] + 1: SEMICOLON@122..123 ";" [] [] + 4: JS_EXPRESSION_STATEMENT@123..134 + 0: JS_LOGICAL_EXPRESSION@123..133 + 0: TS_INSTANTIATION_EXPRESSION@123..128 + 0: JS_IDENTIFIER_EXPRESSION@123..125 + 0: JS_REFERENCE_IDENTIFIER@123..125 + 0: IDENT@123..125 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@125..128 + 0: L_ANGLE@125..126 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@126..127 + 0: TS_REFERENCE_TYPE@126..127 + 0: JS_REFERENCE_IDENTIFIER@126..127 + 0: IDENT@126..127 "T" [] [] + 1: (empty) + 2: R_ANGLE@127..128 ">" [] [] + 1: AMP2@128..132 "&&" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@132..133 + 0: JS_NUMBER_LITERAL@132..133 "1" [] [] + 1: SEMICOLON@133..134 ";" [] [] + 5: JS_EXPRESSION_STATEMENT@134..144 + 0: JS_BINARY_EXPRESSION@134..143 + 0: TS_INSTANTIATION_EXPRESSION@134..139 + 0: JS_IDENTIFIER_EXPRESSION@134..136 + 0: JS_REFERENCE_IDENTIFIER@134..136 + 0: IDENT@134..136 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@136..139 + 0: L_ANGLE@136..137 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@137..138 + 0: TS_REFERENCE_TYPE@137..138 + 0: JS_REFERENCE_IDENTIFIER@137..138 + 0: IDENT@137..138 "T" [] [] + 1: (empty) + 2: R_ANGLE@138..139 ">" [] [] + 1: PIPE@139..142 "|" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@142..143 + 0: JS_NUMBER_LITERAL@142..143 "1" [] [] + 1: SEMICOLON@143..144 ";" [] [] + 6: JS_EXPRESSION_STATEMENT@144..154 + 0: JS_BINARY_EXPRESSION@144..153 + 0: TS_INSTANTIATION_EXPRESSION@144..149 + 0: JS_IDENTIFIER_EXPRESSION@144..146 + 0: JS_REFERENCE_IDENTIFIER@144..146 + 0: IDENT@144..146 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@146..149 + 0: L_ANGLE@146..147 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@147..148 + 0: TS_REFERENCE_TYPE@147..148 + 0: JS_REFERENCE_IDENTIFIER@147..148 + 0: IDENT@147..148 "T" [] [] + 1: (empty) + 2: R_ANGLE@148..149 ">" [] [] + 1: CARET@149..152 "^" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@152..153 + 0: JS_NUMBER_LITERAL@152..153 "1" [] [] + 1: SEMICOLON@153..154 ";" [] [] + 7: JS_EXPRESSION_STATEMENT@154..164 + 0: JS_BINARY_EXPRESSION@154..163 + 0: TS_INSTANTIATION_EXPRESSION@154..159 + 0: JS_IDENTIFIER_EXPRESSION@154..156 + 0: JS_REFERENCE_IDENTIFIER@154..156 + 0: IDENT@154..156 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@156..159 + 0: L_ANGLE@156..157 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@157..158 + 0: TS_REFERENCE_TYPE@157..158 + 0: JS_REFERENCE_IDENTIFIER@157..158 + 0: IDENT@157..158 "T" [] [] + 1: (empty) + 2: R_ANGLE@158..159 ">" [] [] + 1: AMP@159..162 "&" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@162..163 + 0: JS_NUMBER_LITERAL@162..163 "1" [] [] + 1: SEMICOLON@163..164 ";" [] [] + 8: JS_EXPRESSION_STATEMENT@164..178 + 0: JS_BINARY_EXPRESSION@164..177 + 0: TS_INSTANTIATION_EXPRESSION@164..169 + 0: JS_IDENTIFIER_EXPRESSION@164..166 + 0: JS_REFERENCE_IDENTIFIER@164..166 + 0: IDENT@164..166 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@166..169 + 0: L_ANGLE@166..167 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@167..168 + 0: TS_REFERENCE_TYPE@167..168 + 0: JS_REFERENCE_IDENTIFIER@167..168 + 0: IDENT@167..168 "T" [] [] + 1: (empty) + 2: R_ANGLE@168..169 ">" [] [] + 1: EQ2@169..173 "==" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@173..177 + 0: JS_IDENTIFIER_EXPRESSION@173..174 + 0: JS_REFERENCE_IDENTIFIER@173..174 + 0: IDENT@173..174 "f" [] [] + 1: TS_TYPE_ARGUMENTS@174..177 + 0: L_ANGLE@174..175 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@175..176 + 0: TS_REFERENCE_TYPE@175..176 + 0: JS_REFERENCE_IDENTIFIER@175..176 + 0: IDENT@175..176 "T" [] [] + 1: (empty) + 2: R_ANGLE@176..177 ">" [] [] + 1: SEMICOLON@177..178 ";" [] [] + 9: JS_EXPRESSION_STATEMENT@178..192 + 0: JS_BINARY_EXPRESSION@178..191 + 0: TS_INSTANTIATION_EXPRESSION@178..183 + 0: JS_IDENTIFIER_EXPRESSION@178..180 + 0: JS_REFERENCE_IDENTIFIER@178..180 + 0: IDENT@178..180 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@180..183 + 0: L_ANGLE@180..181 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@181..182 + 0: TS_REFERENCE_TYPE@181..182 + 0: JS_REFERENCE_IDENTIFIER@181..182 + 0: IDENT@181..182 "T" [] [] + 1: (empty) + 2: R_ANGLE@182..183 ">" [] [] + 1: LTEQ@183..187 "<=" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@187..191 + 0: JS_IDENTIFIER_EXPRESSION@187..188 + 0: JS_REFERENCE_IDENTIFIER@187..188 + 0: IDENT@187..188 "f" [] [] + 1: TS_TYPE_ARGUMENTS@188..191 + 0: L_ANGLE@188..189 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@189..190 + 0: TS_REFERENCE_TYPE@189..190 + 0: JS_REFERENCE_IDENTIFIER@189..190 + 0: IDENT@189..190 "T" [] [] + 1: (empty) + 2: R_ANGLE@190..191 ">" [] [] + 1: SEMICOLON@191..192 ";" [] [] + 10: JS_EXPRESSION_STATEMENT@192..206 + 0: JS_BINARY_EXPRESSION@192..205 + 0: TS_INSTANTIATION_EXPRESSION@192..197 + 0: JS_IDENTIFIER_EXPRESSION@192..194 + 0: JS_REFERENCE_IDENTIFIER@192..194 + 0: IDENT@192..194 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@194..197 + 0: L_ANGLE@194..195 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@195..196 + 0: TS_REFERENCE_TYPE@195..196 + 0: JS_REFERENCE_IDENTIFIER@195..196 + 0: IDENT@195..196 "T" [] [] + 1: (empty) + 2: R_ANGLE@196..197 ">" [] [] + 1: NEQ@197..201 "!=" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@201..205 + 0: JS_IDENTIFIER_EXPRESSION@201..202 + 0: JS_REFERENCE_IDENTIFIER@201..202 + 0: IDENT@201..202 "f" [] [] + 1: TS_TYPE_ARGUMENTS@202..205 + 0: L_ANGLE@202..203 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@203..204 + 0: TS_REFERENCE_TYPE@203..204 + 0: JS_REFERENCE_IDENTIFIER@203..204 + 0: IDENT@203..204 "T" [] [] + 1: (empty) + 2: R_ANGLE@204..205 ">" [] [] + 1: SEMICOLON@205..206 ";" [] [] + 11: JS_EXPRESSION_STATEMENT@206..221 + 0: JS_BINARY_EXPRESSION@206..220 + 0: TS_INSTANTIATION_EXPRESSION@206..211 + 0: JS_IDENTIFIER_EXPRESSION@206..208 + 0: JS_REFERENCE_IDENTIFIER@206..208 + 0: IDENT@206..208 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@208..211 + 0: L_ANGLE@208..209 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@209..210 + 0: TS_REFERENCE_TYPE@209..210 + 0: JS_REFERENCE_IDENTIFIER@209..210 + 0: IDENT@209..210 "T" [] [] + 1: (empty) + 2: R_ANGLE@210..211 ">" [] [] + 1: EQ3@211..216 "===" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@216..220 + 0: JS_IDENTIFIER_EXPRESSION@216..217 + 0: JS_REFERENCE_IDENTIFIER@216..217 + 0: IDENT@216..217 "f" [] [] + 1: TS_TYPE_ARGUMENTS@217..220 + 0: L_ANGLE@217..218 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@218..219 + 0: TS_REFERENCE_TYPE@218..219 + 0: JS_REFERENCE_IDENTIFIER@218..219 + 0: IDENT@218..219 "T" [] [] + 1: (empty) + 2: R_ANGLE@219..220 ">" [] [] + 1: SEMICOLON@220..221 ";" [] [] + 12: JS_EXPRESSION_STATEMENT@221..236 + 0: JS_BINARY_EXPRESSION@221..235 + 0: TS_INSTANTIATION_EXPRESSION@221..226 + 0: JS_IDENTIFIER_EXPRESSION@221..223 + 0: JS_REFERENCE_IDENTIFIER@221..223 + 0: IDENT@221..223 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@223..226 + 0: L_ANGLE@223..224 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@224..225 + 0: TS_REFERENCE_TYPE@224..225 + 0: JS_REFERENCE_IDENTIFIER@224..225 + 0: IDENT@224..225 "T" [] [] + 1: (empty) + 2: R_ANGLE@225..226 ">" [] [] + 1: NEQ2@226..231 "!==" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@231..235 + 0: JS_IDENTIFIER_EXPRESSION@231..232 + 0: JS_REFERENCE_IDENTIFIER@231..232 + 0: IDENT@231..232 "f" [] [] + 1: TS_TYPE_ARGUMENTS@232..235 + 0: L_ANGLE@232..233 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@233..234 + 0: TS_REFERENCE_TYPE@233..234 + 0: JS_REFERENCE_IDENTIFIER@233..234 + 0: IDENT@233..234 "T" [] [] + 1: (empty) + 2: R_ANGLE@234..235 ">" [] [] + 1: SEMICOLON@235..236 ";" [] [] + 13: JS_EXPRESSION_STATEMENT@236..258 + 0: JS_INSTANCEOF_EXPRESSION@236..257 + 0: TS_INSTANTIATION_EXPRESSION@236..241 + 0: JS_IDENTIFIER_EXPRESSION@236..238 + 0: JS_REFERENCE_IDENTIFIER@236..238 + 0: IDENT@236..238 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@238..241 + 0: L_ANGLE@238..239 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@239..240 + 0: TS_REFERENCE_TYPE@239..240 + 0: JS_REFERENCE_IDENTIFIER@239..240 + 0: IDENT@239..240 "T" [] [] + 1: (empty) + 2: R_ANGLE@240..241 ">" [] [] + 1: INSTANCEOF_KW@241..253 "instanceof" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@253..257 + 0: JS_IDENTIFIER_EXPRESSION@253..254 + 0: JS_REFERENCE_IDENTIFIER@253..254 + 0: IDENT@253..254 "f" [] [] + 1: TS_TYPE_ARGUMENTS@254..257 + 0: L_ANGLE@254..255 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@255..256 + 0: TS_REFERENCE_TYPE@255..256 + 0: JS_REFERENCE_IDENTIFIER@255..256 + 0: IDENT@255..256 "T" [] [] + 1: (empty) + 2: R_ANGLE@256..257 ">" [] [] + 1: SEMICOLON@257..258 ";" [] [] + 14: JS_EXPRESSION_STATEMENT@258..270 + 0: JS_IN_EXPRESSION@258..269 + 0: TS_INSTANTIATION_EXPRESSION@258..263 + 0: JS_IDENTIFIER_EXPRESSION@258..260 + 0: JS_REFERENCE_IDENTIFIER@258..260 + 0: IDENT@258..260 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@260..263 + 0: L_ANGLE@260..261 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@261..262 + 0: TS_REFERENCE_TYPE@261..262 + 0: JS_REFERENCE_IDENTIFIER@261..262 + 0: IDENT@261..262 "T" [] [] + 1: (empty) + 2: R_ANGLE@262..263 ">" [] [] + 1: IN_KW@263..267 "in" [Newline("\n")] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@267..269 + 0: L_CURLY@267..268 "{" [] [] + 1: JS_OBJECT_MEMBER_LIST@268..268 + 2: R_CURLY@268..269 "}" [] [] + 1: SEMICOLON@269..270 ";" [] [] + 15: JS_EXPRESSION_STATEMENT@270..283 + 0: JS_BINARY_EXPRESSION@270..282 + 0: TS_INSTANTIATION_EXPRESSION@270..275 + 0: JS_IDENTIFIER_EXPRESSION@270..272 + 0: JS_REFERENCE_IDENTIFIER@270..272 + 0: IDENT@270..272 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@272..275 + 0: L_ANGLE@272..273 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@273..274 + 0: TS_REFERENCE_TYPE@273..274 + 0: JS_REFERENCE_IDENTIFIER@273..274 + 0: IDENT@273..274 "T" [] [] + 1: (empty) + 2: R_ANGLE@274..275 ">" [] [] + 1: STAR@275..278 "*" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@278..282 + 0: JS_IDENTIFIER_EXPRESSION@278..279 + 0: JS_REFERENCE_IDENTIFIER@278..279 + 0: IDENT@278..279 "f" [] [] + 1: TS_TYPE_ARGUMENTS@279..282 + 0: L_ANGLE@279..280 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@280..281 + 0: TS_REFERENCE_TYPE@280..281 + 0: JS_REFERENCE_IDENTIFIER@280..281 + 0: IDENT@280..281 "T" [] [] + 1: (empty) + 2: R_ANGLE@281..282 ">" [] [] + 1: SEMICOLON@282..283 ";" [] [] + 16: JS_EXPRESSION_STATEMENT@283..296 + 0: JS_BINARY_EXPRESSION@283..295 + 0: TS_INSTANTIATION_EXPRESSION@283..288 + 0: JS_IDENTIFIER_EXPRESSION@283..285 + 0: JS_REFERENCE_IDENTIFIER@283..285 + 0: IDENT@283..285 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@285..288 + 0: L_ANGLE@285..286 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@286..287 + 0: TS_REFERENCE_TYPE@286..287 + 0: JS_REFERENCE_IDENTIFIER@286..287 + 0: IDENT@286..287 "T" [] [] + 1: (empty) + 2: R_ANGLE@287..288 ">" [] [] + 1: SLASH@288..291 "/" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@291..295 + 0: JS_IDENTIFIER_EXPRESSION@291..292 + 0: JS_REFERENCE_IDENTIFIER@291..292 + 0: IDENT@291..292 "f" [] [] + 1: TS_TYPE_ARGUMENTS@292..295 + 0: L_ANGLE@292..293 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@293..294 + 0: TS_REFERENCE_TYPE@293..294 + 0: JS_REFERENCE_IDENTIFIER@293..294 + 0: IDENT@293..294 "T" [] [] + 1: (empty) + 2: R_ANGLE@294..295 ">" [] [] + 1: SEMICOLON@295..296 ";" [] [] + 17: JS_EXPRESSION_STATEMENT@296..309 + 0: JS_BINARY_EXPRESSION@296..308 + 0: TS_INSTANTIATION_EXPRESSION@296..301 + 0: JS_IDENTIFIER_EXPRESSION@296..298 + 0: JS_REFERENCE_IDENTIFIER@296..298 + 0: IDENT@296..298 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@298..301 + 0: L_ANGLE@298..299 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@299..300 + 0: TS_REFERENCE_TYPE@299..300 + 0: JS_REFERENCE_IDENTIFIER@299..300 + 0: IDENT@299..300 "T" [] [] + 1: (empty) + 2: R_ANGLE@300..301 ">" [] [] + 1: PERCENT@301..304 "%" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@304..308 + 0: JS_IDENTIFIER_EXPRESSION@304..305 + 0: JS_REFERENCE_IDENTIFIER@304..305 + 0: IDENT@304..305 "f" [] [] + 1: TS_TYPE_ARGUMENTS@305..308 + 0: L_ANGLE@305..306 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@306..307 + 0: TS_REFERENCE_TYPE@306..307 + 0: JS_REFERENCE_IDENTIFIER@306..307 + 0: IDENT@306..307 "T" [] [] + 1: (empty) + 2: R_ANGLE@307..308 ">" [] [] + 1: SEMICOLON@308..309 ";" [] [] + 18: JS_EXPRESSION_STATEMENT@309..323 + 0: JS_BINARY_EXPRESSION@309..322 + 0: TS_INSTANTIATION_EXPRESSION@309..314 + 0: JS_IDENTIFIER_EXPRESSION@309..311 + 0: JS_REFERENCE_IDENTIFIER@309..311 + 0: IDENT@309..311 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@311..314 + 0: L_ANGLE@311..312 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@312..313 + 0: TS_REFERENCE_TYPE@312..313 + 0: JS_REFERENCE_IDENTIFIER@312..313 + 0: IDENT@312..313 "T" [] [] + 1: (empty) + 2: R_ANGLE@313..314 ">" [] [] + 1: STAR2@314..318 "**" [Newline("\n")] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@318..322 + 0: JS_IDENTIFIER_EXPRESSION@318..319 + 0: JS_REFERENCE_IDENTIFIER@318..319 + 0: IDENT@318..319 "f" [] [] + 1: TS_TYPE_ARGUMENTS@319..322 + 0: L_ANGLE@319..320 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@320..321 + 0: TS_REFERENCE_TYPE@320..321 + 0: JS_REFERENCE_IDENTIFIER@320..321 + 0: IDENT@320..321 "T" [] [] + 1: (empty) + 2: R_ANGLE@321..322 ">" [] [] + 1: SEMICOLON@322..323 ";" [] [] + 19: JS_EXPRESSION_STATEMENT@323..336 + 0: JS_BINARY_EXPRESSION@323..335 + 0: JS_BINARY_EXPRESSION@323..328 + 0: JS_IDENTIFIER_EXPRESSION@323..326 + 0: JS_REFERENCE_IDENTIFIER@323..326 + 0: IDENT@323..326 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@326..327 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@327..328 + 0: JS_REFERENCE_IDENTIFIER@327..328 + 0: IDENT@327..328 "T" [] [] + 1: R_ANGLE@328..329 ">" [] [] + 2: JS_UNARY_EXPRESSION@329..335 + 0: PLUS@329..331 "+" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@331..335 + 0: JS_IDENTIFIER_EXPRESSION@331..332 + 0: JS_REFERENCE_IDENTIFIER@331..332 + 0: IDENT@331..332 "f" [] [] + 1: TS_TYPE_ARGUMENTS@332..335 + 0: L_ANGLE@332..333 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@333..334 + 0: TS_REFERENCE_TYPE@333..334 + 0: JS_REFERENCE_IDENTIFIER@333..334 + 0: IDENT@333..334 "T" [] [] + 1: (empty) + 2: R_ANGLE@334..335 ">" [] [] + 1: SEMICOLON@335..336 ";" [] [] + 20: JS_EXPRESSION_STATEMENT@336..349 + 0: JS_BINARY_EXPRESSION@336..348 + 0: JS_BINARY_EXPRESSION@336..341 + 0: JS_IDENTIFIER_EXPRESSION@336..339 + 0: JS_REFERENCE_IDENTIFIER@336..339 + 0: IDENT@336..339 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@339..340 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@340..341 + 0: JS_REFERENCE_IDENTIFIER@340..341 + 0: IDENT@340..341 "T" [] [] + 1: R_ANGLE@341..342 ">" [] [] + 2: JS_UNARY_EXPRESSION@342..348 + 0: MINUS@342..344 "-" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@344..348 + 0: JS_IDENTIFIER_EXPRESSION@344..345 + 0: JS_REFERENCE_IDENTIFIER@344..345 + 0: IDENT@344..345 "f" [] [] + 1: TS_TYPE_ARGUMENTS@345..348 + 0: L_ANGLE@345..346 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@346..347 + 0: TS_REFERENCE_TYPE@346..347 + 0: JS_REFERENCE_IDENTIFIER@346..347 + 0: IDENT@346..347 "T" [] [] + 1: (empty) + 2: R_ANGLE@347..348 ">" [] [] + 1: SEMICOLON@348..349 ";" [] [] + 21: JS_EXPRESSION_STATEMENT@349..355 + 0: TS_INSTANTIATION_EXPRESSION@349..355 + 0: JS_IDENTIFIER_EXPRESSION@349..352 + 0: JS_REFERENCE_IDENTIFIER@349..352 + 0: IDENT@349..352 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@352..355 + 0: L_ANGLE@352..353 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@353..354 + 0: TS_REFERENCE_TYPE@353..354 + 0: JS_REFERENCE_IDENTIFIER@353..354 + 0: IDENT@353..354 "T" [] [] + 1: (empty) + 2: R_ANGLE@354..355 ">" [] [] + 1: (empty) + 22: JS_EXPRESSION_STATEMENT@355..361 + 0: JS_THIS_EXPRESSION@355..360 + 0: THIS_KW@355..360 "this" [Newline("\n")] [] + 1: SEMICOLON@360..361 ";" [] [] + 23: JS_EXPRESSION_STATEMENT@361..367 + 0: TS_INSTANTIATION_EXPRESSION@361..367 + 0: JS_IDENTIFIER_EXPRESSION@361..364 + 0: JS_REFERENCE_IDENTIFIER@361..364 + 0: IDENT@361..364 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@364..367 + 0: L_ANGLE@364..365 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@365..366 + 0: TS_REFERENCE_TYPE@365..366 + 0: JS_REFERENCE_IDENTIFIER@365..366 + 0: IDENT@365..366 "T" [] [] + 1: (empty) + 2: R_ANGLE@366..367 ">" [] [] + 1: (empty) + 24: JS_EXPRESSION_STATEMENT@367..373 + 0: JS_NULL_LITERAL_EXPRESSION@367..372 + 0: NULL_KW@367..372 "null" [Newline("\n")] [] + 1: SEMICOLON@372..373 ";" [] [] + 25: JS_EXPRESSION_STATEMENT@373..379 + 0: TS_INSTANTIATION_EXPRESSION@373..379 + 0: JS_IDENTIFIER_EXPRESSION@373..376 + 0: JS_REFERENCE_IDENTIFIER@373..376 + 0: IDENT@373..376 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@376..379 + 0: L_ANGLE@376..377 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@377..378 + 0: TS_REFERENCE_TYPE@377..378 + 0: JS_REFERENCE_IDENTIFIER@377..378 + 0: IDENT@377..378 "T" [] [] + 1: (empty) + 2: R_ANGLE@378..379 ">" [] [] + 1: (empty) + 26: JS_EXPRESSION_STATEMENT@379..385 + 0: JS_BOOLEAN_LITERAL_EXPRESSION@379..384 + 0: TRUE_KW@379..384 "true" [Newline("\n")] [] + 1: SEMICOLON@384..385 ";" [] [] + 27: JS_EXPRESSION_STATEMENT@385..391 + 0: TS_INSTANTIATION_EXPRESSION@385..391 + 0: JS_IDENTIFIER_EXPRESSION@385..388 + 0: JS_REFERENCE_IDENTIFIER@385..388 + 0: IDENT@385..388 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@388..391 + 0: L_ANGLE@388..389 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@389..390 + 0: TS_REFERENCE_TYPE@389..390 + 0: JS_REFERENCE_IDENTIFIER@389..390 + 0: IDENT@389..390 "T" [] [] + 1: (empty) + 2: R_ANGLE@390..391 ">" [] [] + 1: (empty) + 28: JS_EXPRESSION_STATEMENT@391..398 + 0: JS_BOOLEAN_LITERAL_EXPRESSION@391..397 + 0: FALSE_KW@391..397 "false" [Newline("\n")] [] + 1: SEMICOLON@397..398 ";" [] [] + 29: JS_EXPRESSION_STATEMENT@398..404 + 0: TS_INSTANTIATION_EXPRESSION@398..404 + 0: JS_IDENTIFIER_EXPRESSION@398..401 + 0: JS_REFERENCE_IDENTIFIER@398..401 + 0: IDENT@398..401 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@401..404 + 0: L_ANGLE@401..402 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@402..403 + 0: TS_REFERENCE_TYPE@402..403 + 0: JS_REFERENCE_IDENTIFIER@402..403 + 0: IDENT@402..403 "T" [] [] + 1: (empty) + 2: R_ANGLE@403..404 ">" [] [] + 1: (empty) + 30: JS_EXPRESSION_STATEMENT@404..407 + 0: JS_NUMBER_LITERAL_EXPRESSION@404..406 + 0: JS_NUMBER_LITERAL@404..406 "1" [Newline("\n")] [] + 1: SEMICOLON@406..407 ";" [] [] + 31: JS_EXPRESSION_STATEMENT@407..413 + 0: TS_INSTANTIATION_EXPRESSION@407..413 + 0: JS_IDENTIFIER_EXPRESSION@407..410 + 0: JS_REFERENCE_IDENTIFIER@407..410 + 0: IDENT@407..410 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@410..413 + 0: L_ANGLE@410..411 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@411..412 + 0: TS_REFERENCE_TYPE@411..412 + 0: JS_REFERENCE_IDENTIFIER@411..412 + 0: IDENT@411..412 "T" [] [] + 1: (empty) + 2: R_ANGLE@412..413 ">" [] [] + 1: (empty) + 32: JS_EXPRESSION_STATEMENT@413..419 + 0: JS_BIG_INT_LITERAL_EXPRESSION@413..418 + 0: JS_BIG_INT_LITERAL@413..418 "123n" [Newline("\n")] [] + 1: SEMICOLON@418..419 ";" [] [] + 33: JS_EXPRESSION_STATEMENT@419..425 + 0: TS_INSTANTIATION_EXPRESSION@419..425 + 0: JS_IDENTIFIER_EXPRESSION@419..422 + 0: JS_REFERENCE_IDENTIFIER@419..422 + 0: IDENT@419..422 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@422..425 + 0: L_ANGLE@422..423 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@423..424 + 0: TS_REFERENCE_TYPE@423..424 + 0: JS_REFERENCE_IDENTIFIER@423..424 + 0: IDENT@423..424 "T" [] [] + 1: (empty) + 2: R_ANGLE@424..425 ">" [] [] + 1: (empty) + 34: JS_BLOCK_STATEMENT@425..428 + 0: L_CURLY@425..427 "{" [Newline("\n")] [] + 1: JS_STATEMENT_LIST@427..427 + 2: R_CURLY@427..428 "}" [] [] + 35: JS_EMPTY_STATEMENT@428..429 + 0: SEMICOLON@428..429 ";" [] [] + 36: JS_EXPRESSION_STATEMENT@429..435 + 0: TS_INSTANTIATION_EXPRESSION@429..435 + 0: JS_IDENTIFIER_EXPRESSION@429..432 + 0: JS_REFERENCE_IDENTIFIER@429..432 + 0: IDENT@429..432 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@432..435 + 0: L_ANGLE@432..433 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@433..434 + 0: TS_REFERENCE_TYPE@433..434 + 0: JS_REFERENCE_IDENTIFIER@433..434 + 0: IDENT@433..434 "T" [] [] + 1: (empty) + 2: R_ANGLE@434..435 ">" [] [] + 1: (empty) + 37: JS_FUNCTION_DECLARATION@435..454 + 0: (empty) + 1: FUNCTION_KW@435..445 "function" [Newline("\n")] [Whitespace(" ")] + 2: (empty) + 3: JS_IDENTIFIER_BINDING@445..449 + 0: IDENT@445..449 "test" [] [] + 4: (empty) + 5: JS_PARAMETERS@449..452 + 0: L_PAREN@449..450 "(" [] [] + 1: JS_PARAMETER_LIST@450..450 + 2: R_PAREN@450..452 ")" [] [Whitespace(" ")] + 6: (empty) + 7: JS_FUNCTION_BODY@452..454 + 0: L_CURLY@452..453 "{" [] [] + 1: JS_DIRECTIVE_LIST@453..453 + 2: JS_STATEMENT_LIST@453..453 + 3: R_CURLY@453..454 "}" [] [] + 38: JS_EMPTY_STATEMENT@454..455 + 0: SEMICOLON@454..455 ";" [] [] + 39: JS_EXPRESSION_STATEMENT@455..461 + 0: TS_INSTANTIATION_EXPRESSION@455..461 + 0: JS_IDENTIFIER_EXPRESSION@455..458 + 0: JS_REFERENCE_IDENTIFIER@455..458 + 0: IDENT@455..458 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@458..461 + 0: L_ANGLE@458..459 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@459..460 + 0: TS_REFERENCE_TYPE@459..460 + 0: JS_REFERENCE_IDENTIFIER@459..460 + 0: IDENT@459..460 "T" [] [] + 1: (empty) + 2: R_ANGLE@460..461 ">" [] [] + 1: (empty) + 40: JS_CLASS_DECLARATION@461..472 + 0: (empty) + 1: CLASS_KW@461..468 "class" [Newline("\n")] [Whitespace(" ")] + 2: JS_IDENTIFIER_BINDING@468..470 + 0: IDENT@468..470 "A" [] [Whitespace(" ")] + 3: (empty) + 4: (empty) + 5: (empty) + 6: L_CURLY@470..471 "{" [] [] + 7: JS_CLASS_MEMBER_LIST@471..471 + 8: R_CURLY@471..472 "}" [] [] + 41: JS_EMPTY_STATEMENT@472..473 + 0: SEMICOLON@472..473 ";" [] [] + 42: JS_EXPRESSION_STATEMENT@473..479 + 0: TS_INSTANTIATION_EXPRESSION@473..479 + 0: JS_IDENTIFIER_EXPRESSION@473..476 + 0: JS_REFERENCE_IDENTIFIER@473..476 + 0: IDENT@473..476 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@476..479 + 0: L_ANGLE@476..477 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@477..478 + 0: TS_REFERENCE_TYPE@477..478 + 0: JS_REFERENCE_IDENTIFIER@477..478 + 0: IDENT@477..478 "T" [] [] + 1: (empty) + 2: R_ANGLE@478..479 ">" [] [] + 1: (empty) + 43: JS_EXPRESSION_STATEMENT@479..488 + 0: JS_NEW_EXPRESSION@479..487 + 0: NEW_KW@479..484 "new" [Newline("\n")] [Whitespace(" ")] + 1: JS_IDENTIFIER_EXPRESSION@484..485 + 0: JS_REFERENCE_IDENTIFIER@484..485 + 0: IDENT@484..485 "A" [] [] + 2: (empty) + 3: JS_CALL_ARGUMENTS@485..487 + 0: L_PAREN@485..486 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@486..486 + 2: R_PAREN@486..487 ")" [] [] + 1: SEMICOLON@487..488 ";" [] [] + 44: JS_EXPRESSION_STATEMENT@488..498 + 0: JS_BINARY_EXPRESSION@488..497 + 0: TS_INSTANTIATION_EXPRESSION@488..493 + 0: JS_IDENTIFIER_EXPRESSION@488..490 + 0: JS_REFERENCE_IDENTIFIER@488..490 + 0: IDENT@488..490 "f" [Newline("\n")] [] + 1: 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 "T" [] [] + 1: (empty) + 2: R_ANGLE@492..493 ">" [] [] + 1: SLASH@493..496 "/" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@496..497 + 0: JS_NUMBER_LITERAL@496..497 "1" [] [] + 1: SEMICOLON@497..498 ";" [] [] + 45: JS_EXPRESSION_STATEMENT@498..508 + 0: JS_BINARY_EXPRESSION@498..507 + 0: JS_BINARY_EXPRESSION@498..503 + 0: JS_IDENTIFIER_EXPRESSION@498..501 + 0: JS_REFERENCE_IDENTIFIER@498..501 + 0: IDENT@498..501 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@501..502 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@502..503 + 0: JS_REFERENCE_IDENTIFIER@502..503 + 0: IDENT@502..503 "T" [] [] + 1: R_ANGLE@503..504 ">" [] [] + 2: JS_UNARY_EXPRESSION@504..507 + 0: PLUS@504..506 "+" [Newline("\n")] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@506..507 + 0: JS_NUMBER_LITERAL@506..507 "1" [] [] + 1: SEMICOLON@507..508 ";" [] [] + 46: JS_EXPRESSION_STATEMENT@508..518 + 0: JS_BINARY_EXPRESSION@508..517 + 0: JS_BINARY_EXPRESSION@508..513 + 0: JS_IDENTIFIER_EXPRESSION@508..511 + 0: JS_REFERENCE_IDENTIFIER@508..511 + 0: IDENT@508..511 "f" [Newline("\n")] [Whitespace(" ")] + 1: L_ANGLE@511..512 "<" [] [] + 2: JS_IDENTIFIER_EXPRESSION@512..513 + 0: JS_REFERENCE_IDENTIFIER@512..513 + 0: IDENT@512..513 "T" [] [] + 1: R_ANGLE@513..514 ">" [] [] + 2: JS_UNARY_EXPRESSION@514..517 + 0: MINUS@514..516 "-" [Newline("\n")] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@516..517 + 0: JS_NUMBER_LITERAL@516..517 "1" [] [] + 1: SEMICOLON@517..518 ";" [] [] + 47: JS_EXPRESSION_STATEMENT@518..524 + 0: TS_INSTANTIATION_EXPRESSION@518..524 + 0: JS_IDENTIFIER_EXPRESSION@518..521 + 0: JS_REFERENCE_IDENTIFIER@518..521 + 0: IDENT@518..521 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@521..524 + 0: L_ANGLE@521..522 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@522..523 + 0: TS_REFERENCE_TYPE@522..523 + 0: JS_REFERENCE_IDENTIFIER@522..523 + 0: IDENT@522..523 "T" [] [] + 1: (empty) + 2: R_ANGLE@523..524 ">" [] [] + 1: (empty) + 48: JS_EXPRESSION_STATEMENT@524..528 + 0: JS_UNARY_EXPRESSION@524..527 + 0: TILDE@524..526 "~" [Newline("\n")] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@526..527 + 0: JS_NUMBER_LITERAL@526..527 "1" [] [] + 1: SEMICOLON@527..528 ";" [] [] + 49: JS_EXPRESSION_STATEMENT@528..534 + 0: TS_INSTANTIATION_EXPRESSION@528..534 + 0: JS_IDENTIFIER_EXPRESSION@528..531 + 0: JS_REFERENCE_IDENTIFIER@528..531 + 0: IDENT@528..531 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@531..534 + 0: L_ANGLE@531..532 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@532..533 + 0: TS_REFERENCE_TYPE@532..533 + 0: JS_REFERENCE_IDENTIFIER@532..533 + 0: IDENT@532..533 "T" [] [] + 1: (empty) + 2: R_ANGLE@533..534 ">" [] [] + 1: (empty) + 50: JS_EXPRESSION_STATEMENT@534..538 + 0: JS_UNARY_EXPRESSION@534..537 + 0: BANG@534..536 "!" [Newline("\n")] [] + 1: JS_NUMBER_LITERAL_EXPRESSION@536..537 + 0: JS_NUMBER_LITERAL@536..537 "1" [] [] + 1: SEMICOLON@537..538 ";" [] [] + 51: JS_EXPRESSION_STATEMENT@538..544 + 0: TS_INSTANTIATION_EXPRESSION@538..544 + 0: JS_IDENTIFIER_EXPRESSION@538..541 + 0: JS_REFERENCE_IDENTIFIER@538..541 + 0: IDENT@538..541 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@541..544 + 0: L_ANGLE@541..542 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@542..543 + 0: TS_REFERENCE_TYPE@542..543 + 0: JS_REFERENCE_IDENTIFIER@542..543 + 0: IDENT@542..543 "T" [] [] + 1: (empty) + 2: R_ANGLE@543..544 ">" [] [] + 1: (empty) + 52: JS_EXPRESSION_STATEMENT@544..560 + 0: JS_IDENTIFIER_EXPRESSION@544..559 + 0: JS_REFERENCE_IDENTIFIER@544..559 + 0: IDENT@544..559 "someIdentifier" [Newline("\n")] [] + 1: SEMICOLON@559..560 ";" [] [] + 53: JS_EXPRESSION_STATEMENT@560..566 + 0: TS_INSTANTIATION_EXPRESSION@560..566 + 0: JS_IDENTIFIER_EXPRESSION@560..563 + 0: JS_REFERENCE_IDENTIFIER@560..563 + 0: IDENT@560..563 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@563..566 + 0: L_ANGLE@563..564 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@564..565 + 0: TS_REFERENCE_TYPE@564..565 + 0: JS_REFERENCE_IDENTIFIER@564..565 + 0: IDENT@564..565 "T" [] [] + 1: (empty) + 2: R_ANGLE@565..566 ">" [] [] + 1: (empty) + 54: JS_EXPRESSION_STATEMENT@566..583 + 0: JS_UNARY_EXPRESSION@566..582 + 0: DELETE_KW@566..574 "delete" [Newline("\n")] [Whitespace(" ")] + 1: JS_COMPUTED_MEMBER_EXPRESSION@574..582 + 0: JS_IDENTIFIER_EXPRESSION@574..575 + 0: JS_REFERENCE_IDENTIFIER@574..575 + 0: IDENT@574..575 "a" [] [] + 1: (empty) + 2: L_BRACK@575..576 "[" [] [] + 3: JS_IDENTIFIER_EXPRESSION@576..581 + 0: JS_REFERENCE_IDENTIFIER@576..581 + 0: IDENT@576..581 "field" [] [] + 4: R_BRACK@581..582 "]" [] [] + 1: SEMICOLON@582..583 ";" [] [] + 55: JS_EXPRESSION_STATEMENT@583..589 + 0: TS_INSTANTIATION_EXPRESSION@583..589 + 0: JS_IDENTIFIER_EXPRESSION@583..586 + 0: JS_REFERENCE_IDENTIFIER@583..586 + 0: IDENT@583..586 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@586..589 + 0: L_ANGLE@586..587 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@587..588 + 0: TS_REFERENCE_TYPE@587..588 + 0: JS_REFERENCE_IDENTIFIER@587..588 + 0: IDENT@587..588 "T" [] [] + 1: (empty) + 2: R_ANGLE@588..589 ">" [] [] + 1: (empty) + 56: JS_EXPRESSION_STATEMENT@589..605 + 0: JS_UNARY_EXPRESSION@589..604 + 0: TYPEOF_KW@589..597 "typeof" [Newline("\n")] [Whitespace(" ")] + 1: JS_IDENTIFIER_EXPRESSION@597..604 + 0: JS_REFERENCE_IDENTIFIER@597..604 + 0: IDENT@597..604 "MyClass" [] [] + 1: SEMICOLON@604..605 ";" [] [] + 57: JS_EXPRESSION_STATEMENT@605..611 + 0: TS_INSTANTIATION_EXPRESSION@605..611 + 0: JS_IDENTIFIER_EXPRESSION@605..608 + 0: JS_REFERENCE_IDENTIFIER@605..608 + 0: IDENT@605..608 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@608..611 + 0: L_ANGLE@608..609 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@609..610 + 0: TS_REFERENCE_TYPE@609..610 + 0: JS_REFERENCE_IDENTIFIER@609..610 + 0: IDENT@609..610 "T" [] [] + 1: (empty) + 2: R_ANGLE@610..611 ">" [] [] + 1: (empty) + 58: JS_EXPRESSION_STATEMENT@611..619 + 0: JS_UNARY_EXPRESSION@611..618 + 0: VOID_KW@611..617 "void" [Newline("\n")] [Whitespace(" ")] + 1: JS_IDENTIFIER_EXPRESSION@617..618 + 0: JS_REFERENCE_IDENTIFIER@617..618 + 0: IDENT@617..618 "a" [] [] + 1: SEMICOLON@618..619 ";" [] [] + 59: JS_EXPRESSION_STATEMENT@619..630 + 0: JS_BINARY_EXPRESSION@619..629 + 0: TS_INSTANTIATION_EXPRESSION@619..624 + 0: JS_IDENTIFIER_EXPRESSION@619..621 + 0: JS_REFERENCE_IDENTIFIER@619..621 + 0: IDENT@619..621 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@621..624 + 0: L_ANGLE@621..622 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@622..623 + 0: TS_REFERENCE_TYPE@622..623 + 0: JS_REFERENCE_IDENTIFIER@622..623 + 0: IDENT@622..623 "T" [] [] + 1: (empty) + 2: R_ANGLE@623..624 ">" [] [] + 1: LTEQ@624..628 "<=" [Newline("\n")] [Whitespace(" ")] + 2: JS_NUMBER_LITERAL_EXPRESSION@628..629 + 0: JS_NUMBER_LITERAL@628..629 "1" [] [] + 1: SEMICOLON@629..630 ";" [] [] + 60: JS_EXPRESSION_STATEMENT@630..647 + 0: JS_CALL_EXPRESSION@630..646 + 0: JS_IDENTIFIER_EXPRESSION@630..633 + 0: JS_REFERENCE_IDENTIFIER@630..633 + 0: IDENT@630..633 "f" [Newline("\n")] [Whitespace(" ")] + 1: (empty) + 2: TS_TYPE_ARGUMENTS@633..636 + 0: L_ANGLE@633..634 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@634..635 + 0: TS_REFERENCE_TYPE@634..635 + 0: JS_REFERENCE_IDENTIFIER@634..635 + 0: IDENT@634..635 "T" [] [] + 1: (empty) + 2: R_ANGLE@635..636 ">" [] [] + 3: JS_CALL_ARGUMENTS@636..646 + 0: L_PAREN@636..638 "(" [Newline("\n")] [] + 1: JS_CALL_ARGUMENT_LIST@638..645 + 0: JS_AWAIT_EXPRESSION@638..645 + 0: AWAIT_KW@638..644 "await" [] [Whitespace(" ")] + 1: JS_NUMBER_LITERAL_EXPRESSION@644..645 + 0: JS_NUMBER_LITERAL@644..645 "1" [] [] + 2: R_PAREN@645..646 ")" [] [] + 1: SEMICOLON@646..647 ";" [] [] + 61: JS_EXPRESSION_STATEMENT@647..653 + 0: TS_INSTANTIATION_EXPRESSION@647..653 + 0: JS_IDENTIFIER_EXPRESSION@647..650 + 0: JS_REFERENCE_IDENTIFIER@647..650 + 0: IDENT@647..650 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@650..653 + 0: L_ANGLE@650..651 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@651..652 + 0: TS_REFERENCE_TYPE@651..652 + 0: JS_REFERENCE_IDENTIFIER@651..652 + 0: IDENT@651..652 "T" [] [] + 1: (empty) + 2: R_ANGLE@652..653 ">" [] [] + 1: (empty) + 62: JS_EXPRESSION_STATEMENT@653..666 + 0: JS_IMPORT_META_EXPRESSION@653..665 + 0: IMPORT_KW@653..660 "import" [Newline("\n")] [] + 1: DOT@660..661 "." [] [] + 2: META@661..665 "meta" [] [] + 1: SEMICOLON@665..666 ";" [] [] + 63: JS_EXPRESSION_STATEMENT@666..672 + 0: TS_INSTANTIATION_EXPRESSION@666..672 + 0: JS_IDENTIFIER_EXPRESSION@666..669 + 0: JS_REFERENCE_IDENTIFIER@666..669 + 0: IDENT@666..669 "f" [Newline("\n")] [Whitespace(" ")] + 1: TS_TYPE_ARGUMENTS@669..672 + 0: L_ANGLE@669..670 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@670..671 + 0: TS_REFERENCE_TYPE@670..671 + 0: JS_REFERENCE_IDENTIFIER@670..671 + 0: IDENT@670..671 "T" [] [] + 1: (empty) + 2: R_ANGLE@671..672 ">" [] [] + 1: (empty) + 64: JS_EXPRESSION_STATEMENT@672..687 + 0: JS_IMPORT_CALL_EXPRESSION@672..686 + 0: IMPORT_KW@672..679 "import" [Newline("\n")] [] + 1: JS_CALL_ARGUMENTS@679..686 + 0: L_PAREN@679..680 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@680..685 + 0: JS_STRING_LITERAL_EXPRESSION@680..685 + 0: JS_STRING_LITERAL@680..685 "\"123\"" [] [] + 2: R_PAREN@685..686 ")" [] [] + 1: SEMICOLON@686..687 ";" [] [] + 3: EOF@687..688 "" [Newline("\n")] [] diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.ts b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.ts new file mode 100644 index 00000000000..a7571c9c99d --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.ts @@ -0,0 +1,94 @@ +class A { + constructor() { + f + super(); + } +} +function *f() { + const f = f + yield; +} +f +?? 1; +f +|| 1; +f +&& 1; +f +| 1; +f +^ 1; +f +& 1; +f +== f; +f +<= f; +f +!= f; +f +=== f; +f +!== f; +f +instanceof f; +f +in {}; +f +* f; +f +/ f; +f +% f; +f +** f; +f ++f; +f +-f; +f +this; +f +null; +f +true; +f +false; +f +1; +f +123n; +f +{}; +f +function test() {}; +f +class A {}; +f +new A(); +f +/ 1; +f ++1; +f +-1; +f +~1; +f +!1; +f +someIdentifier; +f +delete a[field]; +f +typeof MyClass; +f +void a; +f +<= 1; +f +(await 1); +f +import.meta; +f +import("123");