JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: USING_KW@0..6 "using" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@6..7 "a" [] [],
},
variable_annotation: missing (optional),
initializer: missing (optional),
},
],
},
semicolon_token: SEMICOLON@7..8 ";" [] [],
},
JsExpressionStatement {
expression: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@8..15 "using" [Newline("\n")] [Whitespace(" ")],
},
},
semicolon_token: missing (optional),
},
JsBlockStatement {
l_curly_token: L_CURLY@15..16 "{" [] [],
statements: JsStatementList [
JsExpressionStatement {
expression: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@16..17 "b" [] [],
},
},
semicolon_token: missing (optional),
},
],
r_curly_token: R_CURLY@17..18 "}" [] [],
},
JsEmptyStatement {
semicolon_token: SEMICOLON@18..19 ";" [] [],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: USING_KW@19..26 "using" [Newline("\n")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@26..28 "c" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@28..30 "=" [] [Whitespace(" ")],
expression: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@30..31 "d" [] [],
},
},
},
},
COMMA@31..33 "," [] [Whitespace(" ")],
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@33..34 "e" [] [],
},
variable_annotation: missing (optional),
initializer: missing (optional),
},
],
},
semicolon_token: SEMICOLON@34..35 ";" [] [],
},
JsExport {
decorators: JsDecoratorList [],
export_token: EXPORT_KW@35..43 "export" [Newline("\n")] [Whitespace(" ")],
export_clause: missing (required),
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: USING_KW@43..49 "using" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@49..51 "m" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@51..53 "=" [] [Whitespace(" ")],
expression: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@53..54 "n" [] [],
},
},
},
},
],
},
semicolon_token: SEMICOLON@54..55 ";" [] [],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: AWAIT_KW@55..62 "await" [Newline("\n")] [Whitespace(" ")],
kind: USING_KW@62..68 "using" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@68..69 "f" [] [],
},
variable_annotation: missing (optional),
initializer: missing (optional),
},
],
},
semicolon_token: SEMICOLON@69..70 ";" [] [],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: AWAIT_KW@70..77 "await" [Newline("\n")] [Whitespace(" ")],
kind: USING_KW@77..83 "using" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@83..85 "g" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@85..87 "=" [] [Whitespace(" ")],
expression: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@87..88 "h" [] [],
},
},
},
},
COMMA@88..90 "," [] [Whitespace(" ")],
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@90..91 "j" [] [],
},
variable_annotation: missing (optional),
initializer: missing (optional),
},
],
},
semicolon_token: SEMICOLON@91..92 ";" [] [],
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsBogusAssignment {
items: [
AWAIT_KW@92..99 "await" [Newline("\n")] [Whitespace(" ")],
JsComputedMemberExpression {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@99..105 "using" [] [Whitespace(" ")],
},
},
optional_chain_token: missing (optional),
l_brack_token: L_BRACK@105..106 "[" [] [],
member: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@106..107 "o" [] [],
},
},
r_brack_token: R_BRACK@107..109 "]" [] [Whitespace(" ")],
},
],
},
operator_token: EQ@109..111 "=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@111..112 "p" [] [],
},
},
},
semicolon_token: SEMICOLON@112..113 ";" [] [],
},
JsExport {
decorators: JsDecoratorList [],
export_token: EXPORT_KW@113..121 "export" [Newline("\n")] [Whitespace(" ")],
export_clause: missing (required),
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: AWAIT_KW@121..127 "await" [] [Whitespace(" ")],
kind: USING_KW@127..133 "using" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@133..135 "q" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@135..137 "=" [] [Whitespace(" ")],
expression: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@137..138 "r" [] [],
},
},
},
},
],
},
semicolon_token: SEMICOLON@138..139 ";" [] [],
},
JsExpressionStatement {
expression: JsAwaitExpression {
await_token: AWAIT_KW@139..146 "await" [Newline("\n")] [Whitespace(" ")],
argument: JsBogusExpression {
items: [
JsBogus {
items: [
IDENT@146..150 "let" [] [Whitespace(" ")],
],
},
],
},
},
semicolon_token: missing (optional),
},
JsExpressionStatement {
expression: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@150..151 "s" [] [],
},
},
semicolon_token: SEMICOLON@151..152 ";" [] [],
},
JsExpressionStatement {
expression: JsAwaitExpression {
await_token: AWAIT_KW@152..159 "await" [Newline("\n")] [Whitespace(" ")],
argument: missing (required),
},
semicolon_token: missing (optional),
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: CONST_KW@159..165 "const" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@165..167 "t" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@167..169 "=" [] [Whitespace(" ")],
expression: JsNumberLiteralExpression {
value_token: JS_NUMBER_LITERAL@169..170 "1" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@170..171 ";" [] [],
},
],
eof_token: EOF@171..172 "" [Newline("\n")] [],
}
0: JS_MODULE@0..172
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..171
0: JS_VARIABLE_STATEMENT@0..8
0: JS_VARIABLE_DECLARATION@0..7
0: (empty)
1: USING_KW@0..6 "using" [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@6..7
0: JS_VARIABLE_DECLARATOR@6..7
0: JS_IDENTIFIER_BINDING@6..7
0: IDENT@6..7 "a" [] []
1: (empty)
2: (empty)
1: SEMICOLON@7..8 ";" [] []
1: JS_EXPRESSION_STATEMENT@8..15
0: JS_IDENTIFIER_EXPRESSION@8..15
0: JS_REFERENCE_IDENTIFIER@8..15
0: IDENT@8..15 "using" [Newline("\n")] [Whitespace(" ")]
1: (empty)
2: JS_BLOCK_STATEMENT@15..18
0: L_CURLY@15..16 "{" [] []
1: JS_STATEMENT_LIST@16..17
0: JS_EXPRESSION_STATEMENT@16..17
0: JS_IDENTIFIER_EXPRESSION@16..17
0: JS_REFERENCE_IDENTIFIER@16..17
0: IDENT@16..17 "b" [] []
1: (empty)
2: R_CURLY@17..18 "}" [] []
3: JS_EMPTY_STATEMENT@18..19
0: SEMICOLON@18..19 ";" [] []
4: JS_VARIABLE_STATEMENT@19..35
0: JS_VARIABLE_DECLARATION@19..34
0: (empty)
1: USING_KW@19..26 "using" [Newline("\n")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@26..34
0: JS_VARIABLE_DECLARATOR@26..31
0: JS_IDENTIFIER_BINDING@26..28
0: IDENT@26..28 "c" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@28..31
0: EQ@28..30 "=" [] [Whitespace(" ")]
1: JS_IDENTIFIER_EXPRESSION@30..31
0: JS_REFERENCE_IDENTIFIER@30..31
0: IDENT@30..31 "d" [] []
1: COMMA@31..33 "," [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR@33..34
0: JS_IDENTIFIER_BINDING@33..34
0: IDENT@33..34 "e" [] []
1: (empty)
2: (empty)
1: SEMICOLON@34..35 ";" [] []
5: JS_EXPORT@35..43
0: JS_DECORATOR_LIST@35..35
1: EXPORT_KW@35..43 "export" [Newline("\n")] [Whitespace(" ")]
2: (empty)
6: JS_VARIABLE_STATEMENT@43..55
0: JS_VARIABLE_DECLARATION@43..54
0: (empty)
1: USING_KW@43..49 "using" [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@49..54
0: JS_VARIABLE_DECLARATOR@49..54
0: JS_IDENTIFIER_BINDING@49..51
0: IDENT@49..51 "m" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@51..54
0: EQ@51..53 "=" [] [Whitespace(" ")]
1: JS_IDENTIFIER_EXPRESSION@53..54
0: JS_REFERENCE_IDENTIFIER@53..54
0: IDENT@53..54 "n" [] []
1: SEMICOLON@54..55 ";" [] []
7: JS_VARIABLE_STATEMENT@55..70
0: JS_VARIABLE_DECLARATION@55..69
0: AWAIT_KW@55..62 "await" [Newline("\n")] [Whitespace(" ")]
1: USING_KW@62..68 "using" [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@68..69
0: JS_VARIABLE_DECLARATOR@68..69
0: JS_IDENTIFIER_BINDING@68..69
0: IDENT@68..69 "f" [] []
1: (empty)
2: (empty)
1: SEMICOLON@69..70 ";" [] []
8: JS_VARIABLE_STATEMENT@70..92
0: JS_VARIABLE_DECLARATION@70..91
0: AWAIT_KW@70..77 "await" [Newline("\n")] [Whitespace(" ")]
1: USING_KW@77..83 "using" [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@83..91
0: JS_VARIABLE_DECLARATOR@83..88
0: JS_IDENTIFIER_BINDING@83..85
0: IDENT@83..85 "g" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@85..88
0: EQ@85..87 "=" [] [Whitespace(" ")]
1: JS_IDENTIFIER_EXPRESSION@87..88
0: JS_REFERENCE_IDENTIFIER@87..88
0: IDENT@87..88 "h" [] []
1: COMMA@88..90 "," [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR@90..91
0: JS_IDENTIFIER_BINDING@90..91
0: IDENT@90..91 "j" [] []
1: (empty)
2: (empty)
1: SEMICOLON@91..92 ";" [] []
9: JS_EXPRESSION_STATEMENT@92..113
0: JS_ASSIGNMENT_EXPRESSION@92..112
0: JS_BOGUS_ASSIGNMENT@92..109
0: AWAIT_KW@92..99 "await" [Newline("\n")] [Whitespace(" ")]
1: JS_COMPUTED_MEMBER_EXPRESSION@99..109
0: JS_IDENTIFIER_EXPRESSION@99..105
0: JS_REFERENCE_IDENTIFIER@99..105
0: IDENT@99..105 "using" [] [Whitespace(" ")]
1: (empty)
2: L_BRACK@105..106 "[" [] []
3: JS_IDENTIFIER_EXPRESSION@106..107
0: JS_REFERENCE_IDENTIFIER@106..107
0: IDENT@106..107 "o" [] []
4: R_BRACK@107..109 "]" [] [Whitespace(" ")]
1: EQ@109..111 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@111..112
0: JS_REFERENCE_IDENTIFIER@111..112
0: IDENT@111..112 "p" [] []
1: SEMICOLON@112..113 ";" [] []
10: JS_EXPORT@113..121
0: JS_DECORATOR_LIST@113..113
1: EXPORT_KW@113..121 "export" [Newline("\n")] [Whitespace(" ")]
2: (empty)
11: JS_VARIABLE_STATEMENT@121..139
0: JS_VARIABLE_DECLARATION@121..138
0: AWAIT_KW@121..127 "await" [] [Whitespace(" ")]
1: USING_KW@127..133 "using" [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@133..138
0: JS_VARIABLE_DECLARATOR@133..138
0: JS_IDENTIFIER_BINDING@133..135
0: IDENT@133..135 "q" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@135..138
0: EQ@135..137 "=" [] [Whitespace(" ")]
1: JS_IDENTIFIER_EXPRESSION@137..138
0: JS_REFERENCE_IDENTIFIER@137..138
0: IDENT@137..138 "r" [] []
1: SEMICOLON@138..139 ";" [] []
12: JS_EXPRESSION_STATEMENT@139..150
0: JS_AWAIT_EXPRESSION@139..150
0: AWAIT_KW@139..146 "await" [Newline("\n")] [Whitespace(" ")]
1: JS_BOGUS_EXPRESSION@146..150
0: JS_BOGUS@146..150
0: IDENT@146..150 "let" [] [Whitespace(" ")]
1: (empty)
13: JS_EXPRESSION_STATEMENT@150..152
0: JS_IDENTIFIER_EXPRESSION@150..151
0: JS_REFERENCE_IDENTIFIER@150..151
0: IDENT@150..151 "s" [] []
1: SEMICOLON@151..152 ";" [] []
14: JS_EXPRESSION_STATEMENT@152..159
0: JS_AWAIT_EXPRESSION@152..159
0: AWAIT_KW@152..159 "await" [Newline("\n")] [Whitespace(" ")]
1: (empty)
1: (empty)
15: JS_VARIABLE_STATEMENT@159..171
0: JS_VARIABLE_DECLARATION@159..170
0: (empty)
1: CONST_KW@159..165 "const" [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@165..170
0: JS_VARIABLE_DECLARATOR@165..170
0: JS_IDENTIFIER_BINDING@165..167
0: IDENT@165..167 "t" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@167..170
0: EQ@167..169 "=" [] [Whitespace(" ")]
1: JS_NUMBER_LITERAL_EXPRESSION@169..170
0: JS_NUMBER_LITERAL@169..170 "1" [] []
1: SEMICOLON@170..171 ";" [] []
4: EOF@171..172 "" [Newline("\n")] []
--
using_declaration_statement_err.js:1:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Using declarations must have an initialized value.
> 1 │ using a;
│ ^
2 │ using {b};
3 │ using c = d, e;
i This variable needs to be initialized.
--
using_declaration_statement_err.js:2:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected a semicolon or an implicit semicolon after a statement, but found none
1 │ using a;
> 2 │ using {b};
│ ^
3 │ using c = d, e;
4 │ export using m = n;
i An explicit or implicit semicolon is expected here...
1 │ using a;
> 2 │ using {b};
│ ^
3 │ using c = d, e;
4 │ export using m = n;
i ...Which is required to end this statement
1 │ using a;
> 2 │ using {b};
│ ^^^^^^^
3 │ using c = d, e;
4 │ export using m = n;
--
using_declaration_statement_err.js:3:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Using declarations must have an initialized value.
1 │ using a;
2 │ using {b};
> 3 │ using c = d, e;
│ ^
4 │ export using m = n;
5 │ await using f;
i This variable needs to be initialized.
--
using_declaration_statement_err.js:4:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected a class, a function, or a variable declaration but instead found 'using'.
2 │ using {b};
3 │ using c = d, e;
> 4 │ export using m = n;
│ ^^^^^
5 │ await using f;
6 │ await using g = h, j;
i Expected a class, a function, or a variable declaration here.
2 │ using {b};
3 │ using c = d, e;
> 4 │ export using m = n;
│ ^^^^^
5 │ await using f;
6 │ await using g = h, j;
--
using_declaration_statement_err.js:5:13 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Using declarations must have an initialized value.
3 │ using c = d, e;
4 │ export using m = n;
> 5 │ await using f;
│ ^
6 │ await using g = h, j;
7 │ await using [o] = p;
i This variable needs to be initialized.
--
using_declaration_statement_err.js:6:20 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Using declarations must have an initialized value.
4 │ export using m = n;
5 │ await using f;
> 6 │ await using g = h, j;
│ ^
7 │ await using [o] = p;
8 │ export await using q = r;
i This variable needs to be initialized.
--
using_declaration_statement_err.js:7:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Invalid assignment to `await using [o]`
5 │ await using f;
6 │ await using g = h, j;
> 7 │ await using [o] = p;
│ ^^^^^^^^^^^^^^^
8 │ export await using q = r;
9 │ await let s;
i This expression cannot be assigned to
--
using_declaration_statement_err.js:8:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected a class, a function, or a variable declaration but instead found 'await'.
6 │ await using g = h, j;
7 │ await using [o] = p;
> 8 │ export await using q = r;
│ ^^^^^
9 │ await let s;
10 │ await const t = 1;
i Expected a class, a function, or a variable declaration here.
6 │ await using g = h, j;
7 │ await using [o] = p;
> 8 │ export await using q = r;
│ ^^^^^
9 │ await let s;
10 │ await const t = 1;
--
using_declaration_statement_err.js:9:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Illegal use of reserved keyword `let` as an identifier in strict mode
7 │ await using [o] = p;
8 │ export await using q = r;
> 9 │ await let s;
│ ^^^
10 │ await const t = 1;
11 │
--
using_declaration_statement_err.js:9:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected a semicolon or an implicit semicolon after a statement, but found none
7 │ await using [o] = p;
8 │ export await using q = r;
> 9 │ await let s;
│ ^
10 │ await const t = 1;
11 │
i An explicit or implicit semicolon is expected here...
7 │ await using [o] = p;
8 │ export await using q = r;
> 9 │ await let s;
│ ^
10 │ await const t = 1;
11 │
i ...Which is required to end this statement
7 │ await using [o] = p;
8 │ export await using q = r;
> 9 │ await let s;
│ ^^^^^^^^^^^
10 │ await const t = 1;
11 │
--
using_declaration_statement_err.js:10:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected an unary expression but instead found 'const'.
8 │ export await using q = r;
9 │ await let s;
> 10 │ await const t = 1;
│ ^^^^^
11 │
i Expected an unary expression here.
8 │ export await using q = r;
9 │ await let s;
> 10 │ await const t = 1;
│ ^^^^^
11 │
--
using a;
using {b};
using c = d, e;
export using m = n;
await using f;
await using g = h, j;
await using [o] = p;
export await using q = r;
await let s;
await const t = 1;