sapphi-red
c28807b32c
fix(parser): reject async await => {} in scripts ( #15222 )
...
`async await => {}` was rejected in modules but should be rejected in scripts as well.
2025-11-02 12:08:56 +00:00
sapphi-red
837ef219db
fix(parser): reject yield and await in object destructing shorthand property parameters ( #15221 )
...
Reject cases like `function* y({yield}) {}` and `async function y({await}) {}` in scripts (in modules, these were already rejected as `yield` and `await` are reserved keywords).
2025-11-02 12:08:55 +00:00
sapphi-red
2d6d3a87f3
fix(parser): reject for (let.something of ...) ( #15220 )
...
Reject cases like `for (let.something of ...)`. TIL that this is not allowed.
`for (let of ...)` was already rejected but these cases were not handled.
2025-11-02 12:08:55 +00:00
sapphi-red
97ab60d82a
fix(parser): reject invalid assignment operator in assignment targets ( #15219 )
...
Reject cases like `([a += a] = a)`.
2025-11-02 12:08:55 +00:00
sapphi-red
1874b99f66
chore(tasks/coverage): exclude some parser babel test cases that are not relevant ( #15218 )
...
Skipped some parser babel test cases because these are not relevant. It tests option combination validations, but for us, these should be done in simple unit tests.
2025-11-02 12:08:54 +00:00
sapphi-red
682dca2ea7
feat(parser): add more helps to parser errors ( #15186 )
...
Added more helps to parser errors to make it easier to understand how the error can be resolved.
2025-10-31 07:10:45 +00:00
sapphi-red
205aab6242
fix(tasks/coverage): skip some babel tests on Windows as well ( #15185 )
...
`annex-b/disabled` was not skipped properly on Windows due to slash difference.
2025-10-31 06:45:34 +00:00
renovate
c417564c4b
chore(deps): update dependency rust to v1.91.0 ( #15163 )
...
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [rust](https://redirect.github.com/rust-lang/rust ) | minor | `1.90.0` -> `1.91.0` |
---
### Release Notes
<details>
<summary>rust-lang/rust (rust)</summary>
### [`v1.91.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1910-2025-10-30 )
[Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.90.0...1.91.0 )
\==========================
<a id="1.91.0-Language"></a>
## Language
- [Lower pattern bindings in the order they're written and base drop order on primary bindings' order](https://redirect.github.com/rust-lang/rust/pull/143764 )
- [Stabilize declaration of C-style variadic functions for `sysv64`, `win64`, `efiapi`, and `aapcs` ABIs](https://redirect.github.com/rust-lang/rust/pull/144066 ).
This brings these ABIs in line with the C ABI: variadic functions can be declared in extern blocks but not defined.
- [Add `dangling_pointers_from_locals` lint to warn against dangling pointers from local variables](https://redirect.github.com/rust-lang/rust/pull/144322 )
- [Upgrade `semicolon_in_expressions_from_macros` from warn to deny](https://redirect.github.com/rust-lang/rust/pull/144369 )
- [Stabilize LoongArch32 inline assembly](https://redirect.github.com/rust-lang/rust/pull/144402 )
- [Add warn-by-default `integer_to_ptr_transmutes` lint against integer-to-pointer transmutes](https://redirect.github.com/rust-lang/rust/pull/144531 )
- [Stabilize `sse4a` and `tbm` target features](https://redirect.github.com/rust-lang/rust/pull/144542 )
- [Add `target_env = "macabi"` and `target_env = "sim"` cfgs](https://redirect.github.com/rust-lang/rust/pull/139451 ) as replacements for the `target_abi` cfgs with the same values.
<a id="1.91.0-Compiler"></a>
## Compiler
- [Don't warn on never-to-any `as` casts as unreachable](https://redirect.github.com/rust-lang/rust/pull/144804 )
<a id="1.91.0-Platform-Support"></a>
## Platform Support
- [Promote `aarch64-pc-windows-gnullvm` and `x86_64-pc-windows-gnullvm` to Tier 2 with host tools.](https://redirect.github.com/rust-lang/rust/pull/143031 )
Note: llvm-tools and MSI installers are missing but will be added in future releases.
- [Promote `aarch64-pc-windows-msvc` to Tier 1](https://redirect.github.com/rust-lang/rust/pull/145682 )
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.91.0-Libraries"></a>
## Libraries
- [Print thread ID in panic message](https://redirect.github.com/rust-lang/rust/pull/115746 )
- [Fix overly restrictive lifetime in `core::panic::Location::file` return type](https://redirect.github.com/rust-lang/rust/pull/132087 )
- [Guarantee parameter order for `_by()` variants of `min` / `max`/ `minmax` in `std::cmp`](https://redirect.github.com/rust-lang/rust/pull/139357 )
- [Document assumptions about `Clone` and `Eq` traits](https://redirect.github.com/rust-lang/rust/pull/144330/ )
- [`std::thread`: Return error if setting thread stack size fails](https://redirect.github.com/rust-lang/rust/pull/144210 )
This used to panic within the standard library.
<a id="1.91.0-Stabilized-APIs"></a>
## Stabilized APIs
- [`Path::file_prefix`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.file_prefix )
- [`AtomicPtr::fetch_ptr_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_add )
- [`AtomicPtr::fetch_ptr_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_sub )
- [`AtomicPtr::fetch_byte_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_add )
- [`AtomicPtr::fetch_byte_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_sub )
- [`AtomicPtr::fetch_or`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_or )
- [`AtomicPtr::fetch_and`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_and )
- [`AtomicPtr::fetch_xor`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_xor )
- [`{integer}::strict_add`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add )
- [`{integer}::strict_sub`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub )
- [`{integer}::strict_mul`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_mul )
- [`{integer}::strict_div`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div )
- [`{integer}::strict_div_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div_euclid )
- [`{integer}::strict_rem`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem )
- [`{integer}::strict_rem_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem_euclid )
- [`{integer}::strict_neg`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_neg )
- [`{integer}::strict_shl`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shl )
- [`{integer}::strict_shr`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shr )
- [`{integer}::strict_pow`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_pow )
- [`i{N}::strict_add_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_add_unsigned )
- [`i{N}::strict_sub_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_sub_unsigned )
- [`i{N}::strict_abs`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_abs )
- [`u{N}::strict_add_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add_signed )
- [`u{N}::strict_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub_signed )
- [`PanicHookInfo::payload_as_str`](https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html#method.payload_as_str )
- [`core::iter::chain`](https://doc.rust-lang.org/stable/core/iter/fn.chain.html )
- [`u{N}::checked_signed_diff`](https://doc.rust-lang.org/stable/std/primitive.u16.html#method.checked_signed_diff )
- [`core::array::repeat`](https://doc.rust-lang.org/stable/core/array/fn.repeat.html )
- [`PathBuf::add_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.add_extension )
- [`PathBuf::with_added_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.with_added_extension )
- [`Duration::from_mins`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_mins )
- [`Duration::from_hours`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_hours )
- [`impl PartialEq<str> for PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3Cstr%3E-for-PathBuf )
- [`impl PartialEq<String> for PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3CString%3E-for-PathBuf )
- [`impl PartialEq<str> for Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3Cstr%3E-for-Path )
- [`impl PartialEq<String> for Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3CString%3E-for-Path )
- [`impl PartialEq<PathBuf> for String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPathBuf%3E-for-String )
- [`impl PartialEq<Path> for String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPath%3E-for-String )
- [`impl PartialEq<PathBuf> for str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPathBuf%3E-for-str )
- [`impl PartialEq<Path> for str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPath%3E-for-str )
- [`Ipv4Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.from_octets )
- [`Ipv6Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_octets )
- [`Ipv6Addr::from_segments`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_segments )
- [`impl<T> Default for Pin<Box<T>> where Box<T>: Default, T: ?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CBox%3CT%3E%3E )
- [`impl<T> Default for Pin<Rc<T>> where Rc<T>: Default, T: ?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CRc%3CT%3E%3E )
- [`impl<T> Default for Pin<Arc<T>> where Arc<T>: Default, T: ?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CArc%3CT%3E%3E )
- [`Cell::as_array_of_cells`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.as_array_of_cells )
- [`u{N}::carrying_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_add )
- [`u{N}::borrowing_sub`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.borrowing_sub )
- [`u{N}::carrying_mul`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul )
- [`u{N}::carrying_mul_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul_add )
- [`BTreeMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.extract_if )
- [`BTreeSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.extract_if )
- [`impl Debug for windows::ffi::EncodeWide<'_>`](https://doc.rust-lang.org/stable/std/os/windows/ffi/struct.EncodeWide.html#impl-Debug-for-EncodeWide%3C'_%3E )
- [`str::ceil_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.ceil_char_boundary )
- [`str::floor_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.floor_char_boundary )
- [`impl Sum for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum-for-Saturating%3Cu32%3E )
- [`impl Sum<&Self> for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E )
- [`impl Product for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product-for-Saturating%3Cu32%3E )
- [`impl Product<&Self> for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E )
These previously stable APIs are now stable in const contexts:
- [`<[T; N]>::each_ref`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_ref )
- [`<[T; N]>::each_mut`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_mut )
- [`OsString::new`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.new )
- [`PathBuf::new`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.new )
- [`TypeId::of`](https://doc.rust-lang.org/stable/std/any/struct.TypeId.html#method.of )
- [`ptr::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance.html )
- [`ptr::with_exposed_provenance_mut`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance_mut.html )
<a id="1.91.0-Cargo"></a>
## Cargo
- 🎉 Stabilize `build.build-dir`.
This config sets the directory where intermediate build artifacts are stored.
These artifacts are produced by Cargo and rustc during the build process.
End users usually won't need to interact with them, and the layout inside
`build-dir` is an implementation detail that may change without notice.
([config doc](https://doc.rust-lang.org/stable/cargo/reference/config.html#buildbuild-dir ))
([build cache doc](https://doc.rust-lang.org/stable/cargo/reference/build-cache.html ))
[#​15833](https://redirect.github.com/rust-lang/cargo/pull/15833 )
[#​15840](https://redirect.github.com/rust-lang/cargo/pull/15840 )
- The `--target` flag and the `build.target` configuration can now take literal
`"host-tuple"` string, which will internally be substituted by the host
machine's target triple.
[#​15838](https://redirect.github.com/rust-lang/cargo/pull/15838 )
[#​16003](https://redirect.github.com/rust-lang/cargo/pull/16003 )
[#​16032](https://redirect.github.com/rust-lang/cargo/pull/16032 )
<a id="1.91.0-Rustdoc"></a>
## Rustdoc
- [In search results, rank doc aliases lower than non-alias items with the same name](https://redirect.github.com/rust-lang/rust/pull/145100 )
- [Raw pointers now work in type-based search like references](https://redirect.github.com/rust-lang/rust/pull/145731 ). This means you can now search for things like `*const u8 ->`, and additionally functions that take or return raw pointers will now display their signature properly in search results.
<a id="1.91.0-Compatibility-Notes"></a>
## Compatibility Notes
- [Always require coroutine captures to be drop-live](https://redirect.github.com/rust-lang/rust/pull/144156 )
- [Apple: Always pass SDK root when linking with `cc`, and pass it via `SDKROOT` env var](https://redirect.github.com/rust-lang/rust/pull/131477 ). This should fix linking issues with `rustc` running inside Xcode. Libraries in `/usr/local/lib` may no longer be linked automatically, if you develop or use a crate that relies on this, you should explicitly set `cargo::rustc-link-search=/usr/local/lib` in a `build.rs` script.
- [Relaxed bounds in associated type bound position like in `TraitRef<AssocTy: ?Sized>` are now correctly forbidden](https://redirect.github.com/rust-lang/rust/pull/135331 )
- [Add unstable `#[sanitize(xyz = "on|off")]` built-in attribute that shadows procedural macros with the same name](https://redirect.github.com/rust-lang/rust/pull/142681 )
- [Fix the drop checker being more permissive for bindings declared with let-else](https://redirect.github.com/rust-lang/rust/pull/143028 )
- [Be more strict when parsing attributes, erroring on many invalid attributes](https://redirect.github.com/rust-lang/rust/pull/144689 )
- [Error on invalid `#[should_panic]` attributes](https://redirect.github.com/rust-lang/rust/pull/143808 )
- [Error on invalid `#[link]` attributes](https://redirect.github.com/rust-lang/rust/pull/143193 )
- [Mark all deprecation lints in name resolution as deny-by-default and also report in dependencies](https://redirect.github.com/rust-lang/rust/pull/143929 )
- The lint `semicolon_in_expressions_from_macros`, for `macro_rules!` macros in expression position that expand to end in a semicolon (`;`), is now deny-by-default. It was already warn-by-default, and a future compatibility warning (FCW) that warned even in dependencies. This lint will become a hard error in the future.
- [Trait impl modifiers (e.g., `unsafe`, `!`, `default`) in inherent impls are no longer syntactically valid](https://redirect.github.com/rust-lang/rust/pull/144386 )
- [Start reporting future breakage for `ill_formed_attribute_input` in dependencies](https://redirect.github.com/rust-lang/rust/pull/144544 )
- [Restrict the scope of temporaries created by the macros `pin!`, `format_args!`, `write!`, and `writeln!` in `if let` scrutinees in Rust Edition 2024.](https://redirect.github.com/rust-lang/rust/pull/145342 ) This applies [Rust Edition 2024's `if let` temporary scope rules](https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html ) to these temporaries, which previously could live past the `if` expression regardless of Edition.
- [Invalid numeric literal suffixes in tuple indexing, tuple struct indexing, and struct field name positions are now correctly rejected](https://redirect.github.com/rust-lang/rust/pull/145463 )
- [Closures marked with the keyword `static` are now syntactically invalid](https://redirect.github.com/rust-lang/rust/pull/145604 )
- [Shebangs inside `--cfg` and `--check-cfg` arguments are no longer allowed](https://redirect.github.com/rust-lang/rust/pull/146211 )
- [Add future incompatibility lint for temporary lifetime shortening in Rust 1.92](https://redirect.github.com/rust-lang/rust/pull/147056 )
Cargo compatibility notes:
- `cargo publish` no longer keeps `.crate` tarballs as final build artifacts
when `build.build-dir` is set. These tarballs were previously included due to
an oversight and are now treated as intermediate artifacts.
To get `.crate` tarballs as final artifacts, use `cargo package`.
In a future version, this change will apply regardless of `build.build-dir`.
[#​15910](https://redirect.github.com/rust-lang/cargo/pull/15910 )
- Adjust Cargo messages to match rustc diagnostic style.
This changes some of the terminal colors used by Cargo messages.
[#​15928](https://redirect.github.com/rust-lang/cargo/pull/15928 )
- Tools and projects relying on the
[internal details of Cargo's `build-dir`](https://doc.rust-lang.org/cargo/reference/build-cache.html )
may not work for users changing their `build-dir` layout.
For those doing so, we'd recommend proactively testing these cases
particularly as we are considering changing the default location of the `build-dir` in the future
([cargo#16147](https://redirect.github.com/rust-lang/cargo/issues/16147 )).
If you can't migrate off of Cargo's internal details,
we'd like to learn more about your use case as we prepare to change the layout of the `build-dir`
([cargo#15010](https://redirect.github.com/rust-lang/cargo/issues/15010 )).
<a id="1.91.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.
- [Update to LLVM 21](https://redirect.github.com/rust-lang/rust/pull/143684 )
</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:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQxLjE1OS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2025-10-30 22:23:29 +00:00
leaysgur
be87ace9c4
fix(tasks/coverage): Skip formatter tests which cannot parse ( #15060 )
...
Do the same thing with `tasks/coverage` as we did with `tasks/prettier_conformance`.
2025-10-29 08:28:30 +00:00
leaysgur
5de99c2765
refactor(formatter): Export unified way to get_parse_options ( #15027 )
...
Export `oxc_formatter::get_parse_options` to get this options everywhere.
```rs
ParseOpitons {
parse_regular_expression: false,
// Enable all syntax features
allow_v8_intrinsics: true,
allow_return_outside_function: true,
// `oxc_formatter` expects this to be false
preserve_parens: false,
}
```
2025-10-28 09:26:23 +00:00
Boshen
bf09033cf6
chore(submodules): update submodule SHAs to latest commits ( #15012 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `baa48a4` → `d2940bd`
- babel: `41d9651` → `4cc3d88`
- TypeScript: `261630d` → `8ea03f8`
- prettier: `7584432` → `011791f`
- acorn-test262: `090bba4` → `994d763`
- node-compat-table: `ed0d6ba` → `17ac85c`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2025-10-28 02:38:20 +00:00
leaysgur
a8e5181ab7
chore(infra): dogfooding oxfmt ( #14979 )
...
Fixes #14803
- Added `oxfmt` and `oxfmtrc.jsonc`
- Remove `dprint` plugin and useless ignore paths
- Apply `dprint` again
- Apply `oxfmt`
2025-10-28 01:16:46 +00:00
camc314
384ea3c7be
fix(parser): report err on missing function body in expression ( #14946 )
...
partially addresses #14944
2025-10-27 11:04:22 +00:00
Yuji Sugiura
d9f7df8bc6
fix(ci): Update transform_conformance snapshots to make CI pass ( #14981 )
...
This fixes a CI failure caused by updating dependencies.
2025-10-27 16:45:07 +08:00
Dunqing
2bc1978d48
fix(transformer/legacy-decorator): correct generating metadata for getter/setter methods ( #14495 )
...
* Fixes : #14493
Getter and setter methods should not have `design:returntype` metadata according to TypeScript's `emitDecoratorMetadata` behavior. They should only have `design:type` and `design:paramtypes`.
**And `design:type` is different for the getter and setter:**
Getter: `design:type` is the same as the return type of method.
Setter: `design:type` is the same as the type of the first parameter of the method
2025-10-22 08:57:24 +00:00
camc314
ae2003c656
feat(semantic): add symbol_id to ts function type binding idents ( #14673 )
...
fixes #14668
2025-10-17 04:30:29 +00:00
camc314
bec7a7da62
feat(semantic): add scope to TSConstructorType ( #14676 )
2025-10-17 01:59:44 +00:00
camc314
f45d2f0b23
feat(semantic): add scope to TSCallSignatureDeclaration ( #14672 )
...
This is required else:
```
interface X {
(a): void
(a): void
}
```
will result in a semantic error or `a` being declared twice
2025-10-16 16:09:53 +00:00
Dunqing
5db977496f
fix(formatter): correct printing comments that are around the StaticMemberExpression ( #14543 )
2025-10-13 06:32:49 +00:00
Dunqing
4994872c62
fix(formatter): correct printing comments for try statement ( #14497 )
2025-10-12 16:13:24 +00:00
Dunqing
b8a0905129
fix(formatter): no need to wrap with parentheses for a type cast node ( #14484 )
2025-10-12 16:13:22 +00:00
Dunqing
b1592154e5
fix(formatter): ignore the leading line break for the first argument of the call expression ( #14483 )
2025-10-12 16:13:21 +00:00
Copilot
bc4f0a1ffa
feat(transformer): add ES2020 export namespace from transformation ( #14277 )
...
✅ **Implementation Complete: ES2020 Export Namespace From
Transformation**
Successfully implemented the transformation for `export * as ns from
"mod"` to convert it to:
```js
import * as _ns from "mod";
export { _ns as ns };
```
## Changes Made:
- [x] Core transformation in `es2020/export_namespace_from.rs`
- [x] ES2020 module integration and options
- [x] Browser compatibility mapping in `oxc_compat` (auto-generated from
custom compat data)
- [x] Babel plugin support (`transform-export-namespace-from`)
- [x] Target-based transformation (works with old browsers, skips modern
ones)
- [x] Code optimizations (removed clones, reserved capacity, used vec1)
- [x] Custom compat data infrastructure for features not in compat-table
- [x] Early return optimization to avoid unnecessary allocations
- [x] Implemented `GatherNodeParts` for `ModuleExportName` to avoid
string allocations
- [x] All tests passing ✅
## Code Review Addressed:
- Reserved capacity for statements vector
- Removed unnecessary clones via destructuring
- Used `ctx.ast.vec1()` for single-element vectors
- Created custom compat data system to avoid manual edits
- Imported `TransformCtx` directly
- Added early return when no export namespace declarations exist
- Implemented `GatherNodeParts` for `ModuleExportName` and use
`generate_uid_based_on_node`
## Example:
**Input:**
```js
export * as ns from "mod";
```
**Output:**
```js
import * as _ns from 'mod';
export { _ns as ns };
```
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>transformer: transform `export * as ns from "mod";` to
`import * as ns from "mod"; export { ns }`</issue_title>
> <issue_description>This transformation is supported by babel:
https://babeljs.io/docs/babel-plugin-transform-export-namespace-from
> ```js
> export * as ns from "mod";
>
> // to
>
> import * as _ns from "mod";
> export { _ns as ns };
> ```</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
Fixes oxc-project/oxc#14257
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/oxc-project/oxc/issues/new?title=✨ +Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot )
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Signed-off-by: Dunqing <dengqing0821@gmail.com >
Co-authored-by: sapphi-red <49056869+sapphi-red@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Dunqing <dengqing0821@gmail.com >
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-10-11 11:25:34 +08:00
Ulrich Stark
81a28d4bff
fix(parser): forbid abstract class members with implementation in parser instead of semantic ( #14325 )
...
The following four cases are now errors in parser instead of semantic
errors.
[TS
Playground](https://www.typescriptlang.org/play/?#code/IYIwzgLgTsDGEAJYBthjAgYge2wg3gFAIKiQzwIAOU2VCAvAgMwDchxp40ciAtgFMIAC2wATABQBKAggC+HEmR6UA5kITqIEAVGkFOJKEICuUAHYIAjOxILOyiojAaX23RIBuwZCYEAuBHMTPhBdGSISEk4FOSA )
for reference.
Closes #14013
```typescript
abstract class Foo {
abstract prop = 3;
abstract method() { }
abstract get getter() {
return 1;
}
abstract set setter(value: number) {
}
}
```
2025-10-05 09:11:58 +08:00
Dunqing
7c09b2090f
fix(formatter): print comments incorrectly if the node is without following a node ( #14110 )
...
This is to avoid printing comments in the wrong places.
2025-09-29 13:50:30 +00:00
Dunqing
ed33fad48b
fix(formatter): merge the right side of LogicalExpression if it's a LogicalExpression and both have the same operator ( #14097 )
...
I wrote the implementation, and it isn't a port from anywhere. This is to align with [Prettier's unbalancing LogicalExpression](https://github.com/prettier/prettier/blob/7584432401a47a26943dd7a9ca9a8e032ead7285/src/language-js/parse/postprocess/index.js#L64-L69 ) behavior.
We can't use the same approach that Prettier does because our AST isn't mutable, so we have to do the same thing in the formatting phase, which makes the code a little hard to understand. However, our own is more performant.
2025-09-29 13:37:39 +00:00
Dunqing
cb29117db7
feat(formatter): correct printing parameters with return_type for function-like node ( #14084 )
2025-09-29 13:17:19 +00:00
Ulrich Stark
f2fd7da9da
fix(semantic): don't report abstract method with implementation twice ( #14193 )
...
The match above the deleted line already reports depending on the kind
of method.
2025-09-28 12:18:46 +08:00
Dunqing
7d11047d05
fix(formatter): correct a bunch of implementations for TypeScript ( #14069 )
2025-09-24 10:28:13 +00:00
Dunqing
6cfce8096f
feat(formatter): implement formatting for TSTypeAliasDeclaration ( #14040 )
2025-09-24 09:28:08 +00:00
Dunqing
03244f1e81
feat(formatter): correct printing for TSConditionalType ( #14023 )
2025-09-24 09:07:31 +00:00
Dunqing
f6dc981ba8
feat(formatter): implement formatting for TSTupletype ( #14019 )
2025-09-24 09:07:30 +00:00
Don Isaac
f4d6790d27
fix(parser): forbid accessors named constructor ( #14017 )
...
Re-creation of #14015 . Closes #14014 .
2025-09-23 12:56:23 +08:00
Dunqing
3ce0775123
fix(formatter): missing semicolon for declare function ( #13928 )
...
```ts
// normal function
function a() {}
// declare function
declare function a(): void;
```
`declare function` without a function body, so it behaves like a `declare var a: void`, thus the semicolon is needed
2025-09-22 04:24:15 +00:00
Dunqing
06a1df6990
feat(formatter): implement formatting for TSTypeParameters and TSTypeParameterInstantiation ( #13919 )
2025-09-22 04:24:15 +00:00
Dunqing
9b46dd7672
feat(formatter): implement formatting for TSTypeAssertion ( #13911 )
2025-09-22 04:24:15 +00:00
Dunqing
5710b13602
feat(formatter): implement formatting for TSIntersectiontype ( #13910 )
2025-09-22 04:24:14 +00:00
sapphi-red
5198a01191
fix(minifier): handle __proto__ when inlining single-use variables ( #13926 )
...
```js
function wrapper() { var __proto__ = []; return { __proto__ } }
```
was compressed to
```js
function wrapper() { return { [] } }
```
. This PR fixes this bug.
2025-09-20 03:16:04 +00:00
sapphi-red
638416e291
feat(tasks/coverage): add node compat table tests for minifier ( #13925 )
...
Added test cases from https://github.com/williamkapke/node-compat-table for the minifier.
2025-09-20 03:16:04 +00:00
Ulrich Stark
f067159b9e
fix(parser): forbid readonly in parser instead of semantic ( #13905 )
...
Closes #13883
This also fixes duplicate essentially same diagnostics coming from
parser and semantic each.
2025-09-19 09:34:38 +08:00
renovate
5ebe4d6760
chore(deps): update dependency rust to v1.90.0 ( #13906 )
...
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs from Renovate will soon appear from 'Mend'. Learn more [here](https://redirect.github.com/renovatebot/renovate/discussions/37842 ).
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [rust](https://redirect.github.com/rust-lang/rust ) | minor | `1.89.0` -> `1.90.0` |
---
### Release Notes
<details>
<summary>rust-lang/rust (rust)</summary>
### [`v1.90.0`](https://redirect.github.com/rust-lang/rust/compare/1.89.0...1.90.0 )
[Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.89.0...1.90.0 )
</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:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2025-09-19 01:10:29 +00:00
Dunqing
2cead8bc3d
feat(formatter): keep parser options consistent for all formatter usages ( #13884 )
...
Copy from oxfmt
https://github.com/oxc-project/oxc/blob/adda5f56de542ce178f0c68f5732d60166c278b2/apps/oxfmt/src/service.rs#L45-L54
2025-09-18 23:18:53 +00:00
Noel Kim (김민혁)
c96f7e96dc
fix(formatter): Add parentheses for await and yield inside PrivateInExpression ( #13863 )
2025-09-18 21:55:57 +08:00
Boshen
13b360de36
chore(deps): bump oxc-resolver and oxc-browsers + many others ( #13880 )
2025-09-18 13:02:47 +00:00
Noel Kim (김민혁)
eae484558c
fix(formatter): Add parentheses for mixed types ( #13862 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-18 16:47:56 +08:00
Noel Kim (김민혁)
57108c0b03
fix(formatter): keep computed name in enum ( #13848 )
2025-09-18 09:30:17 +08:00
Dunqing
5ec92095b2
fix(transformer/class-properties): don't transform properties that have declare modifier ( #13766 )
...
* Fixes #13733
Fixes the issue where `declare` fields were incorrectly transformed instead of being removed, causing inheritance issues where child `declare` fields would interfere with parent class property initialization.
Only in the `enter_*` phase do we have to skip the `declare` field; in the exit phase, the `declare` fields have already been removed in the `TypeScript` plugin.
2025-09-17 14:49:59 +00:00
Dunqing
5c3645bca3
fix(formatter): handle decorators correctly for class expressions in export ( #13845 )
...
The decorators of class expressions should be printed on the class expression itself; otherwise, the parentheses wouldn't wrap the decorators, which would cause a syntax error.
Input:
```ts
export default (@dec class {}) {};
```
Output before:
```ts
export default @dec (
class {}
) { }
```
Output after:
```ts
export default (@dec class {}) {}
2025-09-17 09:46:51 +00:00
Dunqing
3cf1a41039
fix(formatter): missing parenthesis for TSAsExpression ( #13842 )
...
Port from https://github.com/biomejs/biome/blob/4a5ef84930344ae54f3877da36888a954711f4a6/crates/biome_js_syntax/src/parentheses/expression.rs#L702-L709
2025-09-17 09:37:13 +00:00
Dunqing
25edd0391b
fix(formatter): missing parenthesis for TSTypeAssertion ( #13841 )
...
Port from https://github.com/biomejs/biome/blob/4a5ef84930344ae54f3877da36888a954711f4a6/crates/biome_js_syntax/src/parentheses/expression.rs#L742-L758
2025-09-17 09:36:37 +00:00