summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/arrow-functions/syntax-errors.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /js/src/jit-test/tests/arrow-functions/syntax-errors.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/jit-test/tests/arrow-functions/syntax-errors.js')
-rw-r--r--js/src/jit-test/tests/arrow-functions/syntax-errors.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/arrow-functions/syntax-errors.js b/js/src/jit-test/tests/arrow-functions/syntax-errors.js
new file mode 100644
index 000000000..925fd5b89
--- /dev/null
+++ b/js/src/jit-test/tests/arrow-functions/syntax-errors.js
@@ -0,0 +1,38 @@
+// Check that we correctly throw SyntaxErrors for various syntactic near-misses.
+
+load(libdir + "asserts.js");
+
+var mistakes = [
+ "((a)) => expr",
+ "a + b => a",
+ "'' + a => a",
+ "...x",
+ "[x] => x",
+ "([x] => x)",
+ "{p: p} => p",
+ "({p: p} => p)",
+ "{p} => p",
+ "(...x => expr)",
+ "1 || a => a",
+ "'use strict' => {}",
+ "package => {'use strict';}", // tricky: FutureReservedWord in strict mode code only
+ "'use strict'; arguments => 0", // names banned in strict mode code
+ "'use strict'; eval => 0",
+ "a => {'use strict'; with (a) return x; }",
+ "a => yield a",
+ "a => { yield a; }",
+ "a => { { let x; yield a; } }",
+ "(a = yield 0) => a",
+ "for (;;) a => { break; };",
+ "for (;;) a => { continue; };",
+ "...rest) =>",
+ "2 + ...rest) =>"
+];
+
+for (var s of mistakes)
+ assertThrowsInstanceOf(function () { Function(s); }, SyntaxError);
+
+// Check that the tricky case is not an error in non-strict-mode code.
+var f = package => 0;
+assertEq(f(1), 0);
+