// 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.9-2-a-2
description: >
    Object.freeze - 'P' is own data property that overrides an
    inherited data property
includes: [propertyHelper.js]
---*/


var proto = {
  foo: 0
}; // default [[Configurable]] attribute value of foo: true

var Con = function() {};
Con.prototype = proto;

var child = new Con();

child.foo = 10; // default [[Configurable]] attribute value of foo: true

Object.freeze(child);

verifyNotWritable(child, "foo");
verifyNotConfigurable(child, "foo");

assert.sameValue(child.foo, 10);
