// 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.7-6-a-8
description: >
    Object.defineProperties - 'P' is own accessor property that
    overrides an inherited accessor property (8.12.9 step 1 )
---*/

        var proto = {};
        Object.defineProperty(proto, "prop", {
            get: function() {
                return 11;
            },
            configurable: true
        });
        var Con = function () { };
        Con.prototype = proto;

        var obj = new Con();
        Object.defineProperty(obj, "prop", {
            get: function () {
                return 12;
            },
            configurable: false
        });
assert.throws(TypeError, function() {
            Object.defineProperties(obj, {
                prop: {
                    value: 13,
                    configurable: true
                }
            });
});
assert.sameValue(obj.prop, 12, 'obj.prop');
