| // Copyright (C) 2018 Valerie Young. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| description: > |
| Default exports are included in an imported module namespace object when module exported with `* as namespace` |
| esid: sec-moduledeclarationinstantiation |
| info: | |
| [...] |
| 4. Let result be InnerModuleInstantiation(module, stack, 0). |
| [...] |
| |
| InnerModuleInstantiation( module, stack, index ) |
| [...] |
| 10. Perform ? ModuleDeclarationEnvironmentSetup(module). |
| [...] |
| |
| ModuleDeclarationEnvironmentSetup( module ) |
| [...] |
| c. If in.[[ImportName]] is "*", then |
| [...] |
| d. Else, |
| i. Let resolution be ? importedModule.ResolveExport(in.[[ImportName]], « »). |
| ii. If resolution is null or "ambiguous", throw a SyntaxError exception. |
| iii. If resolution.[[BindingName]] is "*namespace*", then |
| 1. Let namespace be ? GetModuleNamespace(resolution.[[Module]]). |
| [...] |
| |
| 15.2.1.18 Runtime Semantics: GetModuleNamespace |
| |
| [...] |
| 3. If namespace is undefined, then |
| a. Let exportedNames be ? module.GetExportedNames(« »). |
| [...] |
| |
| 15.2.1.16.2 GetExportedNames |
| |
| [...] |
| 7. For each ExportEntry Record e in module.[[StarExportEntries]], do |
| [...] |
| c. For each element n of starNames, do |
| i. If SameValue(n, "default") is false, then |
| [...] |
| flags: [module] |
| features: [export-star-as-namespace-from-module] |
| ---*/ |
| |
| import {named} from './instn-star-props-dflt-skip-star-as-named_FIXTURE.js'; |
| import {production} from './instn-star-props-dflt-skip-star-as-prod_FIXTURE.js'; |
| |
| assert('namedOther' in named); |
| assert.sameValue( |
| 'default' in named, true, 'default specified via identifier' |
| ); |
| |
| assert('productionOther' in production); |
| assert.sameValue( |
| 'default' in production, true, 'default specified via dedicated production' |
| ); |