From c88a0684f073cd4d0cdc0b188038581441d8913c Mon Sep 17 00:00:00 2001 From: Denis Bezrukov <6227442+denbezrukov@users.noreply.github.com> Date: Sun, 11 Dec 2022 12:03:11 +0200 Subject: [PATCH] feat(rome_js_parser): instantiation expressions #3147 --- .../binary-expr.ts.snap | 33 - crates/rome_js_parser/src/syntax/expr.rs | 1 + .../src/syntax/typescript/types.rs | 276 +- .../err/ts_instantiation_expressions1.rast | 171 -- .../err/ts_instantiation_expressions1.ts | 2 - .../err/ts_instantiation_expressions_1.rast | 1729 +++++++++++ .../err/ts_instantiation_expressions_1.ts | 24 + .../ok/ts_instantiation_expressions.rast | 917 +++++- .../inline/ok/ts_instantiation_expressions.ts | 12 +- .../ok/ts_instantiation_expressions_1.rast | 2657 +++++++++++++++++ .../ok/ts_instantiation_expressions_1.ts | 54 + .../ok/ts_instantiation_expressions_asi.rast | 1218 ++++++++ .../ok/ts_instantiation_expressions_asi.ts | 36 + ...ts_instantiation_expressions_new_line.rast | 2629 ++++++++++++++++ .../ts_instantiation_expressions_new_line.ts | 94 + 15 files changed, 9538 insertions(+), 315 deletions(-) delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/typescript/instantiation-expression/binary-expr.ts.snap delete mode 100644 crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions1.rast delete mode 100644 crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions1.ts create mode 100644 crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.rast create mode 100644 crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.ts create mode 100644 crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.rast create mode 100644 crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_1.ts create mode 100644 crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.rast create mode 100644 crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_asi.ts create mode 100644 crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.rast create mode 100644 crates/rome_js_parser/test_data/inline/ok/ts_instantiation_expressions_new_line.ts 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 cfa956a22315..000000000000 --- 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 682524473a83..e0f054033e5e 100644 --- a/crates/rome_js_parser/src/syntax/expr.rs +++ b/crates/rome_js_parser/src/syntax/expr.rs @@ -1233,6 +1233,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(), diff --git a/crates/rome_js_parser/src/syntax/typescript/types.rs b/crates/rome_js_parser/src/syntax/typescript/types.rs index 2b42cc90e4f7..29a855b53d53 100644 --- a/crates/rome_js_parser/src/syntax/typescript/types.rs +++ b/crates/rome_js_parser/src/syntax/typescript/types.rs @@ -2,7 +2,7 @@ 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, + 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, @@ -1256,19 +1256,241 @@ 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 +// // Parsed as instantiation 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 +// } pub(crate) fn parse_ts_type_arguments_in_expression(p: &mut JsParser) -> ParsedSyntax { // Don't parse type arguments in JS because the syntax is ambiguous @@ -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) { Ok(Present(arguments)) } else { Err(()) @@ -1294,35 +1516,25 @@ 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 { +fn can_follow_type_arguments_in_expr(p: &mut JsParser) -> 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_binary_operator(p) || !is_at_expression(p), + } +} + +fn is_binary_operator(p: &mut JsParser) -> 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 + OperatorPrecedence::try_from_binary_operator(p.cur()), + Some(_) ) } 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 5cb97ff4afca..000000000000 --- 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 3f80de13b1be..000000000000 --- 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 000000000000..5e5ce6705400 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.rast @@ -0,0 +1,1729 @@ +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")] [], + }, + ], + eof_token: EOF@375..376 "" [Newline("\n")] [], +} + +0: JS_MODULE@0..376 + 0: (empty) + 1: JS_DIRECTIVE_LIST@0..0 + 2: JS_MODULE_ITEM_LIST@0..375 + 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")] [] + 3: EOF@375..376 "" [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 │ + +-- +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 │ + + i This expression cannot be assigned to + +-- +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 +} 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 000000000000..72ed37410a68 --- /dev/null +++ b/crates/rome_js_parser/test_data/inline/err/ts_instantiation_expressions_1.ts @@ -0,0 +1,24 @@ +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 +} 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 7f0e928501a5..2d41ee3a8e98 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 @@ -545,85 +545,544 @@ JsModule { }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@478..520 "const" [Newline("\n"), Comments("// Parsed as relation ..."), Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@478..523 "const" [Newline("\n"), Comments("// Parsed as instanti ..."), Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@520..523 "x2" [] [Whitespace(" ")], + name_token: IDENT@523..526 "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@526..528 "=" [] [Whitespace(" ")], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@528..529 "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@529..530 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsBooleanLiteralType { + literal: TRUE_KW@530..534 "true" [] [], + }, + ], + r_angle_token: R_ANGLE@534..535 ">" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@537..538 ";" [] [], + semicolon_token: missing (optional), + }, + JsExpressionStatement { + expression: JsBooleanLiteralExpression { + value_token: TRUE_KW@535..540 "true" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@540..541 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { - kind: CONST_KW@538..583 "const" [Newline("\n"), Comments("// Parsed as instanti ..."), Newline("\n")] [Whitespace(" ")], + kind: CONST_KW@541..586 "const" [Newline("\n"), Comments("// Parsed as instanti ..."), Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { - name_token: IDENT@583..586 "x3" [] [Whitespace(" ")], + name_token: IDENT@586..589 "x3" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { - eq_token: EQ@586..588 "=" [] [Whitespace(" ")], + eq_token: EQ@589..591 "=" [] [Whitespace(" ")], expression: TsInstantiationExpression { expression: JsIdentifierExpression { name: JsReferenceIdentifier { - value_token: IDENT@588..589 "f" [] [], + value_token: IDENT@591..592 "f" [] [], }, }, arguments: TsTypeArguments { - l_angle_token: L_ANGLE@589..590 "<" [] [], + l_angle_token: L_ANGLE@592..593 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsBooleanLiteralType { - literal: TRUE_KW@590..594 "true" [] [], + literal: TRUE_KW@593..597 "true" [] [], }, ], - r_angle_token: R_ANGLE@594..595 ">" [] [], + r_angle_token: R_ANGLE@597..598 ">" [] [], }, }, }, }, ], }, - semicolon_token: SEMICOLON@595..596 ";" [] [], + semicolon_token: SEMICOLON@598..599 ";" [] [], }, JsExpressionStatement { expression: JsBooleanLiteralExpression { - value_token: TRUE_KW@596..601 "true" [Newline("\n")] [], + value_token: TRUE_KW@599..604 "true" [Newline("\n")] [], + }, + semicolon_token: SEMICOLON@604..605 ";" [] [], + }, + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsParenthesizedExpression { + l_paren_token: L_PAREN@605..607 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@607..608 "f" [] [], + }, + }, + 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 ">" [] [], + }, + }, + r_paren_token: R_PAREN@611..612 ")" [] [], + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@612..613 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@613..614 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@614..615 ">" [] [], + }, + }, + semicolon_token: SEMICOLON@615..616 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsParenthesizedExpression { + l_paren_token: L_PAREN@616..618 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@618..619 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@619..620 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@620..621 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@621..622 ">" [] [], + }, + }, + r_paren_token: R_PAREN@622..623 ")" [] [], + }, + optional_chain_token: missing (optional), + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@623..624 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@624..625 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@625..626 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@626..627 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@627..628 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@628..629 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: TsInstantiationExpression { + expression: JsParenthesizedExpression { + l_paren_token: L_PAREN@629..631 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@631..632 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@632..633 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@633..634 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@634..635 ">" [] [], + }, + }, + r_paren_token: R_PAREN@635..636 ")" [] [], + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@636..637 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@637..638 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@638..639 ">" [] [], + }, + }, + optional_chain_token: QUESTIONDOT@639..641 "?." [] [], + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@641..642 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@642..643 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@643..644 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsParenthesizedExpression { + l_paren_token: L_PAREN@644..646 "(" [Newline("\n")] [], + expression: TsInstantiationExpression { + expression: JsStaticMemberExpression { + object: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@646..647 "a" [] [], + }, + }, + operator_token: QUESTIONDOT@647..649 "?." [] [], + member: JsName { + value_token: IDENT@649..650 "f" [] [], + }, + }, + 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 ">" [] [], + }, + }, + r_paren_token: R_PAREN@653..654 ")" [] [], + }, + optional_chain_token: missing (optional), + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@654..655 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@655..656 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@656..657 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@657..658 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@658..659 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@659..660 ";" [] [], + }, + JsExpressionStatement { + expression: JsNewExpression { + new_token: NEW_KW@660..665 "new" [Newline("\n")] [Whitespace(" ")], + callee: JsParenthesizedExpression { + l_paren_token: L_PAREN@665..666 "(" [] [], + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@666..667 "a" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@667..668 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@668..669 "T" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@669..670 ">" [] [], + }, + }, + r_paren_token: R_PAREN@670..671 ")" [] [], + }, + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@671..672 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@672..673 "K" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@673..674 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@674..675 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@675..676 ")" [] [], + }, }, - semicolon_token: SEMICOLON@601..602 ";" [] [], + semicolon_token: SEMICOLON@676..677 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@677..679 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@679..680 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@680..681 "<" [] [], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@681..682 "T" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: R_ANGLE@682..683 ">" [] [], + }, + parameters: JsParameters { + l_paren_token: L_PAREN@683..684 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@684..686 ")" [] [Whitespace(" ")], + }, + fat_arrow_token: FAT_ARROW@686..689 "=>" [] [Whitespace(" ")], + return_type: TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@689..690 "T" [] [], + }, + type_arguments: missing (optional), + }, + }, + ], + r_angle_token: R_ANGLE@690..691 ">" [] [], + }, + }, + optional_chain_token: QUESTIONDOT@691..693 "?." [] [], + type_arguments: missing (optional), + arguments: JsCallArguments { + l_paren_token: L_PAREN@693..694 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@694..695 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@695..696 ";" [] [], + }, + JsExpressionStatement { + expression: JsCallExpression { + callee: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@696..698 "f" [Newline("\n")] [], + }, + }, + optional_chain_token: QUESTIONDOT@698..700 "?." [] [], + type_arguments: TsTypeArguments { + l_angle_token: L_ANGLE@700..701 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsFunctionType { + type_parameters: TsTypeParameters { + l_angle_token: L_ANGLE@701..702 "<" [] [], + items: TsTypeParameterList [ + TsTypeParameter { + name: TsTypeParameterName { + ident_token: IDENT@702..703 "T" [] [], + }, + constraint: missing (optional), + default: missing (optional), + }, + ], + r_angle_token: R_ANGLE@703..704 ">" [] [], + }, + parameters: JsParameters { + l_paren_token: L_PAREN@704..705 "(" [] [], + items: JsParameterList [], + r_paren_token: R_PAREN@705..707 ")" [] [Whitespace(" ")], + }, + fat_arrow_token: FAT_ARROW@707..710 "=>" [] [Whitespace(" ")], + return_type: TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@710..711 "T" [] [], + }, + type_arguments: missing (optional), + }, + }, + ], + r_angle_token: R_ANGLE@711..712 ">" [] [], + }, + arguments: JsCallArguments { + l_paren_token: L_PAREN@712..713 "(" [] [], + args: JsCallArgumentList [], + r_paren_token: R_PAREN@713..714 ")" [] [], + }, + }, + semicolon_token: SEMICOLON@714..715 ";" [] [], + }, + JsExpressionStatement { + expression: JsConditionalExpression { + test: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@715..717 "f" [Newline("\n")] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@717..718 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@718..719 "x" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@719..721 ">" [] [Whitespace(" ")], + }, + }, + question_mark_token: QUESTION@721..723 "?" [] [Whitespace(" ")], + consequent: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@723..724 "g" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@724..725 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@725..726 "y" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@726..728 ">" [] [Whitespace(" ")], + }, + }, + colon_token: COLON@728..730 ":" [] [Whitespace(" ")], + alternate: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@730..731 "h" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@731..732 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@732..733 "z" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@733..734 ">" [] [], + }, + }, + }, + semicolon_token: SEMICOLON@734..735 ";" [] [], + }, + JsExpressionStatement { + expression: JsArrayExpression { + l_brack_token: L_BRACK@735..737 "[" [Newline("\n")] [], + elements: JsArrayElementList [ + TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@737..738 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@738..739 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@739..740 "x" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@740..741 ">" [] [], + }, + }, + ], + r_brack_token: R_BRACK@741..742 "]" [] [], + }, + semicolon_token: SEMICOLON@742..743 ";" [] [], + }, + JsBlockStatement { + l_curly_token: L_CURLY@743..746 "{" [Newline("\n")] [Whitespace(" ")], + statements: JsStatementList [ + JsExpressionStatement { + expression: TsInstantiationExpression { + expression: JsIdentifierExpression { + name: JsReferenceIdentifier { + value_token: IDENT@746..747 "f" [] [], + }, + }, + arguments: TsTypeArguments { + l_angle_token: L_ANGLE@747..748 "<" [] [], + ts_type_argument_list: TsTypeArgumentList [ + TsReferenceType { + name: JsReferenceIdentifier { + value_token: IDENT@748..749 "x" [] [], + }, + type_arguments: missing (optional), + }, + ], + r_angle_token: R_ANGLE@749..751 ">" [] [Whitespace(" ")], + }, + }, + semicolon_token: missing (optional), + }, + ], + r_curly_token: R_CURLY@751..752 "}" [] [], }, ], - eof_token: EOF@602..603 "" [Newline("\n")] [], + eof_token: EOF@752..753 "" [Newline("\n")] [], } -0: JS_MODULE@0..603 +0: JS_MODULE@0..753 0: (empty) 1: JS_DIRECTIVE_LIST@0..0 - 2: JS_MODULE_ITEM_LIST@0..602 + 2: JS_MODULE_ITEM_LIST@0..752 0: JS_VARIABLE_STATEMENT@0..20 0: JS_VARIABLE_DECLARATION@0..19 0: LET_KW@0..4 "let" [] [Whitespace(" ")] @@ -977,51 +1436,357 @@ JsModule { 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(" ")] + 13: JS_VARIABLE_STATEMENT@478..535 + 0: JS_VARIABLE_DECLARATION@478..535 + 0: CONST_KW@478..523 "const" [Newline("\n"), Comments("// Parsed as instanti ..."), Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@523..535 + 0: JS_VARIABLE_DECLARATOR@523..535 + 0: JS_IDENTIFIER_BINDING@523..526 + 0: IDENT@523..526 "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@526..535 + 0: EQ@526..528 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@528..535 + 0: JS_IDENTIFIER_EXPRESSION@528..529 + 0: JS_REFERENCE_IDENTIFIER@528..529 + 0: IDENT@528..529 "f" [] [] + 1: TS_TYPE_ARGUMENTS@529..535 + 0: L_ANGLE@529..530 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@530..534 + 0: TS_BOOLEAN_LITERAL_TYPE@530..534 + 0: TRUE_KW@530..534 "true" [] [] + 2: R_ANGLE@534..535 ">" [] [] + 1: (empty) + 14: JS_EXPRESSION_STATEMENT@535..541 + 0: JS_BOOLEAN_LITERAL_EXPRESSION@535..540 + 0: TRUE_KW@535..540 "true" [Newline("\n")] [] + 1: SEMICOLON@540..541 ";" [] [] + 15: JS_VARIABLE_STATEMENT@541..599 + 0: JS_VARIABLE_DECLARATION@541..598 + 0: CONST_KW@541..586 "const" [Newline("\n"), Comments("// Parsed as instanti ..."), Newline("\n")] [Whitespace(" ")] + 1: JS_VARIABLE_DECLARATOR_LIST@586..598 + 0: JS_VARIABLE_DECLARATOR@586..598 + 0: JS_IDENTIFIER_BINDING@586..589 + 0: IDENT@586..589 "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@589..598 + 0: EQ@589..591 "=" [] [Whitespace(" ")] + 1: TS_INSTANTIATION_EXPRESSION@591..598 + 0: JS_IDENTIFIER_EXPRESSION@591..592 + 0: JS_REFERENCE_IDENTIFIER@591..592 + 0: IDENT@591..592 "f" [] [] + 1: TS_TYPE_ARGUMENTS@592..598 + 0: L_ANGLE@592..593 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@593..597 + 0: TS_BOOLEAN_LITERAL_TYPE@593..597 + 0: TRUE_KW@593..597 "true" [] [] + 2: R_ANGLE@597..598 ">" [] [] + 1: SEMICOLON@598..599 ";" [] [] + 16: JS_EXPRESSION_STATEMENT@599..605 + 0: JS_BOOLEAN_LITERAL_EXPRESSION@599..604 + 0: TRUE_KW@599..604 "true" [Newline("\n")] [] + 1: SEMICOLON@604..605 ";" [] [] + 17: JS_EXPRESSION_STATEMENT@605..616 + 0: TS_INSTANTIATION_EXPRESSION@605..615 + 0: JS_PARENTHESIZED_EXPRESSION@605..612 + 0: L_PAREN@605..607 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@607..611 + 0: JS_IDENTIFIER_EXPRESSION@607..608 + 0: JS_REFERENCE_IDENTIFIER@607..608 + 0: IDENT@607..608 "f" [] [] + 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 ">" [] [] + 2: R_PAREN@611..612 ")" [] [] + 1: TS_TYPE_ARGUMENTS@612..615 + 0: L_ANGLE@612..613 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@613..614 + 0: TS_REFERENCE_TYPE@613..614 + 0: JS_REFERENCE_IDENTIFIER@613..614 + 0: IDENT@613..614 "K" [] [] + 1: (empty) + 2: R_ANGLE@614..615 ">" [] [] + 1: SEMICOLON@615..616 ";" [] [] + 18: JS_EXPRESSION_STATEMENT@616..629 + 0: JS_CALL_EXPRESSION@616..628 + 0: JS_PARENTHESIZED_EXPRESSION@616..623 + 0: L_PAREN@616..618 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@618..622 + 0: JS_IDENTIFIER_EXPRESSION@618..619 + 0: JS_REFERENCE_IDENTIFIER@618..619 + 0: IDENT@618..619 "f" [] [] + 1: TS_TYPE_ARGUMENTS@619..622 + 0: L_ANGLE@619..620 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@620..621 + 0: TS_REFERENCE_TYPE@620..621 + 0: JS_REFERENCE_IDENTIFIER@620..621 + 0: IDENT@620..621 "T" [] [] + 1: (empty) + 2: R_ANGLE@621..622 ">" [] [] + 2: R_PAREN@622..623 ")" [] [] + 1: (empty) + 2: TS_TYPE_ARGUMENTS@623..626 + 0: L_ANGLE@623..624 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@624..625 + 0: TS_REFERENCE_TYPE@624..625 + 0: JS_REFERENCE_IDENTIFIER@624..625 + 0: IDENT@624..625 "K" [] [] + 1: (empty) + 2: R_ANGLE@625..626 ">" [] [] + 3: JS_CALL_ARGUMENTS@626..628 + 0: L_PAREN@626..627 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@627..627 + 2: R_PAREN@627..628 ")" [] [] + 1: SEMICOLON@628..629 ";" [] [] + 19: JS_EXPRESSION_STATEMENT@629..644 + 0: JS_CALL_EXPRESSION@629..643 + 0: TS_INSTANTIATION_EXPRESSION@629..639 + 0: JS_PARENTHESIZED_EXPRESSION@629..636 + 0: L_PAREN@629..631 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@631..635 + 0: JS_IDENTIFIER_EXPRESSION@631..632 + 0: JS_REFERENCE_IDENTIFIER@631..632 + 0: IDENT@631..632 "f" [] [] + 1: TS_TYPE_ARGUMENTS@632..635 + 0: L_ANGLE@632..633 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@633..634 + 0: TS_REFERENCE_TYPE@633..634 + 0: JS_REFERENCE_IDENTIFIER@633..634 + 0: IDENT@633..634 "T" [] [] + 1: (empty) + 2: R_ANGLE@634..635 ">" [] [] + 2: R_PAREN@635..636 ")" [] [] + 1: TS_TYPE_ARGUMENTS@636..639 + 0: L_ANGLE@636..637 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@637..638 + 0: TS_REFERENCE_TYPE@637..638 + 0: JS_REFERENCE_IDENTIFIER@637..638 + 0: IDENT@637..638 "K" [] [] + 1: (empty) + 2: R_ANGLE@638..639 ">" [] [] + 1: QUESTIONDOT@639..641 "?." [] [] + 2: (empty) + 3: JS_CALL_ARGUMENTS@641..643 + 0: L_PAREN@641..642 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@642..642 + 2: R_PAREN@642..643 ")" [] [] + 1: SEMICOLON@643..644 ";" [] [] + 20: JS_EXPRESSION_STATEMENT@644..660 + 0: JS_CALL_EXPRESSION@644..659 + 0: JS_PARENTHESIZED_EXPRESSION@644..654 + 0: L_PAREN@644..646 "(" [Newline("\n")] [] + 1: TS_INSTANTIATION_EXPRESSION@646..653 + 0: JS_STATIC_MEMBER_EXPRESSION@646..650 + 0: JS_IDENTIFIER_EXPRESSION@646..647 + 0: JS_REFERENCE_IDENTIFIER@646..647 + 0: IDENT@646..647 "a" [] [] + 1: QUESTIONDOT@647..649 "?." [] [] + 2: JS_NAME@649..650 + 0: IDENT@649..650 "f" [] [] + 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 ">" [] [] + 2: R_PAREN@653..654 ")" [] [] + 1: (empty) + 2: TS_TYPE_ARGUMENTS@654..657 + 0: L_ANGLE@654..655 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@655..656 + 0: TS_REFERENCE_TYPE@655..656 + 0: JS_REFERENCE_IDENTIFIER@655..656 + 0: IDENT@655..656 "K" [] [] + 1: (empty) + 2: R_ANGLE@656..657 ">" [] [] + 3: JS_CALL_ARGUMENTS@657..659 + 0: L_PAREN@657..658 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@658..658 + 2: R_PAREN@658..659 ")" [] [] + 1: SEMICOLON@659..660 ";" [] [] + 21: JS_EXPRESSION_STATEMENT@660..677 + 0: JS_NEW_EXPRESSION@660..676 + 0: NEW_KW@660..665 "new" [Newline("\n")] [Whitespace(" ")] + 1: JS_PARENTHESIZED_EXPRESSION@665..671 + 0: L_PAREN@665..666 "(" [] [] + 1: TS_INSTANTIATION_EXPRESSION@666..670 + 0: JS_IDENTIFIER_EXPRESSION@666..667 + 0: JS_REFERENCE_IDENTIFIER@666..667 + 0: IDENT@666..667 "a" [] [] + 1: TS_TYPE_ARGUMENTS@667..670 + 0: L_ANGLE@667..668 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@668..669 + 0: TS_REFERENCE_TYPE@668..669 + 0: JS_REFERENCE_IDENTIFIER@668..669 + 0: IDENT@668..669 "T" [] [] + 1: (empty) + 2: R_ANGLE@669..670 ">" [] [] + 2: R_PAREN@670..671 ")" [] [] + 2: TS_TYPE_ARGUMENTS@671..674 + 0: L_ANGLE@671..672 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@672..673 + 0: TS_REFERENCE_TYPE@672..673 + 0: JS_REFERENCE_IDENTIFIER@672..673 + 0: IDENT@672..673 "K" [] [] + 1: (empty) + 2: R_ANGLE@673..674 ">" [] [] + 3: JS_CALL_ARGUMENTS@674..676 + 0: L_PAREN@674..675 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@675..675 + 2: R_PAREN@675..676 ")" [] [] + 1: SEMICOLON@676..677 ";" [] [] + 22: JS_EXPRESSION_STATEMENT@677..696 + 0: JS_CALL_EXPRESSION@677..695 + 0: TS_INSTANTIATION_EXPRESSION@677..691 + 0: JS_IDENTIFIER_EXPRESSION@677..679 + 0: JS_REFERENCE_IDENTIFIER@677..679 + 0: IDENT@677..679 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@679..691 + 0: L_ANGLE@679..680 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@680..690 + 0: TS_FUNCTION_TYPE@680..690 + 0: TS_TYPE_PARAMETERS@680..683 + 0: L_ANGLE@680..681 "<" [] [] + 1: TS_TYPE_PARAMETER_LIST@681..682 + 0: TS_TYPE_PARAMETER@681..682 + 0: TS_TYPE_PARAMETER_NAME@681..682 + 0: IDENT@681..682 "T" [] [] + 1: (empty) + 2: (empty) + 2: R_ANGLE@682..683 ">" [] [] + 1: JS_PARAMETERS@683..686 + 0: L_PAREN@683..684 "(" [] [] + 1: JS_PARAMETER_LIST@684..684 + 2: R_PAREN@684..686 ")" [] [Whitespace(" ")] + 2: FAT_ARROW@686..689 "=>" [] [Whitespace(" ")] + 3: TS_REFERENCE_TYPE@689..690 + 0: JS_REFERENCE_IDENTIFIER@689..690 + 0: IDENT@689..690 "T" [] [] + 1: (empty) + 2: R_ANGLE@690..691 ">" [] [] + 1: QUESTIONDOT@691..693 "?." [] [] + 2: (empty) + 3: JS_CALL_ARGUMENTS@693..695 + 0: L_PAREN@693..694 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@694..694 + 2: R_PAREN@694..695 ")" [] [] + 1: SEMICOLON@695..696 ";" [] [] + 23: JS_EXPRESSION_STATEMENT@696..715 + 0: JS_CALL_EXPRESSION@696..714 + 0: JS_IDENTIFIER_EXPRESSION@696..698 + 0: JS_REFERENCE_IDENTIFIER@696..698 + 0: IDENT@696..698 "f" [Newline("\n")] [] + 1: QUESTIONDOT@698..700 "?." [] [] + 2: TS_TYPE_ARGUMENTS@700..712 + 0: L_ANGLE@700..701 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@701..711 + 0: TS_FUNCTION_TYPE@701..711 + 0: TS_TYPE_PARAMETERS@701..704 + 0: L_ANGLE@701..702 "<" [] [] + 1: TS_TYPE_PARAMETER_LIST@702..703 + 0: TS_TYPE_PARAMETER@702..703 + 0: TS_TYPE_PARAMETER_NAME@702..703 + 0: IDENT@702..703 "T" [] [] + 1: (empty) + 2: (empty) + 2: R_ANGLE@703..704 ">" [] [] + 1: JS_PARAMETERS@704..707 + 0: L_PAREN@704..705 "(" [] [] + 1: JS_PARAMETER_LIST@705..705 + 2: R_PAREN@705..707 ")" [] [Whitespace(" ")] + 2: FAT_ARROW@707..710 "=>" [] [Whitespace(" ")] + 3: TS_REFERENCE_TYPE@710..711 + 0: JS_REFERENCE_IDENTIFIER@710..711 + 0: IDENT@710..711 "T" [] [] + 1: (empty) + 2: R_ANGLE@711..712 ">" [] [] + 3: JS_CALL_ARGUMENTS@712..714 + 0: L_PAREN@712..713 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@713..713 + 2: R_PAREN@713..714 ")" [] [] + 1: SEMICOLON@714..715 ";" [] [] + 24: JS_EXPRESSION_STATEMENT@715..735 + 0: JS_CONDITIONAL_EXPRESSION@715..734 + 0: TS_INSTANTIATION_EXPRESSION@715..721 + 0: JS_IDENTIFIER_EXPRESSION@715..717 + 0: JS_REFERENCE_IDENTIFIER@715..717 + 0: IDENT@715..717 "f" [Newline("\n")] [] + 1: TS_TYPE_ARGUMENTS@717..721 + 0: L_ANGLE@717..718 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@718..719 + 0: TS_REFERENCE_TYPE@718..719 + 0: JS_REFERENCE_IDENTIFIER@718..719 + 0: IDENT@718..719 "x" [] [] + 1: (empty) + 2: R_ANGLE@719..721 ">" [] [Whitespace(" ")] + 1: QUESTION@721..723 "?" [] [Whitespace(" ")] + 2: TS_INSTANTIATION_EXPRESSION@723..728 + 0: JS_IDENTIFIER_EXPRESSION@723..724 + 0: JS_REFERENCE_IDENTIFIER@723..724 + 0: IDENT@723..724 "g" [] [] + 1: TS_TYPE_ARGUMENTS@724..728 + 0: L_ANGLE@724..725 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@725..726 + 0: TS_REFERENCE_TYPE@725..726 + 0: JS_REFERENCE_IDENTIFIER@725..726 + 0: IDENT@725..726 "y" [] [] + 1: (empty) + 2: R_ANGLE@726..728 ">" [] [Whitespace(" ")] + 3: COLON@728..730 ":" [] [Whitespace(" ")] + 4: TS_INSTANTIATION_EXPRESSION@730..734 + 0: JS_IDENTIFIER_EXPRESSION@730..731 + 0: JS_REFERENCE_IDENTIFIER@730..731 + 0: IDENT@730..731 "h" [] [] + 1: TS_TYPE_ARGUMENTS@731..734 + 0: L_ANGLE@731..732 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@732..733 + 0: TS_REFERENCE_TYPE@732..733 + 0: JS_REFERENCE_IDENTIFIER@732..733 + 0: IDENT@732..733 "z" [] [] + 1: (empty) + 2: R_ANGLE@733..734 ">" [] [] + 1: SEMICOLON@734..735 ";" [] [] + 25: JS_EXPRESSION_STATEMENT@735..743 + 0: JS_ARRAY_EXPRESSION@735..742 + 0: L_BRACK@735..737 "[" [Newline("\n")] [] + 1: JS_ARRAY_ELEMENT_LIST@737..741 + 0: TS_INSTANTIATION_EXPRESSION@737..741 + 0: JS_IDENTIFIER_EXPRESSION@737..738 + 0: JS_REFERENCE_IDENTIFIER@737..738 + 0: IDENT@737..738 "f" [] [] + 1: TS_TYPE_ARGUMENTS@738..741 + 0: L_ANGLE@738..739 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@739..740 + 0: TS_REFERENCE_TYPE@739..740 + 0: JS_REFERENCE_IDENTIFIER@739..740 + 0: IDENT@739..740 "x" [] [] + 1: (empty) + 2: R_ANGLE@740..741 ">" [] [] + 2: R_BRACK@741..742 "]" [] [] + 1: SEMICOLON@742..743 ";" [] [] + 26: JS_BLOCK_STATEMENT@743..752 + 0: L_CURLY@743..746 "{" [Newline("\n")] [Whitespace(" ")] + 1: JS_STATEMENT_LIST@746..751 + 0: JS_EXPRESSION_STATEMENT@746..751 + 0: TS_INSTANTIATION_EXPRESSION@746..751 + 0: JS_IDENTIFIER_EXPRESSION@746..747 + 0: JS_REFERENCE_IDENTIFIER@746..747 + 0: IDENT@746..747 "f" [] [] + 1: TS_TYPE_ARGUMENTS@747..751 + 0: L_ANGLE@747..748 "<" [] [] + 1: TS_TYPE_ARGUMENT_LIST@748..749 + 0: TS_REFERENCE_TYPE@748..749 + 0: JS_REFERENCE_IDENTIFIER@748..749 + 0: IDENT@748..749 "x" [] [] + 1: (empty) + 2: R_ANGLE@749..751 ">" [] [Whitespace(" ")] + 1: (empty) + 2: R_CURLY@751..752 "}" [] [] + 3: EOF@752..753 "" [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 74af27aff2d1..50c06839738d 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 @@ -12,9 +12,19 @@ const b3 = f?.(); const b4 = f?.(); // Type Error, expected no type arguments const x1 = f (true); -// Parsed as relational expression +// Parsed as instantiation 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 000000000000..f20566f7e2e3 --- /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 000000000000..b4a2006a9a67 --- /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 000000000000..888ae3749b5d --- /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 000000000000..210307e1a9de --- /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 000000000000..cf669b6ca79d --- /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 000000000000..a7571c9c99d4 --- /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");