Boshen
e031056b2f
feat(codegen): add sourcemap feature flag ( #17305 )
...
Oxlint uses `oxc_codegen` for fixes, but do not require sourcemap.
2025-12-23 10:28:49 +00:00
Boshen
f41705f530
fix(codegen): do not generate sourcemap for empty length spans ( #11892 )
...
Upstream may have modified and generated an incorrect span.
2025-06-25 09:42:58 +00:00
Boshen
f729734e22
fix(parser): fix decorator placed incorrectly in initializers ( #11461 )
...
fixes #11452
cases:
```
class C { @foo static accessor A0 = @bar class {} }
function foo(@foo x = @bar class {}) {}
```
2025-06-03 16:12:02 +00:00
Boshen
1673ffb05a
feat(codegen): rework printing normal / legal / annotation comments ( #10997 )
...
fixes #10948
This PR changes how comment options are interpreted.
`CodegenOptions::comments`, `CodegenOptions::annotation_comments` and
`CodegenOptions::legal_comments` are now independent of each other.
### `CodegenOptions::comments`
Controls printing of normal comments. At present, only some leading
comments are preserved. It does not control legal and annotation
comments.
### `CodegenOptions::annotation_comments`
Controls printing of annotation comments
* jsdoc: `/** jsdoc */`
* pure: `/* #__PURE__ */` and `/* #__NO_SIDE_EFFECTS__ */`
* webpack: `/* webpackChunkName */`
* vite: `/* @vite-ignore */`
* coverage: `v8 ignore`, `c8 ignore`, `node:coverage`, `istanbul ignore`
### `CodegenOptions::legal_comments`
Controls printing of legal comments
* starts with `//!` or `/*!`.
* contains `/* @license */` or `/* @preserve */`
---
Comment generation is also changed:
codegen first builds a comments map by keeping only the needed comments.
Printing functions will then print out comments in their respective
positions.
---
This PR reveals some incorrect comment interpretation:
* https://github.com/oxc-project/oxc/issues/10998
2025-05-13 19:24:42 +08:00
Boshen
315143ae42
refactor(codegen)!: remove useless CodeGenerator type alias ( #10702 )
2025-04-29 17:01:07 +00:00
Boshen
2c66ac2bcf
feat(codegen): preserve code coverage ignore comments (e.g. v8 ignore) ( #10338 )
...
fixes #10091
This PR attempts to preserve any comments with a start match of
```
/* v8 ignore */
/* c8 ignore */
/* node:coverage */
/* istanbul ignore */
```
Added a special handle for coverage comment before `catch`:
```
try {
something();
}
/* istanbul ignore next */
catch(e) {
// should never happen
}
```
2025-04-09 16:24:20 +00:00
renovate
cf969e2bb7
chore(deps): update dependency rust to v1.85.0 ( #9263 )
...
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [rust](https://redirect.github.com/rust-lang/rust ) | minor | `1.84.1` -> `1.85.0` |
---
### Release Notes
<details>
<summary>rust-lang/rust (rust)</summary>
### [`v1.85.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1850-2025-02-20 )
[Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.84.1...1.85.0 )
\==========================
<a id="1.85.0-Language"></a>
## Language
- [The 2024 Edition is now stable.](https://redirect.github.com/rust-lang/rust/pull/133349 )
See [the edition guide](https://doc.rust-lang.org/nightly/edition-guide/rust-2024/index.html ) for more details.
- [Stabilize async closures](https://redirect.github.com/rust-lang/rust/pull/132706 )
See [RFC 3668](https://rust-lang.github.io/rfcs/3668-async-closures.html ) for more details.
- [Stabilize `#[diagnostic::do_not_recommend]`](https://redirect.github.com/rust-lang/rust/pull/132056 )
- [Add `unpredictable_function_pointer_comparisons` lint to warn against function pointer comparisons](https://redirect.github.com/rust-lang/rust/pull/118833 )
- [Lint on combining `#[no_mangle]` and `#[export_name]` attributes.](https://redirect.github.com/rust-lang/rust/pull/131558 )
<a id="1.85.0-Compiler"></a>
## Compiler
- [The unstable flag `-Zpolymorphize` has been removed](https://redirect.github.com/rust-lang/rust/pull/133883 ), see [https://github.com/rust-lang/compiler-team/issues/810 ](https://redirect.github.com/rust-lang/compiler-team/issues/810 ) for some background.
<a id="1.85.0-Platform-Support"></a>
## Platform Support
- [Promote `powerpc64le-unknown-linux-musl` to tier 2 with host tools](https://redirect.github.com/rust-lang/rust/pull/133801 )
Refer to Rust's \[platform support page]\[platform-support-doc]
for more information on Rust's tiered platform support.
<a id="1.85.0-Libraries"></a>
## Libraries
- [Panics in the standard library now have a leading `library/` in their path](https://redirect.github.com/rust-lang/rust/pull/132390 )
- [`std::env::home_dir()` on Windows now ignores the non-standard `$HOME` environment variable](https://redirect.github.com/rust-lang/rust/pull/132515 )
It will be un-deprecated in a subsequent release.
- [Add `AsyncFn*` to the prelude in all editions.](https://redirect.github.com/rust-lang/rust/pull/132611 )
<a id="1.85.0-Stabilized-APIs"></a>
## Stabilized APIs
- [`BuildHasherDefault::new`](https://doc.rust-lang.org/stable/std/hash/struct.BuildHasherDefault.html#method.new )
- [`ptr::fn_addr_eq`](https://doc.rust-lang.org/std/ptr/fn.fn_addr_eq.html )
- [`io::ErrorKind::QuotaExceeded`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.QuotaExceeded )
- [`io::ErrorKind::CrossesDevices`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.CrossesDevices )
- [`{float}::midpoint`](https://doc.rust-lang.org/core/primitive.f32.html#method.midpoint )
- [Unsigned `{integer}::midpoint`](https://doc.rust-lang.org/std/primitive.u64.html#method.midpoint )
- [`NonZeroU*::midpoint`](https://doc.rust-lang.org/std/num/type.NonZeroU32.html#method.midpoint )
- [impl `std::iter::Extend` for tuples with arity 1 through 12](https://doc.rust-lang.org/stable/std/iter/trait.Extend.html#impl-Extend%3C\(A,\)%3E-for-\(EA,\) )
- [`FromIterator<(A, ...)>` for tuples with arity 1 through 12](https://doc.rust-lang.org/stable/std/iter/trait.FromIterator.html#impl-FromIterator%3C\(EA,\)%3E-for-\(A,\) )
- [`std::task::Waker::noop`](https://doc.rust-lang.org/stable/std/task/struct.Waker.html#method.noop )
These APIs are now stable in const contexts:
- [`mem::size_of_val`](https://doc.rust-lang.org/stable/std/mem/fn.size_of_val.html )
- [`mem::align_of_val`](https://doc.rust-lang.org/stable/std/mem/fn.align_of_val.html )
- [`Layout::for_value`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.for_value )
- [`Layout::align_to`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.align_to )
- [`Layout::pad_to_align`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.pad_to_align )
- [`Layout::extend`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.extend )
- [`Layout::array`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.array )
- [`std::mem::swap`](https://doc.rust-lang.org/stable/std/mem/fn.swap.html )
- [`std::ptr::swap`](https://doc.rust-lang.org/stable/std/ptr/fn.swap.html )
- [`NonNull::new`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.new )
- [`HashMap::with_hasher`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.with_hasher )
- [`HashSet::with_hasher`](https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.with_hasher )
- [`BuildHasherDefault::new`](https://doc.rust-lang.org/stable/std/hash/struct.BuildHasherDefault.html#method.new )
- [`<float>::recip`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.recip )
- [`<float>::to_degrees`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.to_degrees )
- [`<float>::to_radians`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.to_radians )
- [`<float>::max`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.max )
- [`<float>::min`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.min )
- [`<float>::clamp`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.clamp )
- [`<float>::abs`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.abs )
- [`<float>::signum`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.signum )
- [`<float>::copysign`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.copysign )
- [`MaybeUninit::write`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.write )
<a id="1.85.0-Cargo"></a>
## Cargo
- [Add future-incompatibility warning against keywords in cfgs and add raw-idents](https://redirect.github.com/rust-lang/cargo/pull/14671/ )
- [Stabilize higher precedence trailing flags](https://redirect.github.com/rust-lang/cargo/pull/14900/ )
- [Pass `CARGO_CFG_FEATURE` to build scripts](https://redirect.github.com/rust-lang/cargo/pull/14902/ )
<a id="1.85.0-Rustdoc"></a>
## Rustdoc
- [Doc comment on impl blocks shows the first line, even when the impl block is collapsed](https://redirect.github.com/rust-lang/rust/pull/132155 )
<a id="1.85.0-Compatibility-Notes"></a>
## Compatibility Notes
- [`rustc` no longer treats the `test` cfg as a well known check-cfg](https://redirect.github.com/rust-lang/rust/pull/131729 ), instead it is up to the build systems and users of `--check-cfg`\[^check-cfg] to set it as a well known cfg using `--check-cfg=cfg(test)`.
This is done to enable build systems like Cargo to set it conditionally, as not all source files are suitable for unit tests.
[Cargo (for now) unconditionally sets the `test` cfg as a well known cfg](https://redirect.github.com/rust-lang/cargo/pull/14963 ).
\[^check-cfg]: https://doc.rust-lang.org/nightly/rustc/check-cfg.html
- [Disable potentially incorrect type inference if there are trivial and non-trivial where-clauses](https://redirect.github.com/rust-lang/rust/pull/132325 )
- `std::env::home_dir()` has been deprecated for years, because it can give surprising results in some Windows configurations if the `HOME` environment variable is set (which is not the normal configuration on Windows). We had previously avoided changing its behavior, out of concern for compatibility with code depending on this non-standard configuration. Given how long this function has been deprecated, we're now fixing its behavior as a bugfix. A subsequent release will remove the deprecation for this function.
- [Make `core::ffi::c_char` signedness more closely match that of the platform-default `char`](https://redirect.github.com/rust-lang/rust/pull/132975 )
This changed `c_char` from an `i8` to `u8` or vice versa on many Tier 2 and 3
targets (mostly Arm and RISC-V embedded targets). The new definition may
result in compilation failures but fixes compatibility issues with C.
The `libc` crate matches this change as of its 0.2.169 release.
- [When compiling a nested `macro_rules` macro from an external crate, the content of the inner `macro_rules` is now built with the edition of the external crate, not the local crate.](https://redirect.github.com/rust-lang/rust/pull/133274 )
- [Increase `sparcv9-sun-solaris` and `x86_64-pc-solaris` Solaris baseline to 11.4.](https://redirect.github.com/rust-lang/rust/pull/133293 )
- [Show `abi_unsupported_vector_types` lint in future breakage reports](https://redirect.github.com/rust-lang/rust/pull/133374 )
- [Error if multiple super-trait instantiations of `dyn Trait` need associated types to be specified but only one is provided](https://redirect.github.com/rust-lang/rust/pull/133392 )
- [Change `powerpc64-ibm-aix` default `codemodel` to large](https://redirect.github.com/rust-lang/rust/pull/133811 )
<a id="1.85.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.
- [Build `x86_64-unknown-linux-gnu` with LTO for C/C++ code (e.g., `jemalloc`)](https://redirect.github.com/rust-lang/rust/pull/134690 )
</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2025-02-21 04:33:26 +00:00
overlookmotel
a4a8e7deda
style(all): replace #[allow] with #[expect] ( #8930 )
...
Replace `#[allow]` with `#[expect]` through the whole codebase.
This also surfaced many places where the `#[allow]` attributes were outdated/pointless and could be removed entirely.
Only places `#[allow]` remains are:
1. In generated code and macros, where lint errors may or may not be triggered depending on the generated code.
2. A few places where clippy malfunctions. These use e.g. `#[allow(unused, clippy::allow_attributes)]`.
2025-02-07 14:50:02 +00:00
Boshen
413973df66
feat(codegen): print linked and external legal comment ( #7059 )
...
part of #7050
2024-11-02 04:08:14 +00:00
Boshen
6516f9eabc
feat(codegen): print inline legal comments ( #7054 )
...
part of https://github.com/oxc-project/oxc/issues/7050
2024-11-01 16:56:56 +00:00
Boshen
7645e5c34b
refactor(codegen)!: remove CommentOptions API ( #6451 )
2024-10-11 13:53:28 +00:00
Boshen
520096030a
refactor(oxc)!: remove passing Trivias around ( #6446 )
...
part of #6426
2024-10-11 06:09:25 +00:00
Boshen
020bb80b65
refactor(codegen)!: change to CodegenReturn::code and CodegenReturn::map ( #6310 )
2024-10-06 05:05:47 +00:00
Boshen
bcdbba3981
feat(codegen): print jsdoc comments that are attached to statements and class elements ( #5845 )
...
I am unable to print all comments correctly. Comments have way too much semantic meaning in JavaScript.
This PR reduces the scope to only print jsdoc comments that are attached to statements and class elements, in order to get isolated declarations shipped.
2024-09-18 07:58:22 +00:00
Boshen
bb95306efd
refactor(codegen): change annotation comment tests to snapshot ( #5800 )
2024-09-16 05:03:43 +00:00
Boshen
6a94e3f573
fix(codegen): fixes for esbuild test cases ( #4503 )
2024-07-28 08:57:15 +00:00
Boshen
e1ca4122d8
chore(codegen): port over esbuild codegen tests (all ignored right now) ( #4457 )
2024-07-25 10:00:34 +00:00
Boshen
9a094e861e
chore(codegen): add ts snapshot test
2024-07-14 20:46:22 +08:00
Boshen
06197b8be4
refactor(codegen): separate tests
2024-07-14 12:56:02 +08:00