blob: 3e9077085121ebd04cb0eaaa807cee46d3e4efa0 [file] [log] [blame]
// 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');