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 3
PASS Object.getOwnPropertyNames(function () {}).includes("caller") is false
PASS Object.getOwnPropertyNames(function () {}).includes("arguments") is false
PASS (function(){}).hasOwnProperty("caller") is false
PASS (function(){}).__proto__.hasOwnProperty("caller") is true
PASS (function(){}).hasOwnProperty("arguments") is false
PASS (function(){}).__proto__.hasOwnProperty("arguments") is true
PASS typeof Object.getOwnPropertyDescriptor(foo, "arguments") is "undefined"
PASS typeof Object.getOwnPropertyDescriptor(foo, "caller") is "undefined"
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