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
rzvxa
82e2f6b924
feat(ast_codegen): process AST-related syntax types. ( #4694 )
2024-08-06 17:14:35 +00:00
rzvxa
b04dc3d026
refactor(ast_codegen): disallow implicit enum discriminants on #[ast] types. ( #4690 )
2024-08-06 17:14:33 +00:00
rzvxa
1690a57ed3
refactor(ast_codegen): move away from RType in generators. ( #4682 )
...
This PR introduces `EarlyCtx` and `LateCtx` in place of the old `CodegenCtx`, Early passes operate at the AST level while generators and other late passes operate on the schema.
It will also replace the confusing `RType` name with something more idiomatic ~~(open for suggestions, I haven't found a good name yet)~~ I've named it `AstType` and dropped the `R` prefix for `REnum` and `RStruct`.
There are some qualities of life improvements too, Things like `to_type_elide` can be used to simplify the code.
Related to #4442 (and can potentially mark it "close as fixed").
2024-08-06 17:14:31 +00:00
rzvxa
e24fb5b093
refactor(syntax): add explicit enum discriminants to AST related types. ( #4691 )
2024-08-06 17:09:15 +00:00