diff --git a/spec.html b/spec.html index be911c0..2b4daac 100644 --- a/spec.html +++ b/spec.html @@ -101,6 +101,8 @@

GetExportedNames ( _exportStarSet_, _starExportModule_ ) Concrete 1. For each ExportEntry Record _e_ in _module_.[[StarExportEntries]], do 1. Let _requestedModule_ be ? HostResolveImportedModule(_module_, _e_.[[ModuleRequest]]). 1. Let _starNames_ be ? _requestedModule_.GetExportedNames(_exportStarSet_, _starExportModule_). + 1. If _starNames_ is *null* then, + 1. Return *null*. 1. For each element _n_ of _starNames_, do 1. If SameValue(_n_, `"default"`) is *false*, then 1. If _n_ is not an element of _exportedNames_, then @@ -194,6 +196,8 @@

GetExportedNames ( _exportStarSet_, _starExportModule_ ) Concrete Method

It performs the following steps:

1. Let _module_ be this Dynamic Module Record. + 1. If _module_.[[Status]] is `"uninstantiated"` then, + 1. Return *null*. 1. If _module_.[[StarExportModules]] does not contain _starExportModule_ then, 1. Add _starExportModule_ to _module_.[[StarExportModules]]. 1. Return _module_.[[exportNames]]. @@ -210,6 +214,8 @@

ResolveExport ( _exportName_, _resolveSet_ ) Concrete Method

1. Let _module_ be this Dynamic Module Record. + 1. If _module_.[[Status]] is `"uninstantiated"` then, + 1. Perform ? _module_.Instantiate(). 1. Let _exportNames_ be _module_.[[ExportNames]]. 1. If _exportNames_ does not contain _exportName_ then, 1. Let _envRec_ be the Module Environment Record _module_.[[Environment]] @@ -349,6 +355,8 @@

Runtime Semantics: GetModuleNamespace ( _module_ )

1. Let _namespace_ be _module_.[[Namespace]]. 1. If _namespace_ is *undefined*, then 1. Let _exportedNames_ be ? _module_.GetExportedNames(« », _module_). + 1. If _exportedNames_ is *null*, then + 1. Throw a *ReferenceError* exception 1. Let _unambiguousNames_ be a new empty List. 1. For each _name_ that is an element of _exportedNames_, do 1. Let _resolution_ be ? _module_.ResolveExport(_name_, « »). @@ -357,7 +365,7 @@

Runtime Semantics: GetModuleNamespace ( _module_ )

1. Return _namespace_.
-

The only way GetModuleNamespace can throw is via one of the triggered HostResolveImportedModule calls. Unresolvable names are simply excluded from the namespace at this point. They will lead to a real instantiation error later unless they are all ambiguous star exports that are not explicitly requested anywhere.

+

The only way GetModuleNamespace can throw is either via one of the triggered HostResolveImportedModule calls or by attempting to resolve export names from an uninstantiated Dynamic Module Record during a circular reference execution. Unresolvable names to Source Text Modules are simply excluded from the namespace at this point. They will lead to a real instantiation error later unless they are all ambiguous star exports that are not explicitly requested anywhere.