Skip to content

refactor: use semantic reference flags for member write detection#9060

Merged
Dunqing merged 1 commit intomainfrom
oxc/const-enum-refactor-traverse-state
Apr 16, 2026
Merged

refactor: use semantic reference flags for member write detection#9060
Dunqing merged 1 commit intomainfrom
oxc/const-enum-refactor-traverse-state

Conversation

@Dunqing
Copy link
Copy Markdown
Contributor

@Dunqing Dunqing commented Apr 10, 2026

Summary

  • Replace TraverseState bitflags with oxc's semantic ReferenceFlags::is_member_write_target() for detecting member expression writes
  • Remove manual visitor overrides (visit_simple_assignment_target, visit_computed_member_expression) that tracked write context
  • Simplify TraverseState enum down to a plain is_top_level: bool field

Test plan

  • CI passes (existing tests cover member write detection behavior)

🤖 Generated with Claude Code

@Dunqing Dunqing force-pushed the oxc/const-enum-refactor-traverse-state branch from b2d6929 to fa2a684 Compare April 15, 2026 07:23
@Dunqing Dunqing changed the base branch from oxc/const-enum to main April 15, 2026 07:38
@Dunqing Dunqing force-pushed the oxc/const-enum-refactor-traverse-state branch from fa2a684 to 5279e18 Compare April 15, 2026 07:47
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 15, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 34071d9
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69e07a766241840008de8eed

@Dunqing Dunqing force-pushed the oxc/const-enum-refactor-traverse-state branch from ea86d17 to 8b074d4 Compare April 15, 2026 08:16
@Dunqing Dunqing marked this pull request as ready for review April 15, 2026 08:48
@Dunqing Dunqing requested a review from IWANABETHATGUY April 15, 2026 08:48
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 15, 2026

Merging this PR will not alter performance

✅ 4 untouched benchmarks
⏩ 10 skipped benchmarks1


Comparing oxc/const-enum-refactor-traverse-state (34071d9) with main (71ed056)

Open in CodSpeed

Footnotes

  1. 10 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@Dunqing Dunqing enabled auto-merge (squash) April 15, 2026 14:11
…s for member write detection

Use oxc's `ReferenceFlags::is_member_write_target()` from semantic analysis instead of
manually tracking member expression write context via visitor overrides. This removes the
`TraverseState` bitflags enum entirely, replacing it with a simple `is_top_level` bool
and direct queries to semantic data.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Dunqing Dunqing force-pushed the oxc/const-enum-refactor-traverse-state branch from 8b074d4 to 34071d9 Compare April 16, 2026 05:58
@Dunqing Dunqing merged commit 0f93cac into main Apr 16, 2026
31 checks passed
@Dunqing Dunqing deleted the oxc/const-enum-refactor-traverse-state branch April 16, 2026 06:02
@github-actions github-actions Bot mentioned this pull request Apr 16, 2026
shulaoda added a commit that referenced this pull request Apr 16, 2026
## [1.0.0-rc.16] - 2026-04-16

### 🚀 Features

- const enum cross-module inlining support (#8796) by @Dunqing
- implement module tagging system for code splitting (#9045) by @hyf0

### 🐛 Bug Fixes

- rolldown_plugin_vite_manifest: handle duplicate chunk names for CSS entries (#9059) by @sapphi-red
- improve error message for invalid return values in function options (#9125) by @shulaoda
- await async export-star init wrappers (#9101) by @thezzisu
- never panic during diagnostic emission (#9091) by @IWANABETHATGUY
- include array rest pattern in binding_identifiers (#9112) by @IWANABETHATGUY
- rolldown: set worker thread count with ROLLDOWN_WORKER_THREADS (#9086) by @fpotter
- rolldown_plugin_lazy_compilation: escape request ID in proxy modules (#9102) by @h-a-n-a
- treat namespace member access as side-effect-free (#9099) by @IWANABETHATGUY
- relax overly conservative side-effect leak check in chunk optimizer (#9085) by @IWANABETHATGUY
- runtime: release `cb` reference after `__commonJS` factory initialization (#9067) by @hyf0-agent
- `@__NO_SIDE_EFFECTS__` wrapper should not remove dynamic imports (#9075) by @IWANABETHATGUY
- rolldown_plugin_vite_import_glob: use POSIX path join/normalize for glob resolution (#9077) by @shulaoda
- emit REQUIRE_TLA error when require() loads a module with top-level await (#9071) by @jaehafe
- emit namespace declaration for empty modules in manual chunks (#8993) by @privatenumber
- rolldown_plugin_vite_import_glob: keep common base on path segment boundary (#9070) by @shulaoda
- prevent circular runtime helper imports during facade elimination (#8989) (#9057) by @IWANABETHATGUY
- correct circular dependency check in facade elimination (#9047) by @h-a-n-a
- docs: correct dead link in CodeSplittingGroup.tags JSDoc (#9051) by @hyf0
- emit DUPLICATE_SHEBANG warning when banner contains shebang (#9026) by @IWANABETHATGUY

### 🚜 Refactor

- use semantic reference flags for member write detection (#9060) by @Dunqing
- extract UsedSymbolRefs newtype wrapper (#9130) by @IWANABETHATGUY
- dedupe await wrapping in export-star init emit (#9119) by @IWANABETHATGUY
- calculate side-effect-free function symbols on demand (#9120) by @IWANABETHATGUY
- extract duplicated top-level await handling into shared helper (#9087) by @IWANABETHATGUY
- rolldown_plugin_vite_import_glob: use split_first for get_common_base (#9069) by @shulaoda
- simplify ESM init deduplication with idiomatic insert check (#9044) by @IWANABETHATGUY

### 📚 Documentation

- document runtime module placement strategy in code-splitting design (#9062) by @IWANABETHATGUY
- clarify `options` hook behavior difference with Rollup in watch mode (#9053) by @sapphi-red
- meta/design: introduce module tags (#9017) by @hyf0

### ⚡ Performance

- convert `generate_transitive_esm_init` to iterative (#9046) by @IWANABETHATGUY

### 🧪 Testing

- merge strict/non_strict test variants using configVariants (#9089) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- disable Renovate auto-updates for oxc packages (#9129) by @IWANABETHATGUY
- upgrade oxc@0.126.0 (#9127) by @Dunqing
- deps: update napi to v3.8.5 (#9126) by @renovate[bot]
- deps: update dependency @napi-rs/cli to v3.6.2 (#9123) by @renovate[bot]
- move lazy-compilation design doc (#9117) by @h-a-n-a
- deps: update dependency vite-plus to v0.1.18 (#9118) by @renovate[bot]
- deps: update dependency vite-plus to v0.1.17 (#9113) by @renovate[bot]
- deps: update oxc to v0.125.0 (#9094) by @renovate[bot]
- deps: update dependency follow-redirects to v1.16.0 [security] (#9103) by @renovate[bot]
- deps: update test262 submodule for tests (#9097) by @sapphi-red
- deps: update crate-ci/typos action to v1.45.1 (#9096) by @renovate[bot]
- deps: update rust crates (#9081) by @renovate[bot]
- deps: update npm packages (#9080) by @renovate[bot]
- remove outdated TODO in determine_module_exports_kind (#9072) by @jaehafe
- rust/test: support `extendedTests: false` shorthand in test config (#9050) by @hyf0
- ci: extract shared infra-changes anchor in path filters (#9054) by @hyf0
- add docs build check to catch dead links in PRs (#9052) by @hyf0

### ❤️ New Contributors

* @thezzisu made their first contribution in [#9101](#9101)
* @fpotter made their first contribution in [#9086](#9086)
* @jaehafe made their first contribution in [#9071](#9071)
* @privatenumber made their first contribution in [#8993](#8993)

Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
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.

2 participants