Files
Dunqing ea76490ca5 fix(transformer/class-properties): preserve private method values in assignments (#28788)
Compound assignments and updates to private methods call the method body while reading its value. For example, `this.#method ||= rhs()` calls `#method`, evaluates `rhs()` when the method returns `undefined`, and throws instead of returning the method function.

Distinguish method reads from accessor getter calls when lowering assignments and updates. Method reads now return the function through the existing brand check. Regression coverage includes static and instance methods, all compound operators, prefix/postfix updates, failed brand checks, and receivers obtained from function calls.

Validation:

- 39 Rust unit/integration tests and 53 Node binding tests passed.
- Clippy and Rust formatting checks passed.
- Transform conformance adds one passing output fixture and one passing executable fixture; existing failures are unchanged.
- Transformer coverage has no new failures against Test262, Babel, TypeScript, and local cases.
- Cross-target probes passed at ES2021, ES2020, and ES2015.

AI assistance was used to implement and test this change.
2026-11-04 04:53:15 +00:00
..
…
…

Transformation Conformance Test Runner

Execution

This test runner uses the transformation plugin test suite from the Babel repository.

Additional tests are in the tests directory.

The failing test cases are listed in:

To get started, run

cargo run -p oxc_transform_conformance

or watch for changes

just watch 'cargo run -p oxc_transform_conformance'

Options

--filter

To filter for a specific test case, apply the --filter path option, e.g.

cargo run -p oxc_transform_conformance -- --filter react/arrow-functions

--exec

The Babel test suite contains many exec.js files, which need to be executed by a runtime.

These tests are executed with Node.js and Vitest. Apply the --exec flag:

cargo run -p oxc_transform_conformance -- --exec

This is also available as:

just test-transform

The failing test cases are listed in: