test262/src/annex-b-fns/global-existing-non-enumerable-global-init.case
Daniel Ehrenberg 89a75a90f6 Add templated tests for new proposed Annex B semantics
These tests are againt a proposed fix for
https://github.com/tc39/ecma262/issues/753

They seem to pass in V8, JSC and SpiderMonkey, though ChakraCore
hews slightly closer to the previous specification.
2018-05-11 15:48:43 -04:00

51 lines
1.1 KiB
Plaintext

// Copyright (C) 2017 Igalia, S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
desc: >
Variable binding is left in place by legacy function hoisting.
CreateGlobalVariableBinding leaves the binding as non-enumerable even
if it has the chance to change it to be enumerable.
template: global
info: |
B.3.3.3 Changes to GlobalDeclarationInstantiation
[...]
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
includes: [fnGlobalObject.js, propertyHelper.js]
---*/
//- setup
var global = fnGlobalObject();
Object.defineProperty(global, 'f', {
value: 'x',
enumerable: false,
writable: true,
configurable: true
});
$262.evalScript(`
assert.sameValue(f, 'x');
verifyProperty(global, 'f', {
enumerable: false,
writable: true,
configurable: true
}, { restore: true });
`);
$262.evalScript(`
//- body
return 'inner declaration';
//- teardown
`);
$262.evalScript(`
assert.sameValue(f(), 'inner declaration');
verifyProperty(global, 'f', {
enumerable: false,
writable: true,
configurable: true
});
`);