/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/ */

// Deleting .length from a variety of builtin functions works as expected.
for (var fun of [Math.sin, Array.prototype.map, eval]) {
    assertEq(delete fun.length, true);
    assertEq(fun.hasOwnProperty("length"), false);
    assertEq("length" in fun, true);  // still inheriting Function.prototype.length
    assertEq(fun.length, 0);

    // The inherited property is nonwritable, so assigning still fails
    // (silently, in sloppy mode).
    fun.length = Math.hypot;
    assertEq(fun.length, 0);

    // It can be shadowed via defineProperty.
    Object.defineProperty(fun, "length", {value: Math.hypot});
    assertEq(fun.length, Math.hypot);
}

reportCompare(0, 0, 'ok');