Test caller and arguments properties in function in non strict mode

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


PASS Object.getOwnPropertyNames(function () {}).length is 5
PASS Object.getOwnPropertyNames(function () {}).includes("caller") is true
PASS Object.getOwnPropertyNames(function () {}).includes("arguments") is true
PASS (function(){}).hasOwnProperty("caller") is true
PASS (function(){}).__proto__.hasOwnProperty("caller") is true
PASS (function(){}).hasOwnProperty("arguments") is true
PASS (function(){}).__proto__.hasOwnProperty("arguments") is true
PASS typeof Object.getOwnPropertyDescriptor(foo, "arguments") is "object"
PASS typeof Object.getOwnPropertyDescriptor(foo, "caller") is "object"
PASS foo.caller is null
PASS foo.arguments is null
PASS foo.caller is null
PASS foo.arguments is null
PASS boo("abc")[0] is "abc"
PASS boo("expected-value")[0] is "expected-value"
PASS g(f) is g
PASS doSetCaller(value, false) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS doSetCaller(value, true).__proto__.caller is value
PASS doSetArguments(value, false) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context..
PASS doSetArguments(value, true).__proto__.arguments is value
PASS successfullyParsed is true

TEST COMPLETE

