// 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.5-4-24
description: >
    Object.create - own enumerable accessor property that overrides an
    enumerable inherited data property in 'Properties' is defined in
    'obj' (15.2.3.7 step 5.a)
---*/

var proto = {};
proto.prop = {
  value: 12
};

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

var child = new ConstructFun();
Object.defineProperty(child, "prop", {
  get: function() {
    return {
      value: 9
    };
  },
  enumerable: true
});

var newObj = Object.create({}, child);

assert(newObj.hasOwnProperty("prop"), 'newObj.hasOwnProperty("prop") !== true');
assert.sameValue(newObj.prop, 9, 'newObj.prop');
