/* * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ var gTestfile = 'builtin-function-arguments-caller.js'; var BUGNUMBER = 929642; var summary = "Built-in functions defined in ECMAScript pick up arguments/caller " + "properties from Function.prototype"; print(BUGNUMBER + ": " + summary); /************** * BEGIN TEST * **************/ function expectNoProperty(obj, prop) { var desc = Object.getOwnPropertyDescriptor(obj, prop); assertEq(desc, undefined, "should be no '" + prop + "' property on " + obj); } // Test a builtin that's native. expectNoProperty(Object, "arguments"); expectNoProperty(Object, "caller"); // Also test a builtin that's self-hosted. expectNoProperty(Array.prototype.indexOf, "arguments"); expectNoProperty(Array.prototype.indexOf, "caller"); // Test the Function construct for good measure, because it's so intricately // invovled in bootstrapping. expectNoProperty(Function, "arguments"); expectNoProperty(Function, "caller"); var argsDesc = Object.getOwnPropertyDescriptor(Function.prototype, "arguments"); var callerDesc = Object.getOwnPropertyDescriptor(Function.prototype, "caller"); var argsGet = argsDesc.get, argsSet = argsDesc.set; expectNoProperty(argsGet, "arguments"); expectNoProperty(argsGet, "caller"); expectNoProperty(argsSet, "arguments"); expectNoProperty(argsSet, "caller"); var callerGet = callerDesc.get, callerSet = callerDesc.set; expectNoProperty(callerGet, "arguments"); expectNoProperty(callerGet, "caller"); expectNoProperty(callerSet, "arguments"); expectNoProperty(callerSet, "caller"); /******************************************************************************/ if (typeof reportCompare === "function") reportCompare(true, true); print("Tests complete");