diff options
author | Jo-Philipp Wich <jo@mein.io> | 2024-09-23 16:36:16 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2024-09-23 16:36:16 +0200 |
commit | 94d1211ce0b5ed962de990a4427b9dea0c25522f (patch) | |
tree | 80788c52943f9bcc5426f90105f7f451ba3c0b0d | |
parent | b610860dd4a0591ff586dd71a50f556a0ddafced (diff) |
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 <jo@mein.io>
-rw-r--r-- | compiler.c | 1 | ||||
-rw-r--r-- | tests/custom/99_bugs/47_compiler_no_prop_kw_after_spread | 17 |
2 files changed, 18 insertions, 0 deletions
@@ -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 -- |