Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNathan Rajlich <nathan@tootallnate.net>2013-03-31 00:10:30 +0400
committerNathan Rajlich <nathan@tootallnate.net>2013-03-31 00:10:30 +0400
commit085f9d636b260724af2e80d6757e9d0f4bcd9193 (patch)
tree29c1c21dce7ef28b609efb6c24417e8e63fc3238 /test
parent7af075ee30485e6f2d295d3ad32923dd5ecb7536 (diff)
repl: isSyntaxError() catches "strict mode" errors
Closes #5178.
Diffstat (limited to 'test')
-rw-r--r--test/simple/test-repl.js15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/simple/test-repl.js b/test/simple/test-repl.js
index 793346775b4..27c2058b013 100644
--- a/test/simple/test-repl.js
+++ b/test/simple/test-repl.js
@@ -144,6 +144,21 @@ function error_test() {
// should throw (GH-4012)
{ client: client_unix, send: 'new RegExp("foo", "wrong modifier");',
expect: /^SyntaxError: Invalid flags supplied to RegExp constructor/ },
+ // strict mode syntax errors should be caught (GH-5178)
+ { client: client_unix, send: '(function() { "use strict"; return 0755; })()',
+ expect: /^SyntaxError: Octal literals are not allowed in strict mode/ },
+ { client: client_unix, send: '(function() { "use strict"; return { p: 1, p: 2 }; })()',
+ expect: /^SyntaxError: Duplicate data property in object literal not allowed in strict mode/ },
+ { client: client_unix, send: '(function(a, a, b) { "use strict"; return a + b + c; })()',
+ expect: /^SyntaxError: Strict mode function may not have duplicate parameter names/ },
+ { client: client_unix, send: '(function() { "use strict"; with (this) {} })()',
+ expect: /^SyntaxError: Strict mode code may not include a with statement/ },
+ { client: client_unix, send: '(function() { "use strict"; var x; delete x; })()',
+ expect: /^SyntaxError: Delete of an unqualified identifier in strict mode/ },
+ { client: client_unix, send: '(function() { "use strict"; eval = 17; })()',
+ expect: /^SyntaxError: Assignment to eval or arguments is not allowed in strict mode/ },
+ { client: client_unix, send: '(function() { "use strict"; if (true){ function f() { } } })()',
+ expect: /^SyntaxError: In strict mode code, functions can only be declared at top level or immediately within another function/ },
// Named functions can be used:
{ client: client_unix, send: 'function blah() { return 1; }',
expect: prompt_unix },