| browser.js |
|
0 |
| error-export-from-named-1_FIXTURE.js |
|
190 |
| error-export-from-named-2_FIXTURE.js |
|
190 |
| error-export-from-named-as.js |
---
description: IndirectExportEntries validation - ambiguous imported bindings
esid: sec-moduledeclarationinstantiation
info: |
[...]
9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
b. If resolution is null or resolution is "ambiguous", throw a
SyntaxError exception.
[...]
15.2.1.16.3 ResolveExport
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be ? HostResolveImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is "ambiguous", return "ambiguous".
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If resolution.[[Module]] and starResolution.[[Module]] are
not the same Module Record or
SameValue(resolution.[[BindingName]],
starResolution.[[BindingName]]) is false, return "ambiguous".
negative:
phase: resolution
type: SyntaxError
flags: [module]
--- |
1681 |
| error-export-from-named.js |
---
description: IndirectExportEntries validation - ambiguous imported bindings
esid: sec-moduledeclarationinstantiation
info: |
[...]
9. For each ExportEntry Record e in module.[[IndirectExportEntries]], do
a. Let resolution be ? module.ResolveExport(e.[[ExportName]], « », « »).
b. If resolution is null or resolution is "ambiguous", throw a
SyntaxError exception.
[...]
15.2.1.16.3 ResolveExport
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be ? HostResolveImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is "ambiguous", return "ambiguous".
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If resolution.[[Module]] and starResolution.[[Module]] are
not the same Module Record or
SameValue(resolution.[[BindingName]],
starResolution.[[BindingName]]) is false, return "ambiguous".
negative:
phase: resolution
type: SyntaxError
flags: [module]
--- |
1676 |
| error-export-from-named_FIXTURE.js |
|
288 |
| error-import-named-1_FIXTURE.js |
|
190 |
| error-import-named-2_FIXTURE.js |
|
190 |
| error-import-named-as.js |
---
description: Named import binding - resolution failure (ambiguous name)
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
[...]
c. Else,
i. Let resolution be ?
importedModule.ResolveExport(in.[[ImportName]], « », « »).
ii. If resolution is null or resolution is "ambiguous", throw a
SyntaxError exception.
15.2.1.16.3 ResolveExport
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be ? HostResolveImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is "ambiguous", return "ambiguous".
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If resolution.[[Module]] and starResolution.[[Module]] are
not the same Module Record or
SameValue(resolution.[[BindingName]],
starResolution.[[BindingName]]) is false, return "ambiguous".
negative:
phase: resolution
type: SyntaxError
flags: [module]
--- |
1875 |
| error-import-named.js |
---
description: Named import binding - resolution failure (ambiguous name)
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
[...]
c. Else,
i. Let resolution be ?
importedModule.ResolveExport(in.[[ImportName]], « », « »).
ii. If resolution is null or resolution is "ambiguous", throw a
SyntaxError exception.
15.2.1.16.3 ResolveExport
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be ? HostResolveImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is "ambiguous", return "ambiguous".
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If resolution.[[Module]] and starResolution.[[Module]] are
not the same Module Record or
SameValue(resolution.[[BindingName]],
starResolution.[[BindingName]]) is false, return "ambiguous".
negative:
phase: resolution
type: SyntaxError
flags: [module]
--- |
1870 |
| error-import-named_FIXTURE.js |
|
278 |
| import-and-export-propagates-binding.js |
---
description: A binding re-exported with `export { foo } from` and `import { foo } from; export { foo }` does not cause ambiguity.
esid: sec-source-text-module-record-initialize-environment
info: |
[...]
7. For each ImportEntry Record in of module.[[ImportEntries]], do
a. Let importedModule be GetImportedModule(module, in.[[ModuleRequest]]).
b. If in.[[ImportName]] is namespace-object, then
i. Let namespace be GetModuleNamespace(importedModule).
ii. Perform ! env.CreateImmutableBinding(in.[[LocalName]], true).
iii. Perform ! env.InitializeBinding(in.[[LocalName]], namespace).
c. Else,
i. Let resolution be importedModule.ResolveExport(in.[[ImportName]]).
ii. If resolution is either null or ambiguous, throw a SyntaxError exception.
Table 59 (Informative): Export Forms Mappings to ExportEntry Records
Export Statement Form [[ExportName]] [[ModuleRequest]] [[ImportName]] [[LocalName]]
export {x}; "x" null null "x"
export {x} from "mod"; "x" "mod" "x" null
16.2.1.7.1 ParseModule ( sourceText, realm, hostDefined )
[...]
10. For each ExportEntry Record ee of exportEntries, do
1. If ee.[[ModuleRequest]] is null, then
i. If importedBoundNames does not contain ee.[[LocalName]], then
1. Append ee to localExportEntries.
ii. Else,
1. Let ie be the element of importEntries whose [[LocalName]] is ee.[[LocalName]].
2. If ie.[[ImportName]] is namespace-object, then
a. NOTE: This is a re-export of an imported module namespace object.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]], [[ImportName]]: ~all~, [[LocalName]]: *null*, [[ExportName]]: ee.[[ExportName]] } to indirectExportEntries.
3. Else,
a. NOTE: This is a re-export of a single name.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]],
[[ImportName]]: ie.[[ImportName]], [[LocalName]]: null, [[ExportName]]:
ee.[[ExportName]] } to indirectExportEntries.
2. Else if ee.[[ImportName]] is all-but-default, then
[...]
3. Else,
a. Append ee to indirectExportEntries.
15.2.1.16.3 ResolveExport
[...]
6. For each ExportEntry Record e of module.[[IndirectExportEntries]], do
a. If e.[[ExportName]] is exportName, then
i. Assert: e.[[ModuleRequest]] is not null.
ii. Let importedModule be GetImportedModule(module, e.[[ModuleRequest]]).
iii. If e.[[ImportName]] is all, then
1. Assert: module does not provide the direct binding for this export.
2. Return ResolvedBinding Record { [[Module]]: importedModule, [[BindingName]]: namespace }.
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be GetImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is ~ambiguous~, return ~ambiguous~.
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If _resolution_.[[Module]] and _starResolution_.[[Module]] are
not the same Module Record, return ~ambiguous~.
3. If _resolution_.[[BindingName]] is not _starResolution_.[[BindingName]],
return ~ambiguous~.
flags: [module]
--- |
4276 |
| import-and-export-propagates-binding_export-from_FIXTURE.js |
|
238 |
| import-and-export-propagates-binding_FIXTURE.js |
|
187 |
| import-and-export-propagates-binding_import-and-export_FIXTURE.js |
|
254 |
| namespace-empty-module_FIXTURE.js |
|
164 |
| namespace-export-star-as-from-1_FIXTURE.js |
|
225 |
| namespace-export-star-as-from-2_FIXTURE.js |
|
225 |
| namespace-import-star-as-and-export-1_FIXTURE.js |
|
241 |
| namespace-import-star-as-and-export-2_FIXTURE.js |
|
241 |
| namespace-unambiguous-if-export-star-as-from-and-import-star-as-and-export.js |
---
description: Exporting the same namespace object twice with `export * as foo` and `import * as foo; export { foo }` produces an unambiguous binding
esid: sec-source-text-module-record-initialize-environment
info: |
[...]
7. For each ImportEntry Record in of module.[[ImportEntries]], do
a. Let importedModule be GetImportedModule(module, in.[[ModuleRequest]]).
b. If in.[[ImportName]] is namespace-object, then
i. Let namespace be GetModuleNamespace(importedModule).
ii. Perform ! env.CreateImmutableBinding(in.[[LocalName]], true).
iii. Perform ! env.InitializeBinding(in.[[LocalName]], namespace).
c. Else,
i. Let resolution be importedModule.ResolveExport(in.[[ImportName]]).
ii. If resolution is either null or ambiguous, throw a SyntaxError exception.
Table 59 (Informative): Export Forms Mappings to ExportEntry Records
Export Statement Form [[ExportName]] [[ModuleRequest]] [[ImportName]] [[LocalName]]
export * as ns from "mod"; "ns" "mod" all null
16.2.1.7.1 ParseModule ( sourceText, realm, hostDefined )
[...]
10. For each ExportEntry Record ee of exportEntries, do
1. If ee.[[ModuleRequest]] is null, then
i. If importedBoundNames does not contain ee.[[LocalName]], then
1. Append ee to localExportEntries.
ii. Else,
1. Let ie be the element of importEntries whose [[LocalName]] is ee.[[LocalName]].
2. If ie.[[ImportName]] is namespace-object, then
a. NOTE: This is a re-export of an imported module namespace object.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]], [[ImportName]]: ~all~, [[LocalName]]: *null*, [[ExportName]]: ee.[[ExportName]] } to indirectExportEntries.
3. Else,
a. NOTE: This is a re-export of a single name.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]],
[[ImportName]]: ie.[[ImportName]], [[LocalName]]: null, [[ExportName]]:
ee.[[ExportName]] } to indirectExportEntries.
2. Else if ee.[[ImportName]] is all-but-default, then
[...]
3. Else,
a. Append ee to indirectExportEntries.
15.2.1.16.3 ResolveExport
[...]
6. For each ExportEntry Record e of module.[[IndirectExportEntries]], do
a. If e.[[ExportName]] is exportName, then
i. Assert: e.[[ModuleRequest]] is not null.
ii. Let importedModule be GetImportedModule(module, e.[[ModuleRequest]]).
iii. If e.[[ImportName]] is all, then
1. Assert: module does not provide the direct binding for this export.
2. Return ResolvedBinding Record { [[Module]]: importedModule, [[BindingName]]: namespace }.
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be GetImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is ~ambiguous~, return ~ambiguous~.
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If _resolution_.[[Module]] and _starResolution_.[[Module]] are
not the same Module Record, return ~ambiguous~.
3. If _resolution_.[[BindingName]] is not _starResolution_.[[BindingName]],
return ~ambiguous~.
flags: [module]
--- |
4205 |
| namespace-unambiguous-if-export-star-as-from.js |
---
description: Exporting the same namespace object twice with `export * as foo` produces an unambiguous binding
esid: sec-source-text-module-record-initialize-environment
info: |
[...]
7. For each ImportEntry Record in of module.[[ImportEntries]], do
a. Let importedModule be GetImportedModule(module, in.[[ModuleRequest]]).
b. If in.[[ImportName]] is namespace-object, then
i. Let namespace be GetModuleNamespace(importedModule).
ii. Perform ! env.CreateImmutableBinding(in.[[LocalName]], true).
iii. Perform ! env.InitializeBinding(in.[[LocalName]], namespace).
c. Else,
i. Let resolution be importedModule.ResolveExport(in.[[ImportName]]).
ii. If resolution is either null or ambiguous, throw a SyntaxError exception.
Table 59 (Informative): Export Forms Mappings to ExportEntry Records
Export Statement Form [[ExportName]] [[ModuleRequest]] [[ImportName]] [[LocalName]]
export {x}; "x" null null "x"
export * as ns from "mod"; "ns" "mod" all null
16.2.1.7.1 ParseModule ( sourceText, realm, hostDefined )
[...]
10. For each ExportEntry Record ee of exportEntries, do
1. If ee.[[ModuleRequest]] is null, then
i. If importedBoundNames does not contain ee.[[LocalName]], then
1. Append ee to localExportEntries.
ii. Else,
1. Let ie be the element of importEntries whose [[LocalName]] is ee.[[LocalName]].
2. If ie.[[ImportName]] is namespace-object, then
a. NOTE: This is a re-export of an imported module namespace object.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]], [[ImportName]]: ~all~, [[LocalName]]: *null*, [[ExportName]]: ee.[[ExportName]] } to indirectExportEntries.
3. Else,
a. NOTE: This is a re-export of a single name.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]],
[[ImportName]]: ie.[[ImportName]], [[LocalName]]: null, [[ExportName]]:
ee.[[ExportName]] } to indirectExportEntries.
2. Else if ee.[[ImportName]] is all-but-default, then
[...]
3. Else,
a. Append ee to indirectExportEntries.
15.2.1.16.3 ResolveExport
[...]
6. For each ExportEntry Record e of module.[[IndirectExportEntries]], do
a. If e.[[ExportName]] is exportName, then
i. Assert: e.[[ModuleRequest]] is not null.
ii. Let importedModule be GetImportedModule(module, e.[[ModuleRequest]]).
iii. If e.[[ImportName]] is all, then
1. Assert: module does not provide the direct binding for this export.
2. Return ResolvedBinding Record { [[Module]]: importedModule, [[BindingName]]: namespace }.
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be GetImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is ~ambiguous~, return ~ambiguous~.
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If _resolution_.[[Module]] and _starResolution_.[[Module]] are
not the same Module Record, return ~ambiguous~.
3. If _resolution_.[[BindingName]] is not _starResolution_.[[BindingName]],
return ~ambiguous~.
flags: [module]
--- |
4231 |
| namespace-unambiguous-if-import-star-as-and-export.js |
---
description: Exporting the same namespace object twice with `import * as foo; export { foo }` produces an unambiguous binding
esid: sec-source-text-module-record-initialize-environment
info: |
[...]
7. For each ImportEntry Record in of module.[[ImportEntries]], do
a. Let importedModule be GetImportedModule(module, in.[[ModuleRequest]]).
b. If in.[[ImportName]] is namespace-object, then
i. Let namespace be GetModuleNamespace(importedModule).
ii. Perform ! env.CreateImmutableBinding(in.[[LocalName]], true).
iii. Perform ! env.InitializeBinding(in.[[LocalName]], namespace).
c. Else,
i. Let resolution be importedModule.ResolveExport(in.[[ImportName]]).
ii. If resolution is either null or ambiguous, throw a SyntaxError exception.
Table 59 (Informative): Export Forms Mappings to ExportEntry Records
Export Statement Form [[ExportName]] [[ModuleRequest]] [[ImportName]] [[LocalName]]
export * as ns from "mod"; "ns" "mod" all null
16.2.1.7.1 ParseModule ( sourceText, realm, hostDefined )
[...]
10. For each ExportEntry Record ee of exportEntries, do
1. If ee.[[ModuleRequest]] is null, then
i. If importedBoundNames does not contain ee.[[LocalName]], then
1. Append ee to localExportEntries.
ii. Else,
1. Let ie be the element of importEntries whose [[LocalName]] is ee.[[LocalName]].
2. If ie.[[ImportName]] is namespace-object, then
a. NOTE: This is a re-export of an imported module namespace object.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]], [[ImportName]]: ~all~, [[LocalName]]: *null*, [[ExportName]]: ee.[[ExportName]] } to indirectExportEntries.
3. Else,
a. NOTE: This is a re-export of a single name.
b. Append the ExportEntry Record { [[ModuleRequest]]: ie.[[ModuleRequest]],
[[ImportName]]: ie.[[ImportName]], [[LocalName]]: null, [[ExportName]]:
ee.[[ExportName]] } to indirectExportEntries.
2. Else if ee.[[ImportName]] is all-but-default, then
[...]
3. Else,
a. Append ee to indirectExportEntries.
15.2.1.16.3 ResolveExport
[...]
6. For each ExportEntry Record e of module.[[IndirectExportEntries]], do
a. If e.[[ExportName]] is exportName, then
i. Assert: e.[[ModuleRequest]] is not null.
ii. Let importedModule be GetImportedModule(module, e.[[ModuleRequest]]).
iii. If e.[[ImportName]] is all, then
1. Assert: module does not provide the direct binding for this export.
2. Return ResolvedBinding Record { [[Module]]: importedModule, [[BindingName]]: namespace }.
[...]
9. Let starResolution be null.
10. For each ExportEntry Record e in module.[[StarExportEntries]], do
a. Let importedModule be GetImportedModule(module,
e.[[ModuleRequest]]).
b. Let resolution be ? importedModule.ResolveExport(exportName,
resolveSet, exportStarSet).
c. If resolution is ~ambiguous~, return ~ambiguous~.
d. If resolution is not null, then
i. If starResolution is null, let starResolution be resolution.
ii. Else,
1. Assert: there is more than one * import that includes the
requested name.
2. If _resolution_.[[Module]] and _starResolution_.[[Module]] are
not the same Module Record, return ~ambiguous~.
3. If _resolution_.[[BindingName]] is not _starResolution_.[[BindingName]],
return ~ambiguous~.
flags: [module]
--- |
4165 |
| omitted-from-namespace-1_FIXTURE.js |
|
225 |
| omitted-from-namespace-2_FIXTURE.js |
|
226 |
| omitted-from-namespace.js |
---
description: >
Ambiguous exports are not reflected in module namespace objects, nor do
they trigger an error upon resolution
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).
[...]
15.2.1.18 Runtime Semantics: GetModuleNamespace
[...]
3. If namespace is undefined, then
[...]
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]
--- |
1484 |
| omitted-from-namespace_FIXTURE.js |
|
286 |
| shell.js |
|
0 |