diff --git a/jerry-core/parser/js/js-parser.c b/jerry-core/parser/js/js-parser.c index ac5aa559e..472fe63e3 100644 --- a/jerry-core/parser/js/js-parser.c +++ b/jerry-core/parser/js/js-parser.c @@ -2291,6 +2291,7 @@ parser_parse_function (parser_context_t *context_p, /**< context */ if ((context_p->status_flags & (PARSER_CLASS_CONSTRUCTOR | PARSER_ALLOW_SUPER_CALL)) == PARSER_CLASS_CONSTRUCTOR) { parser_emit_cbc_ext (context_p, CBC_EXT_RUN_FIELD_INIT); + parser_flush_cbc (context_p); } #endif /* ENABLED (JERRY_ESNEXT) */ diff --git a/tests/jerry/regression-test-issue-4238.js b/tests/jerry/regression-test-issue-4238.js new file mode 100644 index 000000000..6e0fb4985 --- /dev/null +++ b/tests/jerry/regression-test-issue-4238.js @@ -0,0 +1,24 @@ +// Copyright JS Foundation and other contributors, http://js.foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +try { + eval(" \ + class foo { \ + constructor() { \ + function bar() {} \ + } \ + ") +} catch (e) { + assert (e instanceof SyntaxError) +}