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;