Commit Graph

1582 Commits

Author SHA1 Message Date
Dunqing 72144e9954 fix(formatter): missing trailing semicolon in TSSignature (#13823)
* Fixes: https://github.com/oxc-project/oxc/issues/13837
2025-09-17 09:36:02 +00:00
Dunqing f6430930f4 fix(formatter): missing parenthesis for expression of decorator (#13813)
Based on https://github.com/prettier/prettier/blob/7584432401a47a26943dd7a9ca9a8e032ead7285/src/language-js/needs-parens.js#L1337-L1351
2025-09-17 09:36:00 +00:00
Dunqing bf3cf391b1 feat(tasks/coverage): shows parse errors and mismatch information for the formatter (#13812)
Distinguish formatter coverage errors and show parse errors, which help us quickly identify problems.
2025-09-17 09:29:36 +00:00
Noel Kim (김민혁) b43ad49248 fix(formatter): Add parentheses for PrivateInExpression in super class (#13806) 2025-09-17 12:12:26 +08:00
Noel Kim (김민혁) 7879f8525d fix(formatter): Add parentheses inside UpdateExpression (#13825) 2025-09-17 11:58:02 +08:00
Noel Kim (김민혁) 7371bad877 fix(formatter): Add parentheses inside TSIntersectionType (#13821) 2025-09-17 11:41:08 +08:00
Noel Kim (김민혁) 9882dce2be fix(formatter): Add parentheses for TSFunctionType and TSConstructorType inside TSConditionalType (#13804) 2025-09-16 15:20:41 +08:00
Noel Kim (김민혁) f56c8a3006 fix(formatter): Add parentheses for nested TSConditionalType (#13800)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-16 13:12:03 +08:00
Sysix a1ad9c5a57 fix(formatter): add parentheses for TSUnionType inside TSArrayType (#13792) 2025-09-16 03:42:19 +00:00
Sysix 34e7000171 fix(formatter): add parentheses for TSConstructorType inside TSUnionType (#13791) 2025-09-16 03:42:18 +00:00
Noel Kim (김민혁) 865949885c fix(formatter): should parenthesize TSInferType when wrapped with TSArrayType (#13756) 2025-09-15 22:44:25 +08:00
Sysix 0b047e8137 fix(formatter): add parentheses for TSFunctionType inside TSUnionType (#13746)
`tasks/coverage/typescript/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfFunction.ts`

the code:
```
function f10(x: string | (() => string)) {
    if (typeof x === "function") {
        x;  // () => string
    }
    else {
        x;  // string
    }
}
```

would be formatted to `x: string | () => string`, but the parentheses are needed:

<img width="823" height="79" alt="grafik" src="https://github.com/user-attachments/assets/ba8ce276-74ca-4816-94cd-d174d974f2f1" />
2025-09-14 15:54:35 +00:00
Sysix 7cbd06e749 feat(formatter): support TSTypePredicate (#13742)
Do not know if the parser is wrong, or the description of `TSTypeAnnotation`:

```
pub struct TSTypeAnnotation<'a> {
    /// starts at the `:` token and ends at the end of the type annotation
    pub span: Span,
    /// The actual type in the annotation
    pub type_annotation: TSType<'a>,
}
```

having this code:
`tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/input.ts`
```
function asserts1 (value: unknown): asserts value is string {}
function asserts2 (value: unknown): asserts value {}
function asserts3 (value: unknown): asserts {}
```

there are 2 `TSTypeAnnotation`s here:

<img width="928" height="912" alt="grafik" src="https://github.com/user-attachments/assets/b0d12446-7e6b-4e59-a426-8eee9d7f2bb0" />
2025-09-14 15:54:35 +00:00
Karan Kiri db33196f16 feat(parser): adds typescript rule for empty argument list (#13730)
Co-authored-by: Boshen <boshenc@gmail.com>
2025-09-13 21:27:09 +08:00
Sysix f5f37c461f fix(formatter): add space after extends in TSInterfaceDeclaration (#13741)
in `tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/interface/extends/input.ts`

```
interface I extends X.Y<Z> {}
```
was formatted to

```
interface I extendsX.Y<Z> {}
```
2025-09-13 12:49:26 +00:00
leaysgur 265d6a6fe9 feat(formatter): Support TSEnumDeclaration (#13704)
Fixes #13703
2025-09-12 09:03:53 +00:00
Dunqing bda5fc1a3c fix(formatter): correct comments printing for import and export (#13707)
This PR aims to remove the special logic for import and export declarations from `get_trailing_comments` and move the special logic to the printing site. The benefits of this are to make `get_trailing_comments` cleaner so that we can entirely remove `SiblingNode`, which may lead to significant performance improvements.
2025-09-12 04:30:17 +00:00
Dunqing 8c072dc85f feat(formatter): print type cast comments (#13597)
Add support for type casting comment, see https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#casts
2025-09-12 04:30:16 +00:00
Dunqing bb2bcf0361 fix(transformer): improve legacy decorator handling and fix constructor parameter decorators (#13632)
Fixes https://github.com/rolldown/rolldown/issues/6079. Regressed introduced by https://github.com/oxc-project/oxc/pull/13227.

The root cause is that the class plugin will insert a constructor method in some cases, but metadata handling is processed before the constructor is inserted, which causes the method count not to be exactly the same as the method metadata count. Thus, decorator metadata is inserted in the incorrect place.

This PR refactors the core transformation logic to ensure that the new methods and properties inserted by other plugins won't affect the decorator transformation.

### Transformation Flow Changes

  Before: Complex upfront analysis with separate processing paths
  - Used check_class_has_decorated() to analyze entire class tree
  - Separate handling for class vs element decorators
  - Multiple disconnected stacks for state tracking

  After: Unified incremental processing
  - Process decorators as we traverse (exit_method_definition,
  exit_property_definition, etc.)
  - Accumulate decoration statements in single stack during traversal
  - Unified processing in transform_class() using consolidated state
2025-09-11 08:07:20 +00:00
leaysgur 239d4cb76f fix(formatter): Improve AssignmentExpression parentheses handling (#13668)
For this input given:

```js
async function m() {
  ({ x } = await foo());
  ({ y } = foo());
}
```

Currently formatted as:

```js
async function m() {
  { x } = await foo();
  { y } = foo();
}
```

This is invalid syntax.
2025-09-11 07:22:13 +00:00
overlookmotel 9fa551a6ce fix(semantic): handle edge cases checking super (#13499)
Fixes #13284.

Fix semantic's checking of `super()` and `super.prop`.

This fixes various TS test cases, notably correctly identifying that these are all illegal:

```js
class C {
  prop = function() { super.foo };
  [super.foo]() {}
  @super.foo method() {}
};
```

It also fixes various edge cases related to classes nested within other classes that aren't covered by existing conformance tests.

It's pretty much a complete re-write. I've combined the 2 paths for in a class and not in a class into one, to avoid repeated code.

This PR includes pass + fail test fixtures which include `super` in every conceivable position I could think of. There are so many errors in the fail test fixtures, that I had to write a script to check the snapshot includes them all!

Hopefully this solves this issue for once and for all!

Note: The large pass fixture seems to be revealing bugs somewhere in transformer - there's a mismatch, as well as lots of wrong scopes. But that's incidental to this PR, and can be addressed separately.
2025-09-10 03:23:41 +00:00
Ulrich Stark f795d69ce0 fix(parser): improve diagnostics around modifier checks (#13526)
Follow up to #13368.
Closes #11713 by fixing five more cases mentioned in
https://github.com/oxc-project/oxc/issues/11713#issuecomment-3239687597.

Other changes:
- Added TS(1024) diagnostic
- Fixed the broken oxc-11713-13.ts test file
- Made TS(1070) not report redundantly if it's actually the
responsibility of TS(1071)
- Branch off the more specific TS(1028) diagnostic from the general
TS(1030) diagnostic like TypeScript does
- Remove incorrect code to parse modifiers on typescript this parameter
2025-09-09 09:28:39 +08:00
Ulrich Stark 65aca9eeb9 fix(parser): reset popped lexer errors when rewinding (#13494)
Closes #12816.
Alternative to #13460.

This PR is the slightly cleaner way to fix the issue compared to the
other PR, but comes at a potential performance cost because now instead
of remembering how many errors there were, we are storing a clone of all
errors and re-assign them when rewinding.

This makes it possible to fix the issue because now even errors before a
checkpoint, that were popped/removed after the checkpoint, are properly
rewinded.
2025-09-01 22:54:27 +08:00
Boshen dc9645f98f fix(semantic): allow super in object literal method inside a class (#13463)
fixes #13284
2025-08-31 21:06:40 +00:00
sapphi-red 0eea7da1c8 fix(regular_expression): don't lower capture groups that are not named ones (#13469)
Capture groups that are not named ones are lowered even though it's not needed to.
2025-08-31 15:15:49 +00:00
overlookmotel fd3233cf95 fix(semantic): flag super in function inside ObjectExpression (#13325)
Fix #13323.

Make semantic raise errors for the following illegal `super` uses:

```js
o = {
  foo: function() {
    super.foo;
  },

  bar() {
    return function() {
      super.bar;
    };
  },

  [ function() { super.qux; } ]() {},

  get [ function() { super.bing; } ]() {},

  set [ function() { super.bong; } ](v) {},
};
```
2025-08-29 13:10:08 +00:00
Boshen 55de744bc8 chore(tasks/coverage): enable formatter (#13350)
`just c formatter --debug` fails on `tasks/coverage/test262/test/language/literals/string/line-continuation-double.js`
2025-08-29 09:13:14 +00:00
Ulrich Stark 903a150bf8 feat(parser): report more invalid modifier locations (#13368)
### Changes

- Added all 22 examples of #11713 to `tasks/coverage/misc/fail`
- Added `Default` and `Export` to modifiers
- Added three new TS diagnostics: 1029, 1031, and 1070
- Split off `FunctionKind::Constructor` from `FunctionKind::ClassMethod`
to differentiate when verifying modifiers of formal parameter
- Added multiple checks to verify modifiers

### Results
- "Negative Passed" percentage of `parser_babel.snap` and
`parser_typescript.snap` increased
- Better diagnostic messages in both snapshots
- All new failing examples of original issue do really fail
- Closes #11713

---------

Co-authored-by: Boshen <boshenc@gmail.com>
2025-08-29 11:33:21 +08:00
Dunqing 24fee158e2 fix(transformer/legacy-decorator): emit correct metadata types for enum (#13327)
* close:  #13319

---------

Co-authored-by: overlookmotel <theoverlookmotel@gmail.com>
2025-08-28 16:23:21 +01:00
Boshen 8a43068a27 fix(semantic): allow super in object method in js but not in ts (#13318)
closes #13284

Either TypeScript implemented the spec incorrectly or made it more
strict.

```js
class C {
  foo() {
    return {
      bar() {
        super.bar(); // syntax error in ts but not in js
      },
    };
  }
}
```
2025-08-27 02:20:08 +00:00
Dunqing e7a49ed717 refactor(transformer/legacy-decorator): eliminate unreliable identification of metadata (#13227)
Fixes: https://github.com/oxc-project/oxc/pull/13215#pullrequestreview-3132979634

Collect metadata and store them in a `VecDeque`, and take them when transforming the class decorators in the `exit_class` side, which can eliminate the unreliable check of `span.is_unspanned` for metadata decorators. However, it introduces a little complexity.
2025-08-24 08:36:04 +00:00
Boshen f897e303eb chore(tasks): update test262, babel and TypeScript (#13217) 2025-08-20 01:22:35 +00:00
Dunqing 76a9865af0 fix(transformer/legacy-decorator): metadata should be inserted after all params decorators (#13215)
* Fixes https://github.com/oxc-project/oxc/issues/13210
2025-08-19 16:08:53 +00:00
Boshen ade2ccbccd fix(parser): produce syntax error for export enum and similar ts syntaxes (#13208)
fixes #13205
closes #13206
2025-08-19 16:29:57 +08:00
overlookmotel bef2acedc4 refactor(tasks): always explicitly initialize Rayon thread pool (#13123)
Similar to #13122. Unconditionally initialize Rayon global thread pool in coverage runner.

The guarantees provided by explicitly initializing the thread pool are going to be critical for the linter.

Coverage currently doesn't cover linter, so it doesn't matter, but this doesn't hurt to do, and gives us greater safety if coverage does involve the linter at a later date.
2025-08-15 15:39:32 +00:00
Boshen 993db8915c feat(minifier): .minify and .dce methods; run dce in loop (#13026) 2025-08-12 14:58:41 +00:00
Dunqing 6fe0bb5619 fix(transformer/react): spread props optimization breaks __self and __source injection (#13009) (#13020)
* Fixes #13009

The optimization that converts `{...props}` to `props` when it's the only attribute was incorrectly applied even when `jsx_self` or `jsx_source` plugins are enabled. This caused `__self` and `__source` props to not be merged properly,
resulting in incorrect transformation output in development mode.

This fix disables the optimization when these dev plugins are active, ensuring spread props are preserved for proper merging.
2025-08-12 11:59:13 +00:00
Li Wei 724837e75f fix(semantic): label redeclaration check for crossing boundary on arrow function (#12679) (#12948)
In the previous implementation, check label cross boundary on function
or static block, but ignore arrow function

fixes #12679
2025-08-10 15:17:07 +08:00
overlookmotel 911a5d0ce1 test(coverage): clarify code (#12921)
We can now use `if let` chains. Previously we had to use an early return pattern in some places because one branch had multiple nested `if` statements. Now that they're combined into a single `if`, we don't need to use this pattern any more, and can convert to `if` / `else`. Usually this is shorter, but even when it's not, in my opinion it's a bit clearer.
2025-08-08 21:16:54 +00:00
camc314 84794ebdbf refactor(all): enable collapsible_if lint (#12902) 2025-08-08 11:27:58 +00:00
renovate 1ed8c1a471 chore(deps): update dependency rust to v1.89.0 (#12873)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://redirect.github.com/rust-lang/rust) | minor | `1.88.0` -> `1.89.0` |

---

### Release Notes

<details>
<summary>rust-lang/rust (rust)</summary>

### [`v1.89.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1890-2025-08-07)

[Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.88.0...1.89.0)

\==========================

<a id="1.89.0-Language"></a>

## Language

- [Stabilize explicitly inferred const arguments (`feature(generic_arg_infer)`)](https://redirect.github.com/rust-lang/rust/pull/141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes` lint.](https://redirect.github.com/rust-lang/rust/pull/138677)
  This lint detects when the same lifetime is referred to by different syntax categories between function arguments and return values, which can be confusing to read, especially in unsafe code.
  This lint supersedes the warn-by-default `elided_named_lifetimes` lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint on function pointer comparisons in external macros](https://redirect.github.com/rust-lang/rust/pull/134536)
- [Make the `dangerous_implicit_autorefs` lint deny-by-default](https://redirect.github.com/rust-lang/rust/pull/141661)
- [Stabilize the avx512 target features](https://redirect.github.com/rust-lang/rust/pull/138940)
- [Stabilize `kl` and `widekl` target features for x86](https://redirect.github.com/rust-lang/rust/pull/140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for x86](https://redirect.github.com/rust-lang/rust/pull/140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`, `lbt`, `lsx`, and `lvz`](https://redirect.github.com/rust-lang/rust/pull/135015)
- [Remove `i128` and `u128` from `improper_ctypes_definitions`](https://redirect.github.com/rust-lang/rust/pull/137306)
- [Stabilize `repr128` (`#[repr(u128)]`, `#[repr(i128)]`)](https://redirect.github.com/rust-lang/rust/pull/138285)
- [Allow `#![doc(test(attr(..)))]` everywhere](https://redirect.github.com/rust-lang/rust/pull/140560)
- [Extend temporary lifetime extension to also go through tuple struct and tuple variant constructors](https://redirect.github.com/rust-lang/rust/pull/140593)
- [`extern "C"` functions on the `wasm32-unknown-unknown` target now have a standards compliant ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/)

<a id="1.89.0-Compiler"></a>

## Compiler

- [Default to non-leaf frame pointers on aarch64-linux](https://redirect.github.com/rust-lang/rust/pull/140832)
- [Enable non-leaf frame pointers for Arm64EC Windows](https://redirect.github.com/rust-lang/rust/pull/140862)
- [Set Apple frame pointers by architecture](https://redirect.github.com/rust-lang/rust/pull/141797)

<a id="1.89.0-Platform-Support"></a>

## Platform Support

- [Add new Tier-3 targets `loongarch32-unknown-none` and `loongarch32-unknown-none-softfloat`](https://redirect.github.com/rust-lang/rust/pull/142053)
- [`x86_64-apple-darwin` is in the process of being demoted to Tier 2 with host tools](https://redirect.github.com/rust-lang/rfcs/pull/3841)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html

<a id="1.89.0-Libraries"></a>

## Libraries

- [Specify the base path for `file!`](https://redirect.github.com/rust-lang/rust/pull/134442)
- [Allow storing `format_args!()` in a variable](https://redirect.github.com/rust-lang/rust/pull/140748)
- [Add `#[must_use]` to `[T; N]::map`](https://redirect.github.com/rust-lang/rust/pull/140957)
- [Implement `DerefMut` for `Lazy{Cell,Lock}`](https://redirect.github.com/rust-lang/rust/pull/129334)
- [Implement `Default` for `array::IntoIter`](https://redirect.github.com/rust-lang/rust/pull/141574)
- [Implement `Clone` for `slice::ChunkBy`](https://redirect.github.com/rust-lang/rust/pull/138016)
- [Implement `io::Seek` for `io::Take`](https://redirect.github.com/rust-lang/rust/pull/138023)

<a id="1.89.0-Stabilized-APIs"></a>

## Stabilized APIs

- [`NonZero<char>`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
  - [AVX512 intrinsics](https://redirect.github.com/rust-lang/rust/issues/111137)
  - [`SHA512`, `SM3` and `SM4` intrinsics](https://redirect.github.com/rust-lang/rust/issues/126624)
- [`File::lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
- [`File::lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
- [`File::try_lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
- [`File::try_lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
- [`File::unlock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
- [`NonNull::from_ref`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
- [`NonNull::from_mut`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
- [`NonNull::without_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
- [`NonNull::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
- [`NonNull::expose_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
- [`OsString::leak`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
- [`PathBuf::leak`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
- [`Result::flatten`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
- [`std::os::linux::net::TcpStreamExt::quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
- [`std::os::linux::net::TcpStreamExt::set_quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)

These previously stable APIs are now stable in const contexts:

- [`<[T; N]>::as_mut_slice`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
- [`<[u8]>::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
- [`str::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)

<a id="1.89.0-Cargo"></a>

## Cargo

- [`cargo fix` and `cargo clippy --fix` now default to the same Cargo target selection as other build commands.](https://redirect.github.com/rust-lang/cargo/pull/15192/) Previously it would apply to all targets (like binaries, examples, tests, etc.). The `--edition` flag still applies to all targets.
- [Stabilize doctest-xcompile.](https://redirect.github.com/rust-lang/cargo/pull/15462/) Doctests are now tested when cross-compiling. Just like other tests, it will use the [`runner` setting](https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner) to run the tests. If you need to disable tests for a target, you can use the [ignore doctest attribute](https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets) to specify the targets to ignore.

<a id="1.89.0-Rustdoc"></a>

## Rustdoc

- [On mobile, make the sidebar full width and linewrap](https://redirect.github.com/rust-lang/rust/pull/139831). This makes long section and item names much easier to deal with on mobile.

<a id="1.89.0-Compatibility-Notes"></a>

## Compatibility Notes

- [Make `missing_fragment_specifier` an unconditional error](https://redirect.github.com/rust-lang/rust/pull/128425)
- [Enabling the `neon` target feature on `aarch64-unknown-none-softfloat` causes a warning](https://redirect.github.com/rust-lang/rust/pull/135160) because mixing code with and without that target feature is not properly supported by LLVM
- [Sized Hierarchy: Part I](https://redirect.github.com/rust-lang/rust/pull/137944)
  - Introduces a small breaking change affecting `?Sized` bounds on impls on recursive types which contain associated type projections. It is not expected to affect any existing published crates. Can be fixed by refactoring the involved types or opting into the `sized_hierarchy` unstable feature. See the [FCP report](https://redirect.github.com/rust-lang/rust/pull/137944#issuecomment-2912207485) for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded by the warn-by-default `mismatched_lifetime_syntaxes` lint.](https://redirect.github.com/rust-lang/rust/pull/138677)
- [Error on recursive opaque types earlier in the type checker](https://redirect.github.com/rust-lang/rust/pull/139419)
- [Type inference side effects from requiring element types of array repeat expressions are `Copy` are now only available at the end of type checking](https://redirect.github.com/rust-lang/rust/pull/139635)
- [The deprecated accidentally-stable `std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now proper intrinsics](https://redirect.github.com/rust-lang/rust/pull/139916). There are no debug assertions guarding against UB, and they cannot be coerced to function pointers.
- [Remove long-deprecated `std::intrinsics::drop_in_place`](https://redirect.github.com/rust-lang/rust/pull/140151)
- [Make well-formedness predicates no longer coinductive](https://redirect.github.com/rust-lang/rust/pull/140208)
- [Remove hack when checking impl method compatibility](https://redirect.github.com/rust-lang/rust/pull/140557)
- [Remove unnecessary type inference due to built-in trait object impls](https://redirect.github.com/rust-lang/rust/pull/141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets](https://redirect.github.com/rust-lang/rust/pull/141435)
- [Future incompatibility warnings relating to the never type (`!`) are now reported in dependencies](https://redirect.github.com/rust-lang/rust/pull/141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static self-init checks](https://redirect.github.com/rust-lang/rust/pull/142575)
- [`extern "C"` functions on the `wasm32-unknown-unknown` target now have a standards compliant ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/)

<a id="1.89.0-Internal-Changes"></a>

## Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

- [Correctly un-remap compiler sources paths with the `rustc-dev` component](https://redirect.github.com/rust-lang/rust/pull/142377)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNTEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2025-08-08 09:53:16 +00:00
Copilot 65e211296d refactor(transformer): Use to @babel/plugin-transform-explicit-resource-management (#12874) 2025-08-08 12:03:33 +08:00
Yuji Sugiura c01db1c8e7 test(coverage/typescript): Split exclusion list to separate file with comments (#12839)
Part of #11582
2025-08-06 22:57:43 +08:00
Boshen 3eed87a610 fix(codegen): wrap parens for TSUnionType (#12830) 2025-08-05 12:17:54 +00:00
leaysgur 18bd03e004 test(coverage/typescript): Update 2461-2540 error codes handling (#12827)
Part of #11582

40% 👀
2025-08-05 08:47:38 +00:00
leaysgur 589775312d test(coverage/typescript): Ignore more invalid test cases (#12795)
Part of #11582
2025-08-05 08:23:45 +00:00
camc314 47e2c593a9 fix(estree): fix serialization of TSImportTypeQualifier (#12801) 2025-08-05 05:55:42 +00:00
camc314 50b91ac7fa feat(ast)!: remove IdentifierReference from qualifier field of TSImportType (#12799)
closes #12042, #12797
2025-08-05 05:55:42 +00:00
Yuji Sugiura 40c988c00a test(coverage/typescript): Update 2401-2460 error codes handling (#12794)
Part of #11582
2025-08-04 16:05:48 +08:00
Copilot 8854c1aa94 fix(transformer/typescript): revert "remove properties with definite assignment assertion" (#12759) 2025-08-02 23:54:40 +08:00