mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Fix continue label lookup in for statements that have a private scope (#4224)
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai daniel.batyai@h-lab.eu
This commit is contained in:
parent
3b7409f3a7
commit
43e03a1ac6
@ -2336,11 +2336,18 @@ parser_parse_continue_statement (parser_context_t *context_p) /**< context */
|
|||||||
opcode = CBC_JUMP_FORWARD_EXIT_CONTEXT;
|
opcode = CBC_JUMP_FORWARD_EXIT_CONTEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ENABLED (JERRY_ESNEXT)
|
||||||
|
const bool is_private_scope = (type == PARSER_STATEMENT_PRIVATE_SCOPE
|
||||||
|
|| type == PARSER_STATEMENT_PRIVATE_CONTEXT);
|
||||||
|
#else /* !ENABLED (JERRY_ESNEXT) */
|
||||||
|
const bool is_private_scope = false;
|
||||||
|
#endif /* !ENABLED (JERRY_ESNEXT) */
|
||||||
|
|
||||||
if (parser_statement_flags[type] & PARSER_STATM_CONTINUE_TARGET)
|
if (parser_statement_flags[type] & PARSER_STATM_CONTINUE_TARGET)
|
||||||
{
|
{
|
||||||
loop_iterator = iterator;
|
loop_iterator = iterator;
|
||||||
}
|
}
|
||||||
else
|
else if (!is_private_scope)
|
||||||
{
|
{
|
||||||
loop_iterator.current_p = NULL;
|
loop_iterator.current_p = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -321,9 +321,6 @@
|
|||||||
<test id="language/statements/class/name-binding/in-extends-expression-assigned.js"><reason></reason></test>
|
<test id="language/statements/class/name-binding/in-extends-expression-assigned.js"><reason></reason></test>
|
||||||
<test id="language/statements/class/name-binding/in-extends-expression.js"><reason></reason></test>
|
<test id="language/statements/class/name-binding/in-extends-expression.js"><reason></reason></test>
|
||||||
<test id="language/statements/class/syntax/early-errors/class-body-static-method-get-propname-prototype.js"><reason></reason></test>
|
<test id="language/statements/class/syntax/early-errors/class-body-static-method-get-propname-prototype.js"><reason></reason></test>
|
||||||
<test id="language/statements/continue/labeled-continue.js"><reason></reason></test>
|
|
||||||
<test id="language/statements/continue/nested-let-bound-for-loops-labeled-continue.js"><reason></reason></test>
|
|
||||||
<test id="language/statements/continue/simple-and-labeled.js"><reason></reason></test>
|
|
||||||
<test id="language/statements/for-of/iterator-next-reference.js"><reason>ES2018 change: next method must be cached</reason></test>
|
<test id="language/statements/for-of/iterator-next-reference.js"><reason>ES2018 change: next method must be cached</reason></test>
|
||||||
<test id="language/statements/for/S12.6.3_A9.1.js"><reason></reason></test>
|
<test id="language/statements/for/S12.6.3_A9.1.js"><reason></reason></test>
|
||||||
<test id="language/statements/for/S12.6.3_A9.js"><reason></reason></test>
|
<test id="language/statements/for/S12.6.3_A9.js"><reason></reason></test>
|
||||||
|
|||||||
@ -4200,9 +4200,6 @@
|
|||||||
<test id="language/statements/const/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
|
<test id="language/statements/const/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||||
<test id="language/statements/const/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
<test id="language/statements/const/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||||
<test id="language/statements/const/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
<test id="language/statements/const/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||||
<test id="language/statements/continue/labeled-continue.js"><reason></reason></test>
|
|
||||||
<test id="language/statements/continue/nested-let-bound-for-loops-labeled-continue.js"><reason></reason></test>
|
|
||||||
<test id="language/statements/continue/simple-and-labeled.js"><reason></reason></test>
|
|
||||||
<test id="language/statements/do-while/cptn-abrupt-empty.js"><reason></reason></test>
|
<test id="language/statements/do-while/cptn-abrupt-empty.js"><reason></reason></test>
|
||||||
<test id="language/statements/do-while/cptn-normal.js"><reason></reason></test>
|
<test id="language/statements/do-while/cptn-normal.js"><reason></reason></test>
|
||||||
<test id="language/statements/for-await-of/async-from-sync-iterator-continuation-abrupt-completion-get-constructor.js"><reason></reason></test>
|
<test id="language/statements/for-await-of/async-from-sync-iterator-continuation-abrupt-completion-get-constructor.js"><reason></reason></test>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user