rzvxa
f5eeebdcec
fix(ast_macros): raise compile error on invalid generate_derive input. ( #4766 )
...
It checks 2 things. 1) The input is a supported derive 2) The given identifier is the same as the fully qualified target trait.
The latter makes sure that the trait for derive is included in the scope.
Part of #4704
Here's an expanded example of how we assert traits:
```rust
const _:() = {
{
trait AssertionTrait: ::oxc_allocator::CloneIn<'static> {}
impl<T: CloneIn<'static>> AssertionTrait for T {}
};
};
```
It makes sure `CloneIn` is the same as `::oxc_allocator::CloneIn` and more importantly requires the user to include the trait if they wish to use it with `generate_derive`.
It also provides LSP jump to definition.
2024-08-08 19:06:43 +00:00
overlookmotel
670868035b
refactor(linter): replace Windows-style line breaks with Unix-style in test fixture ( #4768 )
...
I happened to notice that 1 test fixture file had Windows-style CRLF line breaks rather than Unix-style LF. Fixing it for consistency.
2024-08-08 17:33:04 +00:00
overlookmotel
7ea058d84f
refactor(ast_codegen): replace Windows-style line breaks with Unix-style ( #4769 )
...
2 files in AST codegen had Windows-style CRLF line breaks. Change them to Unix-style LF. Does not alter contents of the files aside from the line breaks.
2024-08-08 17:28:58 +00:00
rzvxa
fff9da319d
fix(ast, ast_codegen): use generate_derive instead of visitable for generating span derives. ( #4747 )
...
follow-up to #4735
I was accidentally using the old code to filter the viable target types to derive. It means before this PR we were still using the `#[ast(visit)]` for this purpose.
2024-08-08 17:06:48 +00:00
rzvxa
abe8202ba8
refactor(ast_codegen): declutter the main file. ( #4744 )
...
same as #4741
2024-08-08 16:38:13 +00:00
overlookmotel
7345f68d9e
refactor(ast_codegen): remove Generator::name and Pass::name methods ( #4764 )
...
Remove `Generator::name` and `Pass::name` methods. All impls for these methods return a string identical to the struct name, so can set return value of `Runner::name` in `define_generator!` and `define_pass!` macros instead.
2024-08-08 15:39:10 +00:00
overlookmotel
d32fb6f5c5
refactor(ast_codegen): re-order imports ( #4763 )
...
Move imports to top of file in `generators/mod.rs`, just for consistency.
2024-08-08 15:39:09 +00:00
overlookmotel
80046d1144
refactor(ast_codegen): consistent endl! position ( #4762 )
...
Pure refactor (style nit). Place `endl!()` macro calls in consistent position throughout codegen.
2024-08-08 15:39:08 +00:00
overlookmotel
2dea0caae0
refactor(ast_codegen): consistent import order ( #4761 )
...
Pure refactor. Alter import order in generated code to consistent order - `std`, external crates, `crate`, `super`.
2024-08-08 15:24:45 +00:00
dalaoshu
41f861fd15
feat(linter/eslint-plugin-vitest): implement prefer-to-be-truthy ( #4755 )
...
Related to #4656
2024-08-08 22:07:43 +08:00
heygsc
b20e3351fb
feat(linter): add fixer for eslint/no-eq-null ( #4758 )
2024-08-08 09:12:19 -04:00
overlookmotel
790c551c5e
refactor(ast_codegen): simplify derive_get_span generator ( #4757 )
...
Simplify `derive_get_span` generator that was introduced in #4735 . No change to functionality, just aiming for greater readability.
In particular:
* Move defining idents/tokens which are specific to `GetSpan` / `GetSpanMut` into those specific generators, rather than branching on `MUT` later on.
* Remove `const MUT` param.
* Remove the confusing pairs of closures and functions both called `derive_enum` / `derive_struct`.
* Inline function which generates the impls - prioritizing readability over DRY code.
2024-08-08 10:47:37 +00:00
heygsc
bd56b6b56b
chore(tasks): change comment fix-dangerous to fix_dangerous ( #4756 )
2024-08-08 18:42:29 +08:00
heygsc
2f6c3b9cec
feat(linter): add fixer for eslint/no-compare-neg-zero ( #4748 )
...
part of #4179
---------
Co-authored-by: wenzhe <mysteryven@gmail.com>
2024-08-08 17:12:02 +08:00
dalaoshu
6cf38cb776
chore(tasks): support init vitest lint rule ( #4752 )
...
Related to #4656
2024-08-08 16:27:50 +08:00
Boshen
4d0b40ad10
fix(napi/transform): fix wrong isolated declarations emit
2024-08-08 14:36:41 +08:00
oxc-bot
69dc6c9cb1
Release crates v0.24.0 ( #4749 )
...
## [0.24.0] - 2024-08-08
- 75f2207 traverse: [**BREAKING**] Replace `find_scope` with
`ancestor_scopes` returning iterator (#4693 ) (overlookmotel)
- 506709f traverse: [**BREAKING**] Replace `find_ancestor` with
`ancestors` returning iterator (#4692 ) (overlookmotel)
### Features
- 23b0040 allocator: Introduce `CloneIn` trait. (#4726 ) (rzvxa)
- 51c1ca0 ast: Derive `CloneIn` for AST types, using `generate_derive`.
(#4732 ) (rzvxa)
- e12bd1e ast: Allow conversion from TSAccessibility into &'static str
(#4711 ) (DonIsaac)
- fd2d9da ast: Improve `AstKind::debug_name` (#4553 ) (DonIsaac)
- b3b7028 ast: Implement missing Clone, Hash, and Display traits for
literals (#4552 ) (DonIsaac)
- 54047e0 ast: `GetSpanMut` trait (#4609 ) (overlookmotel)
- eae401c ast, ast_macros: Apply stable repr to all `#[ast]` enums
(#4373 ) (rzvxa)
- ec0b4cb ast_codegen: Add `derive_clone_in` generator. (#4731 ) (rzvxa)
- 2e91ad6 ast_codegen: Support for `generate_derive` marker. (#4728 )
(rzvxa)
- 82e2f6b ast_codegen: Process AST-related `syntax` types. (#4694 )
(rzvxa)
- 0c52c0d ast_codegen: Add alignment and size data to the schema.
(#4615 ) (rzvxa)
- 07607d3 ast_codegen, span: Process `Span` through ast_codegen (#4703 )
(overlookmotel)
- 125c5fd ast_codegen, span: Process `SourceType` through ast_codegen.
(#4696 ) (rzvxa)
- eaddc8f linter: Add fixer for eslint/func_names (#4714 ) (DonIsaac)
- 229a0e9 minifier: Implement dot define for member expressions (#3959 )
(camc314)
- 33f1312 semantic: Impl GetSpan for AstNode (#4717 ) (DonIsaac)
- e42ac3a sourcemap: Add `ConcatSourceMapBuilder::from_sourcemaps`
(#4639 ) (overlookmotel)
- 2e63618 span: Implement `CloneIn` for the AST-related items. (#4729 )
(rzvxa)
- 6a36616 syntax: Derive `CloneIn` for the AST-related items. (#4730 )
(rzvxa)
### Bug Fixes
- 4a56954 codegen: Print raw if value is number is Infinity (#4676 )
(Boshen)
- 94d3c31 minifier: Avoid removing function declaration from `KeepVar`
(#4722 ) (Boshen)
- bf43148 minifier: Do not `remove_syntax` in dead_code_elimination
(Boshen)
- bf48c7f minifier: Fix `keep_var` keeping vars from arrow functions
(#4680 ) (Boshen)
- 9be29af minifier: Temporarily fix shadowed `undefined` variable
(#4678 ) (Boshen)
- e8b662a minifier: Various fixes to pass minifier conformance (#4667 )
(Boshen)
- 01d85de napi/transform: Update napi files (Boshen)
- f290191 oxc_ast_macros: Fix `syn` lacking features to build (Boshen)
- a40a217 parser: Parse `assert` keyword in `TSImportAttributes` (#4610 )
(Boshen)
- 03c643a semantic: Incorrect `scope_id` for catch parameter symbols
(#4659 ) (Dunqing)
- 6c612d1 semantic/jsdoc: Handle whitespace absence (#4642 ) (leaysgur)
- 0d2c41a semantic/jsdoc: Panic on parsing `type_name_comment`. (#4632 )
(rzvxa)
- 9f8f299 syntax: Prevent creating invalid u32 IDs (#4675 )
(overlookmotel)
- 4797eaa transformer: Strip TS statements from for in/of statement
bodies (#4686 ) (overlookmotel)
- 5327acd transformer/react: The `require` IdentifierReference does not
have a `reference_id` (#4658 ) (Dunqing)
- 3987665 transformer/typescript: Incorrect enum-related
`symbol_id`/`reference_id` (#4660 ) (Dunqing)
- 4efd54b transformer/typescript: Incorrect `SymbolFlags` for jsx
imports (#4549 ) (Dunqing)
### Performance
- 8dd76e4 codegen: Reduce size of `LineOffsetTable` (#4643 )
(overlookmotel)
- b8e6753 codegen: `u32` indexes in `LineOffsetTable` for source maps
(#4641 ) (overlookmotel)
- 6ff200d linter: Change react rules and utils to use `Cow` and
`CompactStr` instead of `String` (#4603 ) (DonIsaac)
- 0f5e982 minifier: Only visit arrow expression after dropping
`console.log` (#4677 ) (Boshen)
- ff43dff sourcemap: Speed up VLQ encoding (#4633 ) (overlookmotel)
- a330773 sourcemap: Reduce string copying in `ConcatSourceMapBuilder`
(#4638 ) (overlookmotel)
- 372316b sourcemap: `ConcatSourceMapBuilder` extend `source_contents`
in separate loop (#4634 ) (overlookmotel)
- c7f1d48 sourcemap: Keep local copy of previous token in VLQ encode
(#4596 ) (overlookmotel)
- 590d795 sourcemap: Shorten main loop encoding VLQ (#4586 )
(overlookmotel)
### Documentation
- c69ada4 ast: Improve AST node documentation (#4051 ) (Rintaro Itokawa)
### Refactor
- 579b797 ast: Use type identifier instead of `CloneIn::Cloned` GAT.
(#4738 ) (rzvxa)
- 475266d ast: Use correct lifetimes for name-related methods (#4712 )
(DonIsaac)
- 83b6ca9 ast: Add explicit enum discriminants. (#4689 ) (rzvxa)
- ba70001 ast: Put `assert_layouts.rs` behind `debug_assertions` (#4621 )
(rzvxa)
- 3f53b6f ast: Make AST structs `repr(C)`. (#4614 ) (rzvxa)
- 452e0ee ast: Remove defunct `visit_as` + `visit_args` attrs from
`#[ast]` macro (#4599 ) (overlookmotel)
- 2218340 ast, ast_codegen: Use `generate_derive` for implementing
`GetSpan` and `GetSpanMut` traits. (#4735 ) (rzvxa)
- fbfd852 minifier: Add `NodeUtil` trait for accessing symbols on ast
nodes (#4734 ) (Boshen)
- e0832f8 minifier: Use `oxc_traverse` for AST passes (#4725 ) (Boshen)
- 17602db minifier: Move tests and files around (Boshen)
- 3289477 minifier: Clean up tests (#4724 ) (Boshen)
- e78cba6 minifier: Ast passes infrastructure (#4625 ) (Boshen)
- d25dea7 parser: Use `ast_builder` in more places. (#4612 ) (rzvxa)
- 09d9822 semantic: Simplify setting scope flags (#4674 ) (overlookmotel)
- 6e453db semantic: Simplify inherit scope flags from parent scope
(#4664 ) (Dunqing)
- e1429e5 span: Reduce #[cfg_attr] boilerplate in type defs (#4702 )
(overlookmotel)
- e24fb5b syntax: Add explicit enum discriminants to AST related types.
(#4691 ) (rzvxa)
- 3f3cb62 syntax, span: Reduce #[cfg_attr] boilerplate in type defs
(#4698 ) (overlookmotel)
- 54f9897 traverse: Simpler code for entering/exiting unconditional
scopes (#4685 ) (overlookmotel)
- 83546d3 traverse: Enter node before entering scope (#4684 )
(overlookmotel)- 9b51e04 Overhaul napi transformer package (#4592 )
(DonIsaac)
### Testing
- 49d5196 ast: Fix `assert_layouts.rs` offset tests on 32bit platforms.
(#4620 ) (rzvxa)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-08-08 14:00:57 +08:00
Boshen
fbfd852cf8
refactor(minifier): add NodeUtil trait for accessing symbols on ast nodes ( #4734 )
2024-08-08 02:48:25 +00:00
overlookmotel
f36500a2bd
refactor(ast_codegen): flatten code ( #4743 )
...
A bit of code style simplification after #4731 . Remove unnecessary nesting and rename some vars for consistency.
2024-08-07 22:32:07 +00:00
rzvxa
aeed29f248
chore(ci): generate .generated_ast_watch_list.yml ( #4737 )
...
closes #4699
I also did some reordering to the code so it is easier to follow.
2024-08-07 22:11:34 +00:00
rzvxa
2218340f2b
refactor(ast, ast_codegen): use generate_derive for implementing GetSpan and GetSpanMut traits. ( #4735 )
2024-08-07 22:07:33 +00:00
rzvxa
579b797cc5
refactor(ast): use type identifier instead of CloneIn::Cloned GAT. ( #4738 )
...
After https://github.com/oxc-project/oxc/pull/4731#discussion_r1707526289 , I realized that I'm using `Self::Cloned` for enum derives. It was from my earlier attempts to resolve lifetime issues.
2024-08-07 21:23:23 +00:00
rzvxa
51c1ca02d3
feat(ast): derive CloneIn for AST types, using generate_derive. ( #4732 )
...
Closes #4284 (follow-on after #4276 ).
2024-08-07 20:29:07 +00:00
rzvxa
ec0b4cbdaa
feat(ast_codegen): add derive_clone_in generator. ( #4731 )
...
Follow-on after #4276 , related to #4284 .
2024-08-07 20:29:06 +00:00
rzvxa
2e91ad6c4e
feat(ast_codegen): support for generate_derive marker. ( #4728 )
...
Follow-on after #4276 , related to #4284 .
2024-08-07 17:38:13 +00:00
rzvxa
6a36616289
feat(syntax): derive CloneIn for the AST-related items. ( #4730 )
...
Follow-on after #4276 , related to #4284 .
2024-08-07 17:38:08 +00:00
rzvxa
2e63618462
feat(span): implement CloneIn for the AST-related items. ( #4729 )
...
Follow-on after #4276 , related to #4284 .
2024-08-07 17:28:54 +00:00
rzvxa
23b0040c16
feat(allocator): introduce CloneIn trait. ( #4726 )
...
Introduce the trait discussed in #4284 .
2024-08-07 17:28:54 +00:00
Boshen
e0832f8e18
refactor(minifier): use oxc_traverse for AST passes ( #4725 )
2024-08-07 13:26:29 +00:00
heygsc
db68a6c290
fix(linter): fixer for eslint/for-direction ( #4727 )
2024-08-07 08:42:51 -04:00
Boshen
17602db6de
refactor(minifier): move tests and files around
2024-08-07 20:01:55 +08:00
DonIsaac
c29637392e
chore(linter): mark many rules as fix-pending ( #4723 )
...
Many rules still need `pending` flags, particularly the unicorn rules.
I also enhanced documentation for some rules while I was in the area.
2024-08-07 08:07:20 +00:00
Boshen
3289477197
refactor(minifier): clean up tests ( #4724 )
2024-08-07 06:29:41 +00:00
Boshen
94d3c31933
fix(minifier): avoid removing function declaration from KeepVar ( #4722 )
2024-08-07 05:09:32 +00:00
DonIsaac
eaddc8fd1d
feat(linter): add fixer for eslint/func_names ( #4714 )
2024-08-07 04:51:57 +00:00
heygsc
80557a9386
feat(linter): add fixer for eslint/for-direction ( #4679 )
...
part of #4179
2024-08-07 00:48:57 -04:00
heygsc
62739949ae
fix(linter): block in eslint/no_cond_assign ( #4721 )
...
fix : #4687
2024-08-07 00:44:38 -04:00
DonIsaac
33f1312a8c
feat(semantic): impl GetSpan for AstNode ( #4717 )
2024-08-07 03:59:38 +00:00
DonIsaac
7345bc944c
fix(linter/func-names): handle ts accessibility when reporting missing names ( #4713 )
2024-08-07 03:53:40 +00:00
DonIsaac
475266dde3
refactor(ast): use correct lifetimes for name-related methods ( #4712 )
2024-08-07 03:53:39 +00:00
DonIsaac
e12bd1e21a
feat(ast): allow conversion from TSAccessibility into &'static str ( #4711 )
2024-08-07 03:53:38 +00:00
Don Isaac
4b7dfd6c7c
docs(linter): correct docs for no-unused-vars ( #4716 )
2024-08-06 22:44:01 -04:00
DonIsaac
e2859038b6
refactor(linter): clean up eslint/func_names ( #4710 )
2024-08-07 01:07:56 +00:00
overlookmotel
06efae6e4c
refactor(ast_codegen): reorder imports ( #4709 )
...
Pure refactor. Reorder imports to clarify what's an external crate and what's a local module.
2024-08-06 20:38:42 +00:00
overlookmotel
654a6e67fa
refactor(ast_codegen): list input files explicitly ( #4708 )
...
List inputs to the codegen explicitly. This is less DRY, but I think it has the advantage of being more obvious - for #4704 .
2024-08-06 19:14:05 +00:00
overlookmotel
06a2e43f93
fix(ci): run ast_changes CI job if span def file changes ( #4706 )
...
A detail I forgot in #4703 .
2024-08-06 18:34:39 +00:00
overlookmotel
07607d3e94
feat(ast_codegen, span): process Span through ast_codegen ( #4703 )
...
Add `#[ast]` attr to `Span`.
Due to how AST codegen works, this necessitates putting the type def in a separate file. https://github.com/oxc-project/oxc/pull/4696#issuecomment-2271781995
2024-08-06 18:22:22 +00:00
overlookmotel
e1429e5ef1
refactor(span): reduce #[cfg_attr] boilerplate in type defs ( #4702 )
...
Similar to #4375 and #4698 . #4696 added `#[ast]` attribute to types in `oxc_span`, so these types can use `#[serde]` attrs without the `#[cfg_attr(feature = "serialize", ...)]` guard.
2024-08-06 18:00:07 +00:00
rzvxa
125c5fd8ed
feat(ast_codegen, span): process SourceType through ast_codegen. ( #4696 )
2024-08-06 17:42:12 +00:00
overlookmotel
3f3cb629af
refactor(syntax, span): reduce #[cfg_attr] boilerplate in type defs ( #4698 )
...
Similar to #4375 . #4694 added `#[ast]` attribute to types in `oxc_syntax`, so these types can use `#[serde]` attrs without the `#[cfg_attr(feature = "serialize", ...)]` guard.
2024-08-06 17:37:07 +00:00