instn-iee-bndng-fun.js (2274B)
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 function 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 [...] 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.sameValue( 44 B(), 45 77, 46 'binding is initialized to function value prior to module evaluation' 47 ); 48 49 assert.throws(TypeError, function() { 50 B = null; 51 }, 'binding rejects assignment'); 52 53 assert.sameValue(B(), 77, 'binding value is immutable'); 54 55 import { B, results } from './instn-iee-bndng-fun_FIXTURE.js'; 56 export function A() { return 77; } 57 58 assert.sameValue(results.length, 4); 59 assert.sameValue(results[0], 'ReferenceError'); 60 assert.sameValue(results[1], 'undefined'); 61 assert.sameValue(results[2], 'ReferenceError'); 62 assert.sameValue(results[3], 'undefined'); 63 64 reportCompare(0, 0);