| // 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). |
| [...] |
| |
| Runtime Semantics: GetModuleNamespace |
| 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 './get-nested-namespace-props-nrml-1_FIXTURE.js'; |
| |
| // Export entries defined by a re-exported as exportns module |
| assert('starAsVarDecl' in ns.exportns, 'starssVarDecl'); |
| assert('starAsLetDecl' in ns.exportns, 'starSsLetDecl'); |
| assert('starAsConstDecl' in ns.exportns, 'starSsConstDecl'); |
| assert('starAsFuncDecl' in ns.exportns, 'starAsFuncDecl'); |
| assert('starAsGenDecl' in ns.exportns, 'starAsGenDecl'); |
| assert('starAsClassDecl' in ns.exportns, 'starAsClassDecl'); |
| assert('starAsBindingId' in ns.exportns, 'starAsBindingId'); |
| assert('starIdName' in ns.exportns, 'starIdName'); |
| assert('starAsIndirectIdName' in ns.exportns, 'starAsIndirectIdName'); |
| assert('starAsIndirectIdName2' in ns.exportns, 'starAsIndirectIdName2'); |
| assert('namespaceBinding' in ns.exportns, 'namespaceBinding'); |
| |
| // Bindings that were not exported from any module |
| assert.sameValue('nonExportedVar' in ns.exportns, false, 'nonExportedVar'); |
| assert.sameValue('nonExportedLet' in ns.exportns, false, 'nonExportedLet'); |
| assert.sameValue('nonExportedConst' in ns.exportns, false, 'nonExportedConst'); |
| assert.sameValue('nonExportedFunc' in ns.exportns, false, 'nonExportedFunc'); |
| assert.sameValue('nonExportedGen' in ns.exportns, false, 'nonExportedGen'); |
| assert.sameValue('nonExportedClass' in ns.exportns, false, 'nonExportedClass'); |