Test behaviour of strict mode

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS testThis.call(null) is null
PASS testThis.call(1) is 1
PASS testThis.call(true) is true
PASS testThis.call(false) is false
PASS testThis.call(undefined) is undefined
PASS testLineContinuation.call(undefined) === undefined is false
PASS testEscapeSequence.call(undefined) === undefined is false
PASS testThis.call('a string') is 'a string'
PASS testThisDotAccess.call('a string') is 'a string'.length
PASS testThisDotAccess.call(null) threw exception TypeError: null is not an object (evaluating 'this.length').
PASS testThisDotAccess.call(undefined) threw exception TypeError: undefined is not an object (evaluating 'this.length').
PASS testThisDotAccess.call(true) is undefined.
PASS testThisDotAccess.call(false) is undefined.
PASS testThisDotAccess.call(1) is undefined.
PASS testThisBracketAccess.call('a string', 'length') is 'a string'.length
PASS testThisBracketAccess.call(null, 'length') threw exception TypeError: null is not an object (evaluating 'this[prop]').
PASS testThisBracketAccess.call(undefined, 'length') threw exception TypeError: undefined is not an object (evaluating 'this[prop]').
PASS testThisBracketAccess.call(true, 'length') is undefined.
PASS testThisBracketAccess.call(false, 'length') is undefined.
PASS testThisBracketAccess.call(1, 'length') is undefined.
PASS Function('"use strict"; return this;')() is undefined.
PASS Function('"use strict"; with({});') threw exception SyntaxError: 'with' statements are not valid in strict mode..
PASS testGlobalAccess() is undefined
PASS testThis.call() is undefined
PASS testThis.apply() is undefined
PASS testThis.call(undefined) is undefined
PASS testThis.apply(undefined) is undefined
PASS (function eval(){'use strict';}) threw exception SyntaxError: 'eval' is not a valid function name in strict mode..
PASS (function(){(function eval(){'use strict';})}) threw exception SyntaxError: 'eval' is not a valid function name in strict mode..
PASS (function (eval){'use strict';}) threw exception SyntaxError: Invalid parameters or function name in strict mode..
PASS (function(){(function (eval){'use strict';})}) threw exception SyntaxError: Invalid parameters or function name in strict mode..
PASS (function arguments(){'use strict';}) threw exception SyntaxError: 'arguments' is not a valid function name in strict mode..
PASS (function(){(function arguments(){'use strict';})}) threw exception SyntaxError: 'arguments' is not a valid function name in strict mode..
PASS (function (arguments){'use strict';}) threw exception SyntaxError: Invalid parameters or function name in strict mode..
PASS (function(){(function (arguments){'use strict';})}) threw exception SyntaxError: Invalid parameters or function name in strict mode..
PASS (function (){'use strict'; var eval;}) threw exception SyntaxError: Cannot declare a variable named eval in strict mode..
PASS (function(){(function (){'use strict'; var eval;})}) threw exception SyntaxError: Cannot declare a variable named eval in strict mode..
PASS (function (){'use strict'; var arguments;}) threw exception SyntaxError: Cannot declare a variable named arguments in strict mode..
PASS (function(){(function (){'use strict'; var arguments;})}) threw exception SyntaxError: Cannot declare a variable named arguments in strict mode..
PASS (function (){'use strict'; try{}catch(eval){}}) threw exception SyntaxError: Cannot declare a catch variable named 'eval' in strict mode..
PASS (function(){(function (){'use strict'; try{}catch(eval){}})}) threw exception SyntaxError: Cannot declare a catch variable named 'eval' in strict mode..
PASS (function (){'use strict'; try{}catch(arguments){}}) threw exception SyntaxError: Cannot declare a catch variable named 'arguments' in strict mode..
PASS (function(){(function (){'use strict'; try{}catch(arguments){}})}) threw exception SyntaxError: Cannot declare a catch variable named 'arguments' in strict mode..
PASS (function (a, a){'use strict';}) threw exception SyntaxError: Invalid parameters or function name in strict mode..
PASS (function(){(function (a, a){'use strict';})}) threw exception SyntaxError: Invalid parameters or function name in strict mode..
PASS (function (a){'use strict'; delete a;})() threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function(){(function (a){'use strict'; delete a;})()}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function (){'use strict'; var a; delete a;})() threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function(){(function (){'use strict'; var a; delete a;})()}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function (){var a; function f() {'use strict'; delete a;} })() threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function(){(function (){var a; function f() {'use strict'; delete a;} })()}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function (){'use strict'; with(1){};}) threw exception SyntaxError: 'with' statements are not valid in strict mode..
PASS (function(){(function (){'use strict'; with(1){};})}) threw exception SyntaxError: 'with' statements are not valid in strict mode..
PASS (function (){'use strict'; arguments.callee; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function (){'use strict'; return arguments.caller; })() is undefined
PASS (function f(){'use strict'; f.arguments; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function f(){'use strict'; f.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function f(){'use strict'; f.arguments=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function f(){'use strict'; f.caller=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function (arg){'use strict'; arguments.callee; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function (arg){'use strict'; return arguments.caller; })() is undefined
PASS (function f(arg){'use strict'; f.arguments; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function f(arg){'use strict'; f.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function f(arg){'use strict'; f.arguments=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function f(arg){'use strict'; f.caller=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS (function a(a){'use strict'; return a+2; })(40) is 42
PASS var foo = function a(a){'use strict'; return a+2; }; foo(40) is 42
PASS var o = {foo: function a(a){'use strict'; return a+2; } }; o.foo(40) is 42
PASS "caller" in function(){"use strict"} is true
PASS (function(){"use strict";}).hasOwnProperty("caller") is false
PASS (function(){"use strict";}).__proto__.hasOwnProperty("caller") is true
PASS "arguments" in function(){"use strict"} is true
PASS (function(){"use strict";}).hasOwnProperty("arguments") is false
PASS (function(){"use strict";}).__proto__.hasOwnProperty("arguments") is true
PASS 'use strict'; (function (){with(1){};}) threw exception SyntaxError: 'with' statements are not valid in strict mode..
PASS (function(){'use strict'; (function (){with(1){};})}) threw exception SyntaxError: 'with' statements are not valid in strict mode..
PASS 'use strict'; (function (){var a; delete a;}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function(){'use strict'; (function (){var a; delete a;})}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS 'use strict'; var a; (function (){ delete a;}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function(){'use strict'; var a; (function (){ delete a;})}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS var a; (function (){ 'use strict'; delete a;}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS (function(){var a; (function (){ 'use strict'; delete a;})}) threw exception SyntaxError: Cannot delete unqualified property 'a' in strict mode..
PASS 'misc directive'; 'use strict'; with({}){} threw exception SyntaxError: 'with' statements are not valid in strict mode..
PASS (function(){'misc directive'; 'use strict'; with({}){}}) threw exception SyntaxError: 'with' statements are not valid in strict mode..
PASS 'use strict'; return threw exception SyntaxError: Return statements are only valid inside functions..
PASS 'use strict'; break threw exception SyntaxError: 'break' is only valid inside a switch or loop statement..
PASS (function(){'use strict'; break}) threw exception SyntaxError: 'break' is only valid inside a switch or loop statement..
PASS 'use strict'; continue threw exception SyntaxError: 'continue' is only valid inside a loop statement..
PASS (function(){'use strict'; continue}) threw exception SyntaxError: 'continue' is only valid inside a loop statement..
PASS 'use strict'; for(;;)return threw exception SyntaxError: Return statements are only valid inside functions..
PASS 'use strict'; for(;;)break missingLabel threw exception SyntaxError: Cannot use the undeclared label 'missingLabel'..
PASS (function(){'use strict'; for(;;)break missingLabel}) threw exception SyntaxError: Cannot use the undeclared label 'missingLabel'..
PASS 'use strict'; for(;;)continue missingLabel threw exception SyntaxError: Cannot use the undeclared label 'missingLabel'..
PASS (function(){'use strict'; for(;;)continue missingLabel}) threw exception SyntaxError: Cannot use the undeclared label 'missingLabel'..
PASS 'use strict'; 007; threw exception SyntaxError: Decimal integer literals with a leading zero are forbidden in strict mode.
PASS (function(){'use strict'; 007;}) threw exception SyntaxError: Decimal integer literals with a leading zero are forbidden in strict mode.
PASS 'use strict'; '\007'; threw exception SyntaxError: The only valid numeric escape in strict mode is '\0'.
PASS (function(){'use strict'; '\007';}) threw exception SyntaxError: The only valid numeric escape in strict mode is '\0'.
PASS '\007'; 'use strict'; threw exception SyntaxError: The only valid numeric escape in strict mode is '\0'.
PASS (function(){'\007'; 'use strict';}) threw exception SyntaxError: The only valid numeric escape in strict mode is '\0'.
PASS 'use strict'; delete aDeletableProperty; threw exception SyntaxError: Cannot delete unqualified property 'aDeletableProperty' in strict mode..
PASS (function(){'use strict'; delete aDeletableProperty;}) threw exception SyntaxError: Cannot delete unqualified property 'aDeletableProperty' in strict mode..
PASS 'use strict'; (function (){ delete someDeclaredGlobal;}) threw exception SyntaxError: Cannot delete unqualified property 'someDeclaredGlobal' in strict mode..
PASS (function(){'use strict'; (function (){ delete someDeclaredGlobal;})}) threw exception SyntaxError: Cannot delete unqualified property 'someDeclaredGlobal' in strict mode..
PASS (function (){ 'use strict'; delete someDeclaredGlobal;}) threw exception SyntaxError: Cannot delete unqualified property 'someDeclaredGlobal' in strict mode..
PASS (function(){(function (){ 'use strict'; delete someDeclaredGlobal;})}) threw exception SyntaxError: Cannot delete unqualified property 'someDeclaredGlobal' in strict mode..
PASS 'use strict'; if (0) { someGlobal = 'Shouldn\'t be able to assign this.'; }; true; is true
PASS 'use strict'; someGlobal = 'Shouldn\'t be able to assign this.';  threw exception ReferenceError: Can't find variable: someGlobal.
PASS 'use strict'; (function f(){ f = 'shouldn\'t be able to assign to function expression name'; })() threw exception TypeError: Attempted to assign to readonly property..
PASS 'use strict'; eval('var introducedVariable = "FAIL: variable introduced into containing scope";'); introducedVariable threw exception ReferenceError: Can't find variable: introducedVariable.
PASS 'use strict'; objectWithReadonlyProperty.prop = 'fail' threw exception TypeError: Attempted to assign to readonly property..
PASS 'use strict'; delete objectWithReadonlyProperty.prop threw exception TypeError: Unable to delete property..
PASS 'use strict'; delete objectWithReadonlyProperty[readonlyPropName] threw exception TypeError: Unable to delete property..
PASS 'use strict'; ++eval threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS (function(){'use strict'; ++eval}) threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS 'use strict'; eval++ threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS (function(){'use strict'; eval++}) threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS 'use strict'; --eval threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS (function(){'use strict'; --eval}) threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS 'use strict'; eval-- threw exception SyntaxError: 'eval' cannot be modified in strict mode..
PASS (function(){'use strict'; eval--}) threw exception SyntaxError: 'eval' cannot be modified in strict mode..
PASS 'use strict'; function f() { ++arguments } threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS (function(){'use strict'; function f() { ++arguments }}) threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS 'use strict'; function f() { arguments++ } threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS (function(){'use strict'; function f() { arguments++ }}) threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS 'use strict'; function f() { --arguments } threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS (function(){'use strict'; function f() { --arguments }}) threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS 'use strict'; function f() { arguments-- } threw exception SyntaxError: 'arguments' cannot be modified in strict mode..
PASS (function(){'use strict'; function f() { arguments-- }}) threw exception SyntaxError: 'arguments' cannot be modified in strict mode..
PASS global.eval('"use strict"; if (0) ++arguments; true;') threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS 'use strict'; ++(1, eval) threw exception SyntaxError: Prefix ++ operator applied to value that is not a reference..
PASS (function(){'use strict'; ++(1, eval)}) threw exception SyntaxError: Prefix ++ operator applied to value that is not a reference..
PASS 'use strict'; ++(1, 2, 3, eval) threw exception SyntaxError: Prefix ++ operator applied to value that is not a reference..
PASS (function(){'use strict'; ++(1, 2, 3, eval)}) threw exception SyntaxError: Prefix ++ operator applied to value that is not a reference..
PASS 'use strict'; (1, eval)++ threw exception SyntaxError: Postfix ++ operator applied to value that is not a reference..
PASS (function(){'use strict'; (1, eval)++}) threw exception SyntaxError: Postfix ++ operator applied to value that is not a reference..
PASS 'use strict'; --(1, eval) threw exception SyntaxError: Prefix -- operator applied to value that is not a reference..
PASS (function(){'use strict'; --(1, eval)}) threw exception SyntaxError: Prefix -- operator applied to value that is not a reference..
PASS 'use strict'; (1, eval)-- threw exception SyntaxError: Postfix -- operator applied to value that is not a reference..
PASS (function(){'use strict'; (1, eval)--}) threw exception SyntaxError: Postfix -- operator applied to value that is not a reference..
PASS 'use strict'; (1, 2, 3, eval)-- threw exception SyntaxError: Postfix -- operator applied to value that is not a reference..
PASS (function(){'use strict'; (1, 2, 3, eval)--}) threw exception SyntaxError: Postfix -- operator applied to value that is not a reference..
PASS 'use strict'; function f() { ++(1, arguments) } threw exception SyntaxError: Prefix ++ operator applied to value that is not a reference..
PASS (function(){'use strict'; function f() { ++(1, arguments) }}) threw exception SyntaxError: Prefix ++ operator applied to value that is not a reference..
PASS 'use strict'; function f() { (1, arguments)++ } threw exception SyntaxError: Postfix ++ operator applied to value that is not a reference..
PASS (function(){'use strict'; function f() { (1, arguments)++ }}) threw exception SyntaxError: Postfix ++ operator applied to value that is not a reference..
PASS 'use strict'; function f() { --(1, arguments) } threw exception SyntaxError: Prefix -- operator applied to value that is not a reference..
PASS (function(){'use strict'; function f() { --(1, arguments) }}) threw exception SyntaxError: Prefix -- operator applied to value that is not a reference..
PASS 'use strict'; function f() { (1, arguments)-- } threw exception SyntaxError: Postfix -- operator applied to value that is not a reference..
PASS (function(){'use strict'; function f() { (1, arguments)-- }}) threw exception SyntaxError: Postfix -- operator applied to value that is not a reference..
PASS 'use strict'; if (0) delete +a.b did not throw exception.
PASS (function(){'use strict'; if (0) delete +a.b}) did not throw exception.
PASS 'use strict'; if (0) delete ++a.b did not throw exception.
PASS (function(){'use strict'; if (0) delete ++a.b}) did not throw exception.
PASS 'use strict'; if (0) delete void a.b did not throw exception.
PASS (function(){'use strict'; if (0) delete void a.b}) did not throw exception.
PASS (function (a){'use strict'; a = false; return a !== arguments[0]; })(true) is true
PASS (function (a){'use strict'; arguments[0] = false; return a !== arguments[0]; })(true) is true
PASS (function (a){'use strict'; a=false; return arguments; })(true)[0] is true
PASS (function (a){'use strict'; arguments[0]=false; return a; })(true) is true
PASS (function (a){'use strict'; arguments[0]=true; return arguments; })(false)[0] is true
PASS (function (){'use strict';  arguments[0]=true; return arguments; })(false)[0] is true
PASS (function (a){'use strict'; arguments[0]=true; a=false; return arguments; })()[0] is true
PASS (function (a){'use strict'; arguments[0]=false; a=true; return a; })() is true
PASS (function (a){'use strict'; arguments[0]=true; return arguments; })()[0] is true
PASS (function (){'use strict';  arguments[0]=true; return arguments; })()[0] is true
PASS (function (a){'use strict'; var local; (function (){local;})(); a = false; return a !== arguments[0]; })(true) is true
PASS (function (a){'use strict'; var local; (function (){local;})(); arguments[0] = false; return a !== arguments[0]; })(true) is true
PASS (function (a){'use strict'; var local; (function (){local;})(); a=false; return arguments; })(true)[0] is true
PASS (function (a){'use strict'; var local; (function (){local;})(); arguments[0]=false; return a; })(true) is true
PASS (function (a){'use strict'; var local; (function (){local;})(); arguments[0]=true; return arguments; })(false)[0] is true
PASS (function (){'use strict';  var local; (function (){local;})(); arguments[0]=true; return arguments; })(false)[0] is true
PASS (function (a){'use strict'; var local; (function (){local;})(); arguments[0]=true; a=false; return arguments; })()[0] is true
PASS (function (a){'use strict'; var local; (function (){local;})(); arguments[0]=true; return arguments; })()[0] is true
PASS (function (a){'use strict'; var local; (function (){local;})(); arguments[0]=false; a=true; return a; })() is true
PASS (function (){'use strict';  var local; (function (){local;})(); arguments[0]=true; return arguments; })()[0] is true
PASS 'use strict'; (function (){var a = true; eval('var a = false'); return a; })() is true
PASS (function (){var a = true; eval('"use strict"; var a = false'); return a; })() is true
PASS (function f(arg){'use strict'; return Object.getOwnPropertyDescriptor(f.__proto__, 'arguments').value; })() is undefined.
PASS (function f(arg){'use strict'; return Object.getOwnPropertyDescriptor(f.__proto__, 'caller').value; })() is undefined.
PASS (function f(arg){'use strict'; return Object.getOwnPropertyDescriptor(arguments, 'callee').value; })() is undefined.
PASS (function f(arg){'use strict'; return Object.getOwnPropertyDescriptor(arguments, 'caller'); })() is undefined.
PASS (function f(arg){'use strict'; var descriptor = Object.getOwnPropertyDescriptor(arguments, 'callee'); return descriptor.get === descriptor.set; })() is true
PASS (function f(arg){'use strict'; var descriptor = Object.getOwnPropertyDescriptor(f.__proto__, 'caller'); return descriptor.get === descriptor.set; })() is false
PASS (function f(arg){'use strict'; var descriptor = Object.getOwnPropertyDescriptor(f.__proto__, 'arguments'); return descriptor.get === descriptor.set; })() is false
PASS 'use strict'; (function f() { for(var i in this); })(); true; is true
PASS 'use strict'̻ threw exception SyntaxError: Invalid character '\u033b'.
PASS (function(){'use strict'̻}) threw exception SyntaxError: Invalid character '\u033b'.
PASS 'use strict'5.f threw exception SyntaxError: No identifiers allowed directly after numeric literal.
PASS (function(){'use strict'5.f}) threw exception SyntaxError: No identifiers allowed directly after numeric literal.
PASS 'use strict';̻ threw exception SyntaxError: Invalid character '\u033b'.
PASS (function(){'use strict';̻}) threw exception SyntaxError: Invalid character '\u033b'.
PASS 'use strict';5.f threw exception SyntaxError: No identifiers allowed directly after numeric literal.
PASS (function(){'use strict';5.f}) threw exception SyntaxError: No identifiers allowed directly after numeric literal.
PASS 'use strict';1-(eval=1); threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS (function(){'use strict';1-(eval=1);}) threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS 'use strict';arguments=1; threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS (function(){'use strict';arguments=1;}) threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS 'use strict';1-(arguments=1); threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS (function(){'use strict';1-(arguments=1);}) threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS 'use strict';var a=(eval=1); threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS (function(){'use strict';var a=(eval=1);}) threw exception SyntaxError: Cannot modify 'eval' in strict mode..
PASS 'use strict';var a=(arguments=1); threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS (function(){'use strict';var a=(arguments=1);}) threw exception SyntaxError: Cannot modify 'arguments' in strict mode..
PASS 'use strict'; try { throw 1; } catch (e) { aGlobal = true; } is true
PASS 'use strict'; (function () { try { throw 1; } catch (e) { aGlobal = true; }})(); aGlobal; is true
PASS (function () {'use strict';  try { throw 1; } catch (e) { aGlobal = true; }})(); aGlobal; is true
PASS try { throw 1; } catch (e) { aGlobal = true; } is true
PASS (function () { try { throw 1; } catch (e) { aGlobal = true; }})(); aGlobal; is true
PASS (function () {try { throw 1; } catch (e) { aGlobal = true; }})(); aGlobal; is true
PASS String(Object.getOwnPropertyDescriptor((function() { "use strict"; }).__proto__, "caller").get) is 'function caller() {\n    [native code]\n}'
PASS successfullyParsed is true

TEST COMPLETE

