summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/custom/00_syntax/16_for_loop8
-rw-r--r--tests/custom/03_bugs/24_compiler_local_for_loop_declaration18
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 --