JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsLabeledStatement {
label: JsLabel {
value_token: IDENT@0..6 "label1" [] [],
},
colon_token: COLON@6..8 ":" [] [Whitespace(" ")],
body: JsBlockStatement {
l_curly_token: L_CURLY@8..9 "{" [] [],
statements: JsStatementList [
JsLabeledStatement {
label: JsLabel {
value_token: IDENT@9..18 "label2" [Newline("\n"), Whitespace(" ")] [],
},
colon_token: COLON@18..20 ":" [] [Whitespace(" ")],
body: JsBlockStatement {
l_curly_token: L_CURLY@20..21 "{" [] [],
statements: JsStatementList [
JsLabeledStatement {
label: JsLabel {
value_token: IDENT@21..32 "label1" [Newline("\n"), Whitespace(" ")] [],
},
colon_token: COLON@32..34 ":" [] [Whitespace(" ")],
body: JsBlockStatement {
l_curly_token: L_CURLY@34..35 "{" [] [],
statements: JsStatementList [],
r_curly_token: R_CURLY@35..36 "}" [] [],
},
},
],
r_curly_token: R_CURLY@36..40 "}" [Newline("\n"), Whitespace(" ")] [],
},
},
],
r_curly_token: R_CURLY@40..42 "}" [Newline("\n")] [],
},
},
],
eof_token: EOF@42..43 "" [Newline("\n")] [],
}
0: JS_MODULE@0..43
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..42
0: JS_LABELED_STATEMENT@0..42
0: JS_LABEL@0..6
0: IDENT@0..6 "label1" [] []
1: COLON@6..8 ":" [] [Whitespace(" ")]
2: JS_BLOCK_STATEMENT@8..42
0: L_CURLY@8..9 "{" [] []
1: JS_STATEMENT_LIST@9..40
0: JS_LABELED_STATEMENT@9..40
0: JS_LABEL@9..18
0: IDENT@9..18 "label2" [Newline("\n"), Whitespace(" ")] []
1: COLON@18..20 ":" [] [Whitespace(" ")]
2: JS_BLOCK_STATEMENT@20..40
0: L_CURLY@20..21 "{" [] []
1: JS_STATEMENT_LIST@21..36
0: JS_LABELED_STATEMENT@21..36
0: JS_LABEL@21..32
0: IDENT@21..32 "label1" [Newline("\n"), Whitespace(" ")] []
1: COLON@32..34 ":" [] [Whitespace(" ")]
2: JS_BLOCK_STATEMENT@34..36
0: L_CURLY@34..35 "{" [] []
1: JS_STATEMENT_LIST@35..35
2: R_CURLY@35..36 "}" [] []
2: R_CURLY@36..40 "}" [Newline("\n"), Whitespace(" ")] []
2: R_CURLY@40..42 "}" [Newline("\n")] []
4: EOF@42..43 "" [Newline("\n")] []
--
double_label.js:3:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Duplicate statement labels are not allowed
1 │ label1: {
2 │ label2: {
> 3 │ label1: {}
│ ^^^^^^
4 │ }
5 │ }
i a second use of `label1` here is not allowed
1 │ label1: {
2 │ label2: {
> 3 │ label1: {}
│ ^^^^^^
4 │ }
5 │ }
i `label1` is first used as a label here
> 1 │ label1: {
│ ^^^^^^
2 │ label2: {
3 │ label1: {}
--
label1: {
label2: {
label1: {}
}
}