| // Copyright (C) 2016 the V8 project authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| description: > |
| Module namespace object reports properties for all ExportEntries of all |
| dependencies. |
| esid: sec-moduledeclarationinstantiation |
| info: | |
| [...] |
| 12. For each ImportEntry Record in in module.[[ImportEntries]], do |
| a. Let importedModule be ? HostResolveImportedModule(module, |
| in.[[ModuleRequest]]). |
| b. If in.[[ImportName]] is "*", then |
| i. Let namespace be ? GetModuleNamespace(importedModule). |
| [...] |
| |
| |
| 3. If namespace is undefined, then |
| a. Let exportedNames be ? module.GetExportedNames(« »). |
| b. Let unambiguousNames be a new empty List. |
| c. For each name that is an element of exportedNames, |
| i. Let resolution be ? module.ResolveExport(name, « », « »). |
| ii. If resolution is null, throw a SyntaxError exception. |
| iii. If resolution is not "ambiguous", append name to |
| unambiguousNames. |
| d. Let namespace be ModuleNamespaceCreate(module, unambiguousNames). |
| flags: [module] |
| features: [export-star-as-namespace-from-module] |
| ---*/ |
| |
| import * as ns from './instn-star-props-nrml-1_FIXTURE.js'; |
| |
| // Export entries defined by a directly-imported module |
| assert('localVarDecl' in ns, 'localVarDecl'); |
| assert('localLetDecl' in ns, 'localLetDecl'); |
| assert('localConstDecl' in ns, 'localConstDecl'); |
| assert('localFuncDecl' in ns, 'localFuncDecl'); |
| assert('localGenDecl' in ns, 'localGenDecl'); |
| assert('localClassDecl' in ns, 'localClassDecl'); |
| assert('localBindingId' in ns, 'localBindingId'); |
| assert('localIdName' in ns, 'localIdName'); |
| assert('indirectIdName' in ns, 'indirectIdName'); |
| assert('indirectIdName2' in ns, 'indirectIdName2'); |
| assert('namespaceBinding' in ns, 'namespaceBinding'); |
| |
| // Export entries defined by a re-exported module |
| assert('starVarDecl' in ns, 'starVarDecl'); |
| assert('starLetDecl' in ns, 'starLetDecl'); |
| assert('starConstDecl' in ns, 'starConstDecl'); |
| assert('starFuncDecl' in ns, 'starFuncDecl'); |
| assert('starGenDecl' in ns, 'starGenDecl'); |
| assert('starClassDecl' in ns, 'starClassDecl'); |
| assert('starBindingId' in ns, 'starBindingId'); |
| assert('starIdName' in ns, 'starIdName'); |
| assert('starIndirectIdName' in ns, 'starIndirectIdName'); |
| assert('starIndirectIdName2' in ns, 'starIndirectIdName2'); |
| assert('starIndirectNamespaceBinding' in ns, 'starIndirectNamespaceBinding'); |
| |
| // Bindings that were not exported from any module |
| assert.sameValue('nonExportedVar1' in ns, false, 'nonExportedVar1'); |
| assert.sameValue('nonExportedVar2' in ns, false, 'nonExportedVar2'); |
| assert.sameValue('nonExportedLet1' in ns, false, 'nonExportedLet1'); |
| assert.sameValue('nonExportedLet2' in ns, false, 'nonExportedLet2'); |
| assert.sameValue('nonExportedConst1' in ns, false, 'nonExportedConst1'); |
| assert.sameValue('nonExportedConst2' in ns, false, 'nonExportedConst2'); |
| assert.sameValue('nonExportedFunc1' in ns, false, 'nonExportedFunc1'); |
| assert.sameValue('nonExportedFunc2' in ns, false, 'nonExportedFunc2'); |
| assert.sameValue('nonExportedGen1' in ns, false, 'nonExportedGen1'); |
| assert.sameValue('nonExportedGen2' in ns, false, 'nonExportedGen2'); |
| assert.sameValue('nonExportedClass1' in ns, false, 'nonExportedClass1'); |
| assert.sameValue('nonExportedClass2' in ns, false, 'nonExportedClass2'); |