JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsFunctionDeclaration { async_token: missing (optional), function_token: FUNCTION_KW@0..9 "function" [] [Whitespace(" ")], star_token: missing (optional), id: JsIdentifierBinding { name_token: IDENT@9..12 "foo" [] [], }, type_parameters: missing (optional), parameters: JsParameters { l_paren_token: L_PAREN@12..13 "(" [] [], items: JsParameterList [], r_paren_token: R_PAREN@13..15 ")" [] [Whitespace(" ")], }, return_type_annotation: missing (optional), body: JsFunctionBody { l_curly_token: L_CURLY@15..17 "{" [] [Whitespace(" ")], directives: JsDirectiveList [], statements: JsStatementList [ JsBogusStatement { items: [ CONTINUE_KW@17..25 "continue" [] [], SEMICOLON@25..27 ";" [] [Whitespace(" ")], ], }, ], r_curly_token: R_CURLY@27..28 "}" [] [], }, }, JsWhileStatement { while_token: WHILE_KW@28..35 "while" [Newline("\n")] [Whitespace(" ")], l_paren_token: L_PAREN@35..36 "(" [] [], test: JsBooleanLiteralExpression { value_token: TRUE_KW@36..40 "true" [] [], }, r_paren_token: R_PAREN@40..42 ")" [] [Whitespace(" ")], body: JsBlockStatement { l_curly_token: L_CURLY@42..43 "{" [] [], statements: JsStatementList [ JsBogusStatement { items: [ CONTINUE_KW@43..55 "continue" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], JsLabel { value_token: IDENT@55..58 "foo" [] [], }, SEMICOLON@58..59 ";" [] [], ], }, ], r_curly_token: R_CURLY@59..61 "}" [Newline("\n")] [], }, }, JsLabeledStatement { label: JsLabel { value_token: IDENT@61..65 "foo" [Newline("\n")] [], }, colon_token: COLON@65..67 ":" [] [Whitespace(" ")], body: JsBlockStatement { l_curly_token: L_CURLY@67..68 "{" [] [], statements: JsStatementList [ JsBogusStatement { items: [ CONTINUE_KW@68..80 "continue" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], JsLabel { value_token: IDENT@80..83 "foo" [] [], }, SEMICOLON@83..84 ";" [] [], ], }, ], r_curly_token: R_CURLY@84..86 "}" [Newline("\n")] [], }, }, ], eof_token: EOF@86..87 "" [Newline("\n")] [], } 0: JS_MODULE@0..87 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..86 0: JS_FUNCTION_DECLARATION@0..28 0: (empty) 1: FUNCTION_KW@0..9 "function" [] [Whitespace(" ")] 2: (empty) 3: JS_IDENTIFIER_BINDING@9..12 0: IDENT@9..12 "foo" [] [] 4: (empty) 5: JS_PARAMETERS@12..15 0: L_PAREN@12..13 "(" [] [] 1: JS_PARAMETER_LIST@13..13 2: R_PAREN@13..15 ")" [] [Whitespace(" ")] 6: (empty) 7: JS_FUNCTION_BODY@15..28 0: L_CURLY@15..17 "{" [] [Whitespace(" ")] 1: JS_DIRECTIVE_LIST@17..17 2: JS_STATEMENT_LIST@17..27 0: JS_BOGUS_STATEMENT@17..27 0: CONTINUE_KW@17..25 "continue" [] [] 1: SEMICOLON@25..27 ";" [] [Whitespace(" ")] 3: R_CURLY@27..28 "}" [] [] 1: JS_WHILE_STATEMENT@28..61 0: WHILE_KW@28..35 "while" [Newline("\n")] [Whitespace(" ")] 1: L_PAREN@35..36 "(" [] [] 2: JS_BOOLEAN_LITERAL_EXPRESSION@36..40 0: TRUE_KW@36..40 "true" [] [] 3: R_PAREN@40..42 ")" [] [Whitespace(" ")] 4: JS_BLOCK_STATEMENT@42..61 0: L_CURLY@42..43 "{" [] [] 1: JS_STATEMENT_LIST@43..59 0: JS_BOGUS_STATEMENT@43..59 0: CONTINUE_KW@43..55 "continue" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] 1: JS_LABEL@55..58 0: IDENT@55..58 "foo" [] [] 2: SEMICOLON@58..59 ";" [] [] 2: R_CURLY@59..61 "}" [Newline("\n")] [] 2: JS_LABELED_STATEMENT@61..86 0: JS_LABEL@61..65 0: IDENT@61..65 "foo" [Newline("\n")] [] 1: COLON@65..67 ":" [] [Whitespace(" ")] 2: JS_BLOCK_STATEMENT@67..86 0: L_CURLY@67..68 "{" [] [] 1: JS_STATEMENT_LIST@68..84 0: JS_BOGUS_STATEMENT@68..84 0: CONTINUE_KW@68..80 "continue" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] 1: JS_LABEL@80..83 0: IDENT@80..83 "foo" [] [] 2: SEMICOLON@83..84 ";" [] [] 2: R_CURLY@84..86 "}" [Newline("\n")] [] 4: EOF@86..87 "" [Newline("\n")] [] -- continue_stmt.js:1:18 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × A `continue` statement can only be used within an enclosing `for`, `while` or `do while` statement. > 1 │ function foo() { continue; } │ ^^^^^^^^ 2 │ while (true) { 3 │ continue foo; -- continue_stmt.js:3:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Use of undefined statement label `foo` 1 │ function foo() { continue; } 2 │ while (true) { > 3 │ continue foo; │ ^^^ 4 │ } 5 │ foo: { i This label is used, but it is never defined -- continue_stmt.js:6:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × A `continue` statement can only jump to a label of an enclosing `for`, `while` or `do while` statement. 4 │ } 5 │ foo: { > 6 │ continue foo; │ ^^^ 7 │ } 8 │ i This label 4 │ } 5 │ foo: { > 6 │ continue foo; │ ^^^ 7 │ } 8 │ i points to non-iteration statement 3 │ continue foo; 4 │ } > 5 │ foo: { │ ^^^ 6 │ continue foo; 7 │ } -- function foo() { continue; } while (true) { continue foo; } foo: { continue foo; }