Source code
Revision control
Copy as Markdown
Other Tools
// |reftest| module
// 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-module-namespace-exotic-objects-delete-p
description: >
[[Delete]] behavior for a key that describes an uninitialized exported
binding
info: |
[...]
2. Let exports be the value of O's [[Exports]] internal slot.
3. If P is an element of exports, return false.
flags: [module]
features: [Reflect, let]
---*/
import * as ns from './delete-exported-uninit.js';
assert.throws(TypeError, function() {
delete ns.local1;
}, 'delete: local1');
assert.sameValue(
Reflect.deleteProperty(ns, 'local1'), false, 'Reflect.deleteProperty: local1'
);
assert.throws(ReferenceError, function() {
ns.local1;
}, 'binding unmodified: local1');
assert.throws(TypeError, function() {
delete ns.renamed;
}, 'delete: renamed');
assert.sameValue(
Reflect.deleteProperty(ns, 'renamed'), false, 'Reflect.deleteProperty: renamed'
);
assert.throws(ReferenceError, function() {
ns.renamed;
}, 'binding unmodified: renamed');
assert.throws(TypeError, function() {
delete ns.indirect;
}, 'delete: indirect');
assert.sameValue(
Reflect.deleteProperty(ns, 'indirect'),
false,
'Reflect.deleteProperty: indirect'
);
assert.throws(ReferenceError, function() {
ns.indirect;
}, 'binding unmodified: indirect');
assert.throws(TypeError, function() {
delete ns.default;
}, 'delete: default');
assert.sameValue(
Reflect.deleteProperty(ns, 'default'),
false,
'Reflect.deleteProperty: default'
);
assert.throws(ReferenceError, function() {
ns.default;
}, 'binding unmodified: default');
export let local1 = 23;
let local2 = 45;
export { local2 as renamed };
export { local1 as indirect } from './delete-exported-uninit.js';
export default null;
reportCompare(0, 0);