Reproduction link or steps
https://repl.rolldown.rs/#eNp9UUFqwzAQ/MqiS5IS7LvB/UEplNKTLmq8bgWyJKR1nGD8964su3FoqPFBo52Z1e6MohXVKLRt8FJQTGcrqhs+ihNDvHgXCJ5ARaDBQRtcB1IUJQNmScE8FBWFHqejCM6Yxg22ODnb6q+N7YNKbqC7uQFdPcIIbwvt1ZN2NsKUG+5W+U5aaZc3Ndiq3hDsR1Bew3So/sjrZxilBQhIfbD5DOB68j1VKwTwASOGM764pjcYK0jjHNdq60KnmL7D2HH/dDXNxUla/qUtS3jXnmX8jGLeXxYC1HUNalCaII+5vw1ymHX5SzoeCoPu0JIy/+jKLS+ZCF57zmJd9YIe5PcdEDcJJrjJsFUmphDX+1+/Fd85co6RoLt+qKDVp0Go2XRwwTT3fmx4ZpVRhJHE9APDLNCp
What is expected?
two.js and three.js should keep their named exports
import { __export } from "./_virtual/rolldown_runtime.js";
//#region three.ts
var three_exports = {};
__export(three_exports, { myVariable: () => myVariable });
const myVariable = "world";
//#endregion
export { myVariable, three_exports };
What is actually happening?
two.js and three.js named exports are removed
import { __export } from "./_virtual/rolldown_runtime.js";
//#region three.ts
var three_exports = {};
__export(three_exports, { myVariable: () => myVariable });
const myVariable = "world";
//#endregion
export { three_exports };
System Info
System:
OS: macOS 15.5
CPU: (11) arm64 Apple M3 Pro
Memory: 81.06 MB / 18.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 22.14.0 - ~/.nvm/versions/node/v22.14.0/bin/node
Yarn: 1.22.21 - /opt/homebrew/bin/yarn
npm: 10.9.2 - ~/.nvm/versions/node/v22.14.0/bin/npm
pnpm: 9.9.0 - ~/Library/pnpm/pnpm
Browsers:
Chrome: 139.0.7258.155
Edge: 139.0.3405.125
Safari: 18.5
npmPackages:
rolldown: 1.0.0-beta.34 => 1.0.0-beta.34
Any additional comments?
If two.ts and three.ts are declared as inputs the exports are keep, but I would expect preserveModules not to remove any export.
Rollup reproduction, named export are preserved: https://bundler.sxzz.dev/#eNptkMFuwyAMhl/F8qXSFGV3pD3CrjtxoY3ZMhEcGVg7Rbx7naZNG7U3vt8/nxETejQT9rGjU5vTfI5o7tzgQZFOI0uGN3AJ8pHBCw9gsX1X0JZF7RGaLIVqg0t4U13phehHiB5UMz7IvAvpYrvmq+/GG+OBY8ow/H856d0+EHyo9MgSOos2bo3CIZSx1Su+/25/V/NTvtnQkXclZJhsBOCSx5LNAgCjUCL5o0/uSqBkYP6JZpl5lsFpdUdp2M1R1UHFqg/Zr0uxngG2+oDb
Reproduction link or steps
https://repl.rolldown.rs/#eNp9UUFqwzAQ/MqiS5IS7LvB/UEplNKTLmq8bgWyJKR1nGD8964su3FoqPFBo52Z1e6MohXVKLRt8FJQTGcrqhs+ihNDvHgXCJ5ARaDBQRtcB1IUJQNmScE8FBWFHqejCM6Yxg22ODnb6q+N7YNKbqC7uQFdPcIIbwvt1ZN2NsKUG+5W+U5aaZc3Ndiq3hDsR1Bew3So/sjrZxilBQhIfbD5DOB68j1VKwTwASOGM764pjcYK0jjHNdq60KnmL7D2HH/dDXNxUla/qUtS3jXnmX8jGLeXxYC1HUNalCaII+5vw1ymHX5SzoeCoPu0JIy/+jKLS+ZCF57zmJd9YIe5PcdEDcJJrjJsFUmphDX+1+/Fd85co6RoLt+qKDVp0Go2XRwwTT3fmx4ZpVRhJHE9APDLNCp
What is expected?
two.jsandthree.jsshould keep their named exportsWhat is actually happening?
two.jsandthree.jsnamed exports are removedSystem Info
System: OS: macOS 15.5 CPU: (11) arm64 Apple M3 Pro Memory: 81.06 MB / 18.00 GB Shell: 5.9 - /bin/zsh Binaries: Node: 22.14.0 - ~/.nvm/versions/node/v22.14.0/bin/node Yarn: 1.22.21 - /opt/homebrew/bin/yarn npm: 10.9.2 - ~/.nvm/versions/node/v22.14.0/bin/npm pnpm: 9.9.0 - ~/Library/pnpm/pnpm Browsers: Chrome: 139.0.7258.155 Edge: 139.0.3405.125 Safari: 18.5 npmPackages: rolldown: 1.0.0-beta.34 => 1.0.0-beta.34Any additional comments?
If
two.tsandthree.tsare declared as inputs the exports are keep, but I would expectpreserveModulesnot to remove any export.Rollup reproduction, named export are preserved: https://bundler.sxzz.dev/#eNptkMFuwyAMhl/F8qXSFGV3pD3CrjtxoY3ZMhEcGVg7Rbx7naZNG7U3vt8/nxETejQT9rGjU5vTfI5o7tzgQZFOI0uGN3AJ8pHBCw9gsX1X0JZF7RGaLIVqg0t4U13phehHiB5UMz7IvAvpYrvmq+/GG+OBY8ow/H856d0+EHyo9MgSOos2bo3CIZSx1Su+/25/V/NTvtnQkXclZJhsBOCSx5LNAgCjUCL5o0/uSqBkYP6JZpl5lsFpdUdp2M1R1UHFqg/Zr0uxngG2+oDb