mirror of https://github.com/tc39/test262.git
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
esid: sec-evaldeclarationinstantiation
|
|
description: >
|
|
Modification of previously-existing non-configurable global property
|
|
info: |
|
|
[...]
|
|
15. For each production f in functionsToInitialize, do
|
|
a. Let fn be the sole element of the BoundNames of f.
|
|
b. Let fo be the result of performing InstantiateFunctionObject for f
|
|
with argument lexEnv.
|
|
c. If varEnvRec is a global Environment Record, then
|
|
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(fn, fo, true).
|
|
[...]
|
|
|
|
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
|
|
[...]
|
|
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
then
|
|
[...]
|
|
6. Else,
|
|
b. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
7. Perform ? DefinePropertyOrThrow(globalObject, N, desc).
|
|
[...]
|
|
includes: [propertyHelper.js]
|
|
---*/
|
|
|
|
var initial;
|
|
|
|
Object.defineProperty(this, 'f', {
|
|
enumerable: true,
|
|
writable: true,
|
|
configurable: false
|
|
});
|
|
|
|
(0,eval)('initial = f; function f() { return 2222; }');
|
|
|
|
verifyEnumerable(this, 'f');
|
|
verifyWritable(this, 'f');
|
|
verifyNotConfigurable(this, 'f');
|
|
assert.sameValue(typeof initial, 'function');
|
|
assert.sameValue(initial(), 2222);
|