diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/custom/00_syntax/16_for_loop | 8 | ||||
-rw-r--r-- | tests/custom/03_bugs/24_compiler_local_for_loop_declaration | 18 |
2 files changed, 22 insertions, 4 deletions
diff --git a/tests/custom/00_syntax/16_for_loop b/tests/custom/00_syntax/16_for_loop index 67edc21..b206b07 100644 --- a/tests/custom/00_syntax/16_for_loop +++ b/tests/custom/00_syntax/16_for_loop @@ -220,10 +220,10 @@ rejected. -- Expect stderr -- Syntax error: Unexpected token Expecting ';' -In line 2, byte 24: +In line 2, byte 19: ` for (let x, y, z in {})` - Near here ----------------^ + Near here -----------^ -- End -- @@ -241,10 +241,10 @@ Ensure that assignments in for-in loop expressions are rejected. -- Expect stderr -- Syntax error: Unexpected token Expecting ';' -In line 2, byte 25: +In line 2, byte 20: ` for (let x = 1, y in {})` - Near here -----------------^ + Near here ------------^ -- End -- diff --git a/tests/custom/03_bugs/24_compiler_local_for_loop_declaration b/tests/custom/03_bugs/24_compiler_local_for_loop_declaration new file mode 100644 index 0000000..aafde55 --- /dev/null +++ b/tests/custom/03_bugs/24_compiler_local_for_loop_declaration @@ -0,0 +1,18 @@ +When compiling a for-loop local variable initializer expression, the compiler +incorrectly treated subsequent declarations as global variable assignments, +triggering reference error exceptions in strict mode. + +-- Expect stdout -- +1 +-- End -- + +-- Testcase -- +{% + "use strict"; + + // The initializer expression below was incorrectly interpreted as + // `let x = 0; y = 1` instead of the correct `let ..., y = 1`. + for (let x = 0, y = 1; x < 1; x++) + print(y, "\n"); +%} +-- End -- |