// Copyright (C) 2021 Alexey Shvayka. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-module-namespace-exotic-objects description: > Internal methods of module namespace exotic objects are correct with non-Identifier bindings that are integer indices. info: | [[HasProperty]] ( P ) [...] 3. If P is an element of exports, return true. 4. Return false. [[Get]] ( P, Receiver ) [...] 13. Return ? targetEnv.GetBindingValue(binding.[[BindingName]], true). [[Set]] ( P, V, Receiver ) 1. Return false. [[Delete]] ( P ) [...] 4. If P is an element of exports, return false. 5. Return true. flags: [module] features: [arbitrary-module-namespace-names, Reflect] ---*/ import * as ns from "./export-expname-binding-index_FIXTURE.js"; assert.sameValue(ns[0], 0); assert.sameValue(Reflect.get(ns, 1), 1); assert.sameValue(ns[2], undefined); assert.throws(TypeError, () => { ns[0] = 1; }); assert(!Reflect.set(ns, 1, 1)); assert.throws(TypeError, () => { ns[2] = 2; }); assert(0 in ns); assert(Reflect.has(ns, 1)); assert(!(2 in ns)); assert.throws(TypeError, () => { delete ns[0]; }); assert(!Reflect.deleteProperty(ns, 1)); assert(delete ns[2]);