Skip to content

Comments

fix: when package only contains export default, cjsDefault didn't resolve correctly#7873

Merged
shulaoda merged 1 commit intomainfrom
01-12-fix_7833
Jan 14, 2026
Merged

fix: when package only contains export default, cjsDefault didn't resolve correctly#7873
shulaoda merged 1 commit intomainfrom
01-12-fix_7833

Conversation

@IWANABETHATGUY
Copy link
Member

@IWANABETHATGUY IWANABETHATGUY commented Jan 14, 2026

Closed #7833

Copy link
Member Author


How to use the Graphite Merge Queue

Add the label graphite: merge-when-ready to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@netlify
Copy link

netlify bot commented Jan 14, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 2edf04e
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/696734ce39b6ad0008923851

@netlify
Copy link

netlify bot commented Jan 14, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit b8a41c4
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/696734ffc165230008c50484

@netlify
Copy link

netlify bot commented Jan 14, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 851b3fc
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69674634618a26000848452f

@IWANABETHATGUY IWANABETHATGUY marked this pull request as ready for review January 14, 2026 06:46
Copilot AI review requested due to automatic review settings January 14, 2026 06:46
@IWANABETHATGUY IWANABETHATGUY changed the title fix: 7833 refactor: extract cross-chunk symbol resolution logic into dedicated method Jan 14, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes issue #7833 related to incorrect cross-chunk symbol access in CJS output format when a chunk has OutputExports::Default.

Changes:

  • Refactored inline cross-chunk symbol resolution logic into a dedicated function finalized_expr_for_cross_chunk_symbol with comprehensive documentation
  • Fixed bug where default exports from entry chunks with OutputExports::Default were incorrectly accessed as require_binding.default instead of just require_binding
  • Added comprehensive test case issue_7833 covering the Entry + None + Default + default scenario

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
crates/rolldown/src/module_finalizers/mod.rs Refactored cross-chunk symbol access logic into a new documented function; added fix for OutputExports::Default case
crates/rolldown/tests/rolldown/cjs_compat/issue_7833/*.js Added test files demonstrating the bug fix with two entry chunks (main and config)
crates/rolldown/tests/rolldown/cjs_compat/issue_7833/_config.json Test configuration for CJS format with multiple entry points
crates/rolldown/tests/rolldown/cjs_compat/issue_7833/_test.mjs Runtime test verifying correct default export access
crates/rolldown/tests/rolldown/cjs_compat/issue_7833/artifacts.snap Expected output snapshot showing correct require_binding access without .default
crates/rolldown/tests/snapshots/integration_rolldown__filename_with_hash.snap Updated snapshot with hashes for the new test case

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@IWANABETHATGUY IWANABETHATGUY changed the title refactor: extract cross-chunk symbol resolution logic into dedicated method fix: extract cross-chunk symbol resolution logic into dedicated method Jan 14, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

Benchmarks Rust

group                                                        pr                                     target
-----                                                        --                                     ------
bundle/bundle@multi-duplicated-top-level-symbol              1.05     71.0±1.88ms        ? ?/sec    1.00     67.8±1.95ms        ? ?/sec
bundle/bundle@multi-duplicated-top-level-symbol-sourcemap    1.05     77.7±2.24ms        ? ?/sec    1.00     73.8±2.25ms        ? ?/sec
bundle/bundle@rome_ts                                        1.05    106.5±3.02ms        ? ?/sec    1.00    101.1±1.63ms        ? ?/sec
bundle/bundle@rome_ts-sourcemap                              1.03    116.5±1.98ms        ? ?/sec    1.00    112.8±1.78ms        ? ?/sec
bundle/bundle@threejs                                        1.01     37.6±0.76ms        ? ?/sec    1.00     37.1±0.67ms        ? ?/sec
bundle/bundle@threejs-sourcemap                              1.02     42.5±0.96ms        ? ?/sec    1.00     41.8±0.59ms        ? ?/sec
bundle/bundle@threejs10x                                     1.02    384.3±3.68ms        ? ?/sec    1.00    377.1±3.40ms        ? ?/sec
bundle/bundle@threejs10x-sourcemap                           1.02    445.8±8.21ms        ? ?/sec    1.00    436.9±5.95ms        ? ?/sec
scan/scan@rome_ts                                            1.02     82.1±2.50ms        ? ?/sec    1.00     80.7±1.71ms        ? ?/sec
scan/scan@threejs                                            1.03     28.3±1.76ms        ? ?/sec    1.00     27.5±0.33ms        ? ?/sec
scan/scan@threejs10x                                         1.01    287.4±5.35ms        ? ?/sec    1.00    283.7±4.22ms        ? ?/sec

@IWANABETHATGUY IWANABETHATGUY changed the title fix: extract cross-chunk symbol resolution logic into dedicated method fix: when package only contains export default, cjsDefault didn't resolve correctly Jan 14, 2026
@graphite-app
Copy link
Contributor

graphite-app bot commented Jan 14, 2026

Merge activity

  • Jan 14, 7:23 AM UTC: IWANABETHATGUY added this pull request to the Graphite merge queue.
  • Jan 14, 7:45 AM UTC: The Graphite merge queue couldn't merge this PR because it was not satisfying all requirements (Failed CI: 'node-test-macos / Node Test').

Copilot AI review requested due to automatic review settings January 14, 2026 07:30
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@shulaoda shulaoda merged commit 3489dc6 into main Jan 14, 2026
57 of 58 checks passed
@shulaoda shulaoda deleted the 01-12-fix_7833 branch January 14, 2026 09:20
shulaoda added a commit that referenced this pull request Jan 14, 2026
## [1.0.0-beta.60] - 2026-01-14

### 💥 BREAKING CHANGES

- tsconfig: enable auto-discovery by default (#7817) by @shulaoda

### 🚀 Features

- distinguish transformer diagnostics from parse errors (#7872) by @shulaoda
- emit transformer warnings instead of ignoring them (#7850) by @shulaoda
- node: add `output.codeSplitting` option and deprecate `output.advancedChunks` (#7855) by @hyf0
- nativeMagicString reset (#7828) by @IWANABETHATGUY
- nativeMagicString lastChar (#7819) by @IWANABETHATGUY
- dev/lazy: inject lazy compilation runtime automatically (#7816) by @hyf0
- nativeMagicString snip (#7818) by @IWANABETHATGUY
- nativeMagicString construct with options (#7814) by @IWANABETHATGUY
- nativeMagicString clone (#7813) by @IWANABETHATGUY
- nativeMagicString `insert` (#7812) by @IWANABETHATGUY
- nativeMagicString `slice` (#7807) by @IWANABETHATGUY
- nativeMagicString trim methods (#7800) by @IWANABETHATGUY
- make closeBundle hook receive the last error (#7278) by @Copilot

### 🐛 Bug Fixes

- when package only contains export default, cjsDefault didn't resolve correctly (#7873) by @IWANABETHATGUY
- inline __name calls for default exports  (#7862) by @IWANABETHATGUY
- improve variable renaming to avoid unnecessary shadowing in nested scopes (#7859) by @IWANABETHATGUY
- use correct index when inserting keepNames statements during export default transformation (#7853) by @IWANABETHATGUY
- transform non-static dynamic imports when `dynamicImportInCjs` is `false` (#7823) by @shulaoda
- dev/lazy: should include imported and non-executed modules in the patch (#7815) by @hyf0
- set ExportsKind to Esm when json is none object literal  (#7808) by @IWANABETHATGUY
- nativeMagicString move api (#7796) by @IWANABETHATGUY
- remove unnecessary exports after merging into commong and user defined entry (#7789) by @IWANABETHATGUY
- use output.name instead of chunk.name in mixed export warning (#7788) by @Copilot

### 🚜 Refactor

- generalize ParseError to OxcError with dynamic EventKind (#7868) by @shulaoda
- rust: rename `advanced_chunks` to `manual_code_splitting` (#7856) by @hyf0
- string_wizard error hanlding (#7830) by @IWANABETHATGUY
- remove `experimental.disableLiveBindings` option (#7820) by @sapphi-red
- node/test: run fixture tests in concurrent (#7790) by @hyf0
- move ConfigExport and RolldownOptionsFunction types to define-config (#7799) by @shulaoda
- cli: validate config after resolving and improve error message (#7798) by @shulaoda

### 📚 Documentation

- rebrand (#7670) by @yyx990803
- fix incorrect default value for propertyReadSideEffects (#7847) by @Copilot
- remove options pages and redirect to reference pages (#7834) by @sapphi-red
- options: inline types to option property pages (#7831) by @sapphi-red
- options: port checks.pluginTimings content from options page to reference page (#7832) by @sapphi-red
- options: use `@linkcode` where possible (#7824) by @sapphi-red
- options: port content from options page to reference page (#7822) by @sapphi-red
- options: add descriptions for output options (#7821) by @sapphi-red
- options: add description for input options (#7802) by @sapphi-red
- options: add description for `checks.*` (#7801) by @sapphi-red
- apis: add hook graph (#7671) by @sapphi-red

### 🧪 Testing

- add all valid combination of chunk exports related test (#7851) by @IWANABETHATGUY
- enable MagicString test after api return type alignment (#7797) by @IWANABETHATGUY
- init magic-string test (#7794) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- vite-tests: configure git user for rebase operation (#7875) by @shulaoda
- rolldown_binding: remove v3 native plugins (#7837) by @shulaoda
- rolldown_binding: allow crate-type as lib (#7866) by @Brooooooklyn
- README.md: adjust position and size of rolldown logo (#7861) by @hyf0
- deps: update test262 submodule for tests (#7857) by @sapphi-red
- deps: update oxc to v0.108.0 (#7845) by @renovate[bot]
- deps: update dependency oxlint to v1.39.0 (#7849) by @renovate[bot]
- deps: update dependency oxfmt to ^0.24.0 (#7844) by @renovate[bot]
- deps: update npm packages (#7841) by @renovate[bot]
- deps: update rust crates (#7839) by @renovate[bot]
- deps: update github-actions (#7840) by @renovate[bot]
- use workspace edition for all crates (#7829) by @IWANABETHATGUY
- deps: update dependency oxlint-tsgolint to v0.11.0 (#7827) by @renovate[bot]
- deps: update napi to v3.8.2 (#7810) by @renovate[bot]
- remove outdated snapshot files (#7806) by @shulaoda
- deps: update crate-ci/typos action to v1.42.0 (#7792) by @renovate[bot]

Co-authored-by: shulaoda <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When package only contains export default, cjsDefault didn't resolve correctly

2 participants