delete-non-exported.js (1281B)
1 // |reftest| module 2 // Copyright (C) 2016 the V8 project authors. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 /*--- 5 esid: sec-module-namespace-exotic-objects-delete-p 6 description: > 7 [[Delete]] behavior for a key that does not describe an exported binding 8 info: | 9 [...] 10 2. If Type(P) is Symbol, then 11 a. Return ? OrdinaryDelete(O, P). 12 3. Let exports be O.[[Exports]]. 13 4. If P is an element of exports, return false. 14 5. Return true. 15 flags: [module] 16 features: [Reflect, Symbol, Symbol.toStringTag] 17 ---*/ 18 19 import * as ns from './delete-non-exported.js'; 20 var sym = Symbol('test262'); 21 22 assert(delete ns.undef, 'delete: undef'); 23 assert(Reflect.deleteProperty(ns, 'undef'), 'Reflect.deleteProperty: undef'); 24 25 assert(delete ns.default, 'delete: default'); 26 assert( 27 Reflect.deleteProperty(ns, 'default'), 'Reflect.deleteProperty: default' 28 ); 29 30 assert.throws(TypeError, function() { delete ns[Symbol.toStringTag]; }, 'delete: Symbol.toStringTag'); 31 assert.sameValue( 32 Reflect.deleteProperty(ns, Symbol.toStringTag), false, 33 'Reflect.deleteProperty: Symbol.toStringTag' 34 ); 35 36 assert(delete ns[sym], 'delete: symbol'); 37 assert(Reflect.deleteProperty(ns, sym), 'Reflect.deleteProperty: symbol'); 38 39 reportCompare(0, 0);