// 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-155
description: >
    Object.create - 'value' property of one property in 'Properties'
    is an inherited data property (8.10.5 step 5.a)
---*/

        var proto = {
            value: "inheritedDataProperty"
        };

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

        var descObj = new ConstructFun();

        var newObj = Object.create({}, {
            prop: descObj
        });

assert.sameValue(newObj.prop, "inheritedDataProperty", 'newObj.prop');
