// Copyright (c) 2012 Ecma International.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
es5id: 15.2.3.6-4-291-1
description: >
    Object.defineProperty - 'O' is an Arguments object of a function
    that has formal parameters, 'name' is own accessor property of 'O'
    which is also defined in [[ParameterMap]] of 'O', and 'desc' is
    accessor descriptor, test updating multiple attribute values of
    'name' (10.6 [[DefineOwnProperty]] step 3 and 5.a.i)
includes: [propertyHelper.js]
---*/

(function (a, b, c) { 
    function getFunc1() {
        return 10;
    }
    Object.defineProperty(arguments, "0", {
        get: getFunc1,
        enumerable: true,
        configurable: true
    });
    function getFunc2() {
        return 20;
    }
    Object.defineProperty(arguments, "0", {
        get: getFunc2,
        enumerable: false,
        configurable: false
    });
    if (a !== 0) {
        $ERROR('Expected a === 0, actually ' + a);
    }

    verifyEqualTo(arguments, "0", getFunc2());

    verifyNotEnumerable(arguments, "0");

    verifyNotConfigurable(arguments, "0");
}(0, 1, 2));
