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.
6 Imported binding reflects state of indirectly-exported function binding
7 esid: sec-moduledeclarationinstantiation
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
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]]).
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
29 1. Perform ! envRec.CreateMutableBinding(dn, false).
30 iii. If d is a GeneratorDeclaration production or a
31 FunctionDeclaration production, then
34 8.1.1.5.5 CreateImportBinding
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).
46 'binding is initialized to function value prior to module evaluation'
49 assert.throws(TypeError, function() {
51 }, 'binding rejects assignment');
53 assert.sameValue(B(), 77, 'binding value is immutable');
55 import { B, results } from './instn-iee-bndng-fun_FIXTURE.js';
56 export function A() { return 77; }
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');