tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mjs/src/builtin/ModuleObject.cpp | 8++++++--
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);