From 94d1211ce0b5ed962de990a4427b9dea0c25522f Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 23 Sep 2024 16:36:16 +0200 Subject: compiler: properly treat property names after spread expressions Ensure that unquoted property names following spread expressions in object declaration literals are not treated as keywords. Prior to this fix, an expression such as `{ ...someobj, default: 1 }` would result in a compile time syntax error. Signed-off-by: Jo-Philipp Wich --- compiler.c | 1 + .../custom/99_bugs/47_compiler_no_prop_kw_after_spread | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 tests/custom/99_bugs/47_compiler_no_prop_kw_after_spread diff --git a/compiler.c b/compiler.c index 1ea0c65..53e61e7 100644 --- a/compiler.c +++ b/compiler.c @@ -2060,6 +2060,7 @@ uc_compiler_compile_object(uc_compiler_t *compiler) /* emit merge operation */ uc_compiler_emit_insn(compiler, 0, I_MOBJ); + compiler->parser->lex.no_keyword = true; continue; } diff --git a/tests/custom/99_bugs/47_compiler_no_prop_kw_after_spread b/tests/custom/99_bugs/47_compiler_no_prop_kw_after_spread new file mode 100644 index 0000000..26f1bff --- /dev/null +++ b/tests/custom/99_bugs/47_compiler_no_prop_kw_after_spread @@ -0,0 +1,17 @@ +Ensure that unquoted property names following spread expressions in object +declaration literals are not treated as keywords. + +-- Testcase -- +{% +printf("%.J\n", { + ...{}, + for: true +}); +%} +-- End -- + +-- Expect stdout -- +{ + "for": true +} +-- End -- -- cgit v1.2.3