JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@0..3 "foo" [] [], }, }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@3..4 "(" [] [], args: JsCallArgumentList [ JsBinaryExpression { left: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@4..8 "foo" [] [Whitespace(" ")], }, }, operator_token: PLUS@8..9 "+" [] [], right: missing (required), }, ], r_paren_token: R_PAREN@9..10 ")" [] [], }, }, semicolon_token: SEMICOLON@10..11 ";" [] [], }, JsExpressionStatement { expression: JsBinaryExpression { left: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@11..16 "foo" [Newline("\n")] [Whitespace(" ")], }, }, operator_token: PLUS@16..18 "+" [] [Whitespace(" ")], right: JsBinaryExpression { left: missing (required), operator_token: STAR@18..20 "*" [] [Whitespace(" ")], right: JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@20..21 "2" [] [], }, }, }, semicolon_token: SEMICOLON@21..22 ";" [] [], }, JsExpressionStatement { expression: JsBinaryExpression { left: JsUnaryExpression { operator_token: BANG@22..24 "!" [Newline("\n")] [], argument: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@24..28 "foo" [] [Whitespace(" ")], }, }, }, operator_token: STAR@28..30 "*" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@30..33 "bar" [] [], }, }, }, semicolon_token: SEMICOLON@33..34 ";" [] [], }, ], eof_token: EOF@34..35 "" [Newline("\n")] [], } 0: JS_MODULE@0..35 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..34 0: JS_EXPRESSION_STATEMENT@0..11 0: JS_CALL_EXPRESSION@0..10 0: JS_IDENTIFIER_EXPRESSION@0..3 0: JS_REFERENCE_IDENTIFIER@0..3 0: IDENT@0..3 "foo" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@3..10 0: L_PAREN@3..4 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@4..9 0: JS_BINARY_EXPRESSION@4..9 0: JS_IDENTIFIER_EXPRESSION@4..8 0: JS_REFERENCE_IDENTIFIER@4..8 0: IDENT@4..8 "foo" [] [Whitespace(" ")] 1: PLUS@8..9 "+" [] [] 2: (empty) 2: R_PAREN@9..10 ")" [] [] 1: SEMICOLON@10..11 ";" [] [] 1: JS_EXPRESSION_STATEMENT@11..22 0: JS_BINARY_EXPRESSION@11..21 0: JS_IDENTIFIER_EXPRESSION@11..16 0: JS_REFERENCE_IDENTIFIER@11..16 0: IDENT@11..16 "foo" [Newline("\n")] [Whitespace(" ")] 1: PLUS@16..18 "+" [] [Whitespace(" ")] 2: JS_BINARY_EXPRESSION@18..21 0: (empty) 1: STAR@18..20 "*" [] [Whitespace(" ")] 2: JS_NUMBER_LITERAL_EXPRESSION@20..21 0: JS_NUMBER_LITERAL@20..21 "2" [] [] 1: SEMICOLON@21..22 ";" [] [] 2: JS_EXPRESSION_STATEMENT@22..34 0: JS_BINARY_EXPRESSION@22..33 0: JS_UNARY_EXPRESSION@22..28 0: BANG@22..24 "!" [Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@24..28 0: JS_REFERENCE_IDENTIFIER@24..28 0: IDENT@24..28 "foo" [] [Whitespace(" ")] 1: STAR@28..30 "*" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@30..33 0: JS_REFERENCE_IDENTIFIER@30..33 0: IDENT@30..33 "bar" [] [] 1: SEMICOLON@33..34 ";" [] [] 4: EOF@34..35 "" [Newline("\n")] [] -- binary_expressions_err.js:1:10 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected an expression but instead found ')'. > 1 │ foo(foo +); │ ^ 2 │ foo + * 2; 3 │ !foo * bar; i Expected an expression here. > 1 │ foo(foo +); │ ^ 2 │ foo + * 2; 3 │ !foo * bar; -- binary_expressions_err.js:2:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected an expression for the left hand side of the `*` operator. 1 │ foo(foo +); > 2 │ foo + * 2; │ ^ 3 │ !foo * bar; 4 │ i This operator requires a left hand side value -- foo(foo +); foo + * 2; !foo * bar;