commit 61644fd71fac3987ed3b45ab55a5ef54ecfa4d5e
parent 44211484e0bd78348f1f7fb09cb35fe81c8b8589
Author: Nicolò Ribaudo <nribaudo@igalia.com>
Date: Wed, 26 Nov 2025 14:46:29 +0000
Bug 2002191 - Align indirect and direct module namespace re-exports r=jonco
This patch implements https://github.com/tc39/ecma262/pull/3715, to make
import * as ns from "mod";
export { ns };
behave the same as
export * as ns from "mod";
Tested by https://github.com/tc39/test262/pull/4606
Differential Revision: https://phabricator.services.mozilla.com/D274013
Diffstat:
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/js/src/builtin/ModuleObject.cpp b/js/src/builtin/ModuleObject.cpp
@@ -1698,13 +1698,17 @@ bool ModuleBuilder::buildTables(frontend::StencilModuleMetadata& metadata) {
return false;
}
} else {
+ // All names should have already been marked as used-by-stencil.
if (!importEntry->importName) {
- if (!metadata.localExportEntries.append(exp)) {
+ // This is a re-export of an imported module namespace object.
+ auto entry = frontend::StencilModuleEntry::exportNamespaceFromEntry(
+ importEntry->moduleRequest, exp.exportName, exp.lineno,
+ exp.column);
+ if (!metadata.indirectExportEntries.append(entry)) {
js::ReportOutOfMemory(fc_);
return false;
}
} else {
- // All names should have already been marked as used-by-stencil.
auto entry = frontend::StencilModuleEntry::exportFromEntry(
importEntry->moduleRequest, importEntry->importName,
exp.exportName, exp.lineno, exp.column);