instn-iee-bndng-const.js (2163B)
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 description: > 6 Imported binding reflects state of indirectly-exported `const` binding 7 esid: sec-moduledeclarationinstantiation 8 info: | 9 [...] 10 12. For each ImportEntry Record in in module.[[ImportEntries]], do 11 a. Let importedModule be ? HostResolveImportedModule(module, 12 in.[[ModuleRequest]]). 13 b. If in.[[ImportName]] is "*", then 14 [...] 15 c. Else, 16 i. Let resolution be ? 17 importedModule.ResolveExport(in.[[ImportName]], « », « »). 18 ii. If resolution is null or resolution is "ambiguous", throw a 19 SyntaxError exception. 20 iii. Call envRec.CreateImportBinding(in.[[LocalName]], 21 resolution.[[Module]], resolution.[[BindingName]]). 22 [...] 23 16. Let lexDeclarations be the LexicallyScopedDeclarations of code. 24 17. For each element d in lexDeclarations do 25 a. For each element dn of the BoundNames of d do 26 i, If IsConstantDeclaration of d is true, then 27 1. Perform ! envRec.CreateImmutableBinding(dn, true). 28 ii. Else, 29 1. Perform ! envRec.CreateMutableBinding(dn, false). 30 iii. If d is a GeneratorDeclaration production or a 31 FunctionDeclaration production, then 32 [...] 33 34 8.1.1.5.5 CreateImportBinding 35 36 [...] 37 5. Create an immutable indirect binding in envRec for N that references M 38 and N2 as its target binding and record that the binding is initialized. 39 6. Return NormalCompletion(empty). 40 flags: [module] 41 ---*/ 42 43 assert.throws(ReferenceError, function() { 44 typeof B; 45 }, 'binding is created but not initialized'); 46 47 import { B, results } from './instn-iee-bndng-const_FIXTURE.js'; 48 export const A = null; 49 50 assert.sameValue(results.length, 4); 51 assert.sameValue(results[0], 'ReferenceError'); 52 assert.sameValue(results[1], 'undefined'); 53 assert.sameValue(results[2], 'ReferenceError'); 54 assert.sameValue(results[3], 'undefined'); 55 56 reportCompare(0, 0);