From 43e03a1ac63c4ebabc7f22fd6448e38635d914e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20B=C3=A1tyai?= Date: Fri, 25 Sep 2020 10:06:19 +0200 Subject: [PATCH] Fix continue label lookup in for statements that have a private scope (#4224) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai daniel.batyai@h-lab.eu --- jerry-core/parser/js/js-parser-statm.c | 9 ++++++++- tests/test262-es6-excludelist.xml | 3 --- tests/test262-esnext-excludelist.xml | 3 --- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/jerry-core/parser/js/js-parser-statm.c b/jerry-core/parser/js/js-parser-statm.c index 8f3774e0d..edc634859 100644 --- a/jerry-core/parser/js/js-parser-statm.c +++ b/jerry-core/parser/js/js-parser-statm.c @@ -2336,11 +2336,18 @@ parser_parse_continue_statement (parser_context_t *context_p) /**< 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) { loop_iterator = iterator; } - else + else if (!is_private_scope) { loop_iterator.current_p = NULL; } diff --git a/tests/test262-es6-excludelist.xml b/tests/test262-es6-excludelist.xml index da4462903..cab7a9572 100644 --- a/tests/test262-es6-excludelist.xml +++ b/tests/test262-es6-excludelist.xml @@ -321,9 +321,6 @@ - - - ES2018 change: next method must be cached diff --git a/tests/test262-esnext-excludelist.xml b/tests/test262-esnext-excludelist.xml index 5fc972653..5d2d8f721 100644 --- a/tests/test262-esnext-excludelist.xml +++ b/tests/test262-esnext-excludelist.xml @@ -4200,9 +4200,6 @@ - - -