JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { expression: JsAssignmentExpression { left: JsIdentifierAssignment { name_token: IDENT@0..4 "foo" [] [Whitespace(" ")], }, operator_token: PLUSEQ@4..7 "+=" [] [Whitespace(" ")], right: JsAssignmentExpression { left: JsIdentifierAssignment { name_token: IDENT@7..11 "bar" [] [Whitespace(" ")], }, operator_token: EQ@11..13 "=" [] [Whitespace(" ")], right: JsAssignmentExpression { left: JsIdentifierAssignment { name_token: IDENT@13..15 "b" [] [Whitespace(" ")], }, operator_token: QUESTION2EQ@15..19 "??=" [] [Whitespace(" ")], right: JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@19..20 "3" [] [], }, }, }, }, semicolon_token: SEMICOLON@20..21 ";" [] [], }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsStaticMemberAssignment { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@21..23 "a" [Newline("\n")] [], }, }, dot_token: DOT@23..24 "." [] [], member: JsName { value_token: IDENT@24..28 "foo" [] [Whitespace(" ")], }, }, operator_token: MINUSEQ@28..31 "-=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@31..34 "bar" [] [], }, }, }, semicolon_token: SEMICOLON@34..35 ";" [] [], }, JsExpressionStatement { expression: JsParenthesizedExpression { l_paren_token: L_PAREN@35..37 "(" [Newline("\n")] [], expression: JsAssignmentExpression { left: JsIdentifierAssignment { name_token: IDENT@37..41 "foo" [] [Whitespace(" ")], }, operator_token: EQ@41..43 "=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@43..46 "bar" [] [], }, }, }, r_paren_token: R_PAREN@46..47 ")" [] [], }, semicolon_token: SEMICOLON@47..48 ";" [] [], }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsParenthesizedAssignment { l_paren_token: L_PAREN@48..50 "(" [Newline("\n")] [], assignment: JsParenthesizedAssignment { l_paren_token: L_PAREN@50..51 "(" [] [], assignment: JsParenthesizedAssignment { l_paren_token: L_PAREN@51..52 "(" [] [], assignment: JsIdentifierAssignment { name_token: IDENT@52..55 "foo" [] [], }, r_paren_token: R_PAREN@55..56 ")" [] [], }, r_paren_token: R_PAREN@56..57 ")" [] [], }, r_paren_token: R_PAREN@57..59 ")" [] [Whitespace(" ")], }, operator_token: EQ@59..61 "=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@61..64 "bar" [] [], }, }, }, semicolon_token: SEMICOLON@64..65 ";" [] [], }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsComputedMemberAssignment { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@65..67 "a" [Newline("\n")] [], }, }, l_brack_token: L_BRACK@67..68 "[" [] [], member: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@68..74 "\"test\"" [] [], }, r_brack_token: R_BRACK@74..76 "]" [] [Whitespace(" ")], }, operator_token: EQ@76..78 "=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@78..81 "bar" [] [], }, }, }, semicolon_token: SEMICOLON@81..82 ";" [] [], }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsStaticMemberAssignment { object: JsCallExpression { callee: JsStaticMemberExpression { object: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@82..84 "a" [Newline("\n")] [], }, }, operator_token: DOT@84..85 "." [] [], member: JsName { value_token: IDENT@85..89 "call" [] [], }, }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@89..90 "(" [] [], args: JsCallArgumentList [], r_paren_token: R_PAREN@90..91 ")" [] [], }, }, operator_token: DOT@91..92 "." [] [], member: JsName { value_token: IDENT@92..97 "chain" [] [], }, }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@97..98 "(" [] [], args: JsCallArgumentList [], r_paren_token: R_PAREN@98..99 ")" [] [], }, }, dot_token: DOT@99..100 "." [] [], member: JsName { value_token: IDENT@100..107 "member" [] [Whitespace(" ")], }, }, operator_token: EQ@107..109 "=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@109..110 "x" [] [], }, }, }, semicolon_token: SEMICOLON@110..111 ";" [] [], }, JsExpressionStatement { expression: JsBinaryExpression { left: JsPreUpdateExpression { operator_token: PLUS2@111..114 "++" [Newline("\n")] [], operand: JsIdentifierAssignment { name_token: IDENT@114..120 "count" [] [Whitespace(" ")], }, }, operator_token: EQ3@120..124 "===" [] [Whitespace(" ")], right: JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@124..125 "3" [] [], }, }, semicolon_token: missing (optional), }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsComputedMemberAssignment { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@125..127 "a" [Newline("\n")] [], }, }, l_brack_token: L_BRACK@127..128 "[" [] [], member: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@128..131 "'b'" [] [], }, r_brack_token: R_BRACK@131..133 "]" [] [Whitespace(" ")], }, operator_token: EQ@133..135 "=" [] [Whitespace(" ")], right: JsAssignmentExpression { left: JsComputedMemberAssignment { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@135..136 "c" [] [], }, }, l_brack_token: L_BRACK@136..137 "[" [] [], member: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@137..138 "d" [] [], }, }, r_brack_token: R_BRACK@138..140 "]" [] [Whitespace(" ")], }, operator_token: EQ@140..142 "=" [] [Whitespace(" ")], right: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@142..148 "\"test\"" [] [], }, }, }, semicolon_token: missing (optional), }, ], eof_token: EOF@148..149 "" [Newline("\n")] [], } 0: JS_MODULE@0..149 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..148 0: JS_EXPRESSION_STATEMENT@0..21 0: JS_ASSIGNMENT_EXPRESSION@0..20 0: JS_IDENTIFIER_ASSIGNMENT@0..4 0: IDENT@0..4 "foo" [] [Whitespace(" ")] 1: PLUSEQ@4..7 "+=" [] [Whitespace(" ")] 2: JS_ASSIGNMENT_EXPRESSION@7..20 0: JS_IDENTIFIER_ASSIGNMENT@7..11 0: IDENT@7..11 "bar" [] [Whitespace(" ")] 1: EQ@11..13 "=" [] [Whitespace(" ")] 2: JS_ASSIGNMENT_EXPRESSION@13..20 0: JS_IDENTIFIER_ASSIGNMENT@13..15 0: IDENT@13..15 "b" [] [Whitespace(" ")] 1: QUESTION2EQ@15..19 "??=" [] [Whitespace(" ")] 2: JS_NUMBER_LITERAL_EXPRESSION@19..20 0: JS_NUMBER_LITERAL@19..20 "3" [] [] 1: SEMICOLON@20..21 ";" [] [] 1: JS_EXPRESSION_STATEMENT@21..35 0: JS_ASSIGNMENT_EXPRESSION@21..34 0: JS_STATIC_MEMBER_ASSIGNMENT@21..28 0: JS_IDENTIFIER_EXPRESSION@21..23 0: JS_REFERENCE_IDENTIFIER@21..23 0: IDENT@21..23 "a" [Newline("\n")] [] 1: DOT@23..24 "." [] [] 2: JS_NAME@24..28 0: IDENT@24..28 "foo" [] [Whitespace(" ")] 1: MINUSEQ@28..31 "-=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@31..34 0: JS_REFERENCE_IDENTIFIER@31..34 0: IDENT@31..34 "bar" [] [] 1: SEMICOLON@34..35 ";" [] [] 2: JS_EXPRESSION_STATEMENT@35..48 0: JS_PARENTHESIZED_EXPRESSION@35..47 0: L_PAREN@35..37 "(" [Newline("\n")] [] 1: JS_ASSIGNMENT_EXPRESSION@37..46 0: JS_IDENTIFIER_ASSIGNMENT@37..41 0: IDENT@37..41 "foo" [] [Whitespace(" ")] 1: EQ@41..43 "=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@43..46 0: JS_REFERENCE_IDENTIFIER@43..46 0: IDENT@43..46 "bar" [] [] 2: R_PAREN@46..47 ")" [] [] 1: SEMICOLON@47..48 ";" [] [] 3: JS_EXPRESSION_STATEMENT@48..65 0: JS_ASSIGNMENT_EXPRESSION@48..64 0: JS_PARENTHESIZED_ASSIGNMENT@48..59 0: L_PAREN@48..50 "(" [Newline("\n")] [] 1: JS_PARENTHESIZED_ASSIGNMENT@50..57 0: L_PAREN@50..51 "(" [] [] 1: JS_PARENTHESIZED_ASSIGNMENT@51..56 0: L_PAREN@51..52 "(" [] [] 1: JS_IDENTIFIER_ASSIGNMENT@52..55 0: IDENT@52..55 "foo" [] [] 2: R_PAREN@55..56 ")" [] [] 2: R_PAREN@56..57 ")" [] [] 2: R_PAREN@57..59 ")" [] [Whitespace(" ")] 1: EQ@59..61 "=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@61..64 0: JS_REFERENCE_IDENTIFIER@61..64 0: IDENT@61..64 "bar" [] [] 1: SEMICOLON@64..65 ";" [] [] 4: JS_EXPRESSION_STATEMENT@65..82 0: JS_ASSIGNMENT_EXPRESSION@65..81 0: JS_COMPUTED_MEMBER_ASSIGNMENT@65..76 0: JS_IDENTIFIER_EXPRESSION@65..67 0: JS_REFERENCE_IDENTIFIER@65..67 0: IDENT@65..67 "a" [Newline("\n")] [] 1: L_BRACK@67..68 "[" [] [] 2: JS_STRING_LITERAL_EXPRESSION@68..74 0: JS_STRING_LITERAL@68..74 "\"test\"" [] [] 3: R_BRACK@74..76 "]" [] [Whitespace(" ")] 1: EQ@76..78 "=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@78..81 0: JS_REFERENCE_IDENTIFIER@78..81 0: IDENT@78..81 "bar" [] [] 1: SEMICOLON@81..82 ";" [] [] 5: JS_EXPRESSION_STATEMENT@82..111 0: JS_ASSIGNMENT_EXPRESSION@82..110 0: JS_STATIC_MEMBER_ASSIGNMENT@82..107 0: JS_CALL_EXPRESSION@82..99 0: JS_STATIC_MEMBER_EXPRESSION@82..97 0: JS_CALL_EXPRESSION@82..91 0: JS_STATIC_MEMBER_EXPRESSION@82..89 0: JS_IDENTIFIER_EXPRESSION@82..84 0: JS_REFERENCE_IDENTIFIER@82..84 0: IDENT@82..84 "a" [Newline("\n")] [] 1: DOT@84..85 "." [] [] 2: JS_NAME@85..89 0: IDENT@85..89 "call" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@89..91 0: L_PAREN@89..90 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@90..90 2: R_PAREN@90..91 ")" [] [] 1: DOT@91..92 "." [] [] 2: JS_NAME@92..97 0: IDENT@92..97 "chain" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@97..99 0: L_PAREN@97..98 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@98..98 2: R_PAREN@98..99 ")" [] [] 1: DOT@99..100 "." [] [] 2: JS_NAME@100..107 0: IDENT@100..107 "member" [] [Whitespace(" ")] 1: EQ@107..109 "=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@109..110 0: JS_REFERENCE_IDENTIFIER@109..110 0: IDENT@109..110 "x" [] [] 1: SEMICOLON@110..111 ";" [] [] 6: JS_EXPRESSION_STATEMENT@111..125 0: JS_BINARY_EXPRESSION@111..125 0: JS_PRE_UPDATE_EXPRESSION@111..120 0: PLUS2@111..114 "++" [Newline("\n")] [] 1: JS_IDENTIFIER_ASSIGNMENT@114..120 0: IDENT@114..120 "count" [] [Whitespace(" ")] 1: EQ3@120..124 "===" [] [Whitespace(" ")] 2: JS_NUMBER_LITERAL_EXPRESSION@124..125 0: JS_NUMBER_LITERAL@124..125 "3" [] [] 1: (empty) 7: JS_EXPRESSION_STATEMENT@125..148 0: JS_ASSIGNMENT_EXPRESSION@125..148 0: JS_COMPUTED_MEMBER_ASSIGNMENT@125..133 0: JS_IDENTIFIER_EXPRESSION@125..127 0: JS_REFERENCE_IDENTIFIER@125..127 0: IDENT@125..127 "a" [Newline("\n")] [] 1: L_BRACK@127..128 "[" [] [] 2: JS_STRING_LITERAL_EXPRESSION@128..131 0: JS_STRING_LITERAL@128..131 "'b'" [] [] 3: R_BRACK@131..133 "]" [] [Whitespace(" ")] 1: EQ@133..135 "=" [] [Whitespace(" ")] 2: JS_ASSIGNMENT_EXPRESSION@135..148 0: JS_COMPUTED_MEMBER_ASSIGNMENT@135..140 0: JS_IDENTIFIER_EXPRESSION@135..136 0: JS_REFERENCE_IDENTIFIER@135..136 0: IDENT@135..136 "c" [] [] 1: L_BRACK@136..137 "[" [] [] 2: JS_IDENTIFIER_EXPRESSION@137..138 0: JS_REFERENCE_IDENTIFIER@137..138 0: IDENT@137..138 "d" [] [] 3: R_BRACK@138..140 "]" [] [Whitespace(" ")] 1: EQ@140..142 "=" [] [Whitespace(" ")] 2: JS_STRING_LITERAL_EXPRESSION@142..148 0: JS_STRING_LITERAL@142..148 "\"test\"" [] [] 1: (empty) 4: EOF@148..149 "" [Newline("\n")] []