overlookmotel
966fcc925a
refactor(ast_codegen): re-order code in fmt module ( #4779 )
...
Pure refactor. Just move code which is most used to top of `fmt` module. And rename `pprint` to `pretty_print` to be a little clearer.
2024-08-09 10:01:14 +00:00
overlookmotel
2c1c7050ea
refactor(ast_codegen): use doc comments instead of endl! ( #4778 )
...
Similar to #4777 .
Use `///@@` instead of `endl!();` in AST codegen to create line breaks.
NB: `///@@` needs to be before an item, not after it.
2024-08-09 08:57:18 +00:00
overlookmotel
f418f62e7b
refactor(ast_codegen): use doc comments instead of insert! ( #4777 )
...
Avoid the `insert!` macro in AST codegen. Use doc comments starting with special symbol `@` instead.
* Before: `insert!("// plain comment");`
* After: `///@ plain comment`
* Or: `//!@ plain comment`
Either `///@` or `//!@` is converted to plain `//` in output.
`//!@` is legal in top-of-file position, which allows us to inline `#![allow(...)]` attributes, which in my opinion makes the generators a bit easier to read.
2024-08-09 08:19:15 +00:00
Burlin
b22ed4512d
fix(linter): improve prefer_namespace_keyword rule ( #4751 )
...
fix : #4651
This commit enhances the `prefer_namespace_keyword` rule in the
TypeScript linter: Add support for detecting and fixing nested module
declarations (e.g., module A.B {})
- Introduce helper functions `is_nest_module`, `is_valid_module`, and
`is_invalid_module` to improve code readability and maintainability
- Refactor the main `run` function to use these new helper functions
- Update test cases to cover nested module scenarios
- Improve error reporting for nested modules
2024-08-09 11:46:50 +03:30
overlookmotel
c15c931a3f
refactor(ast_codegen): move formatting regex definitions ( #4775 )
...
Pure refactor. Move the regex definitions used in formatting to next to the `Replacer`s for those regexes.
2024-08-09 07:48:13 +00:00
overlookmotel
dbb5f4c75e
refactor(ast_codegen): remove unnecessary imports from generated files ( #4774 )
...
#4773 makes types like `Span` importable from `oxc_ast::ast`, so remove the imports from other crates in generated code.
I'm not sure why clippy's `wildcard_imports` rule was not being triggered for `use crate::ast::*;`, but add `#[allow(clippy::wildcard_imports)]` on these statements just to make sure.
2024-08-09 07:48:09 +00:00
overlookmotel
daa0b2e66e
refactor(ast): oxc_ast crate re-export AST types from other crates ( #4773 )
...
Some AST types are defined in crates outside `oxc_ast` crate. Re-export these types from `oxc_ast` crate for ease - so you don't need to remember where they're defined to use them.
2024-08-09 07:13:56 +00:00
heygsc
abd83fa998
feat(linter): add fixer for jsx_ally/no_aria_hidden_on_focusable ( #4772 )
...
part of #4179
2024-08-09 13:28:28 +08:00
dalaoshu
c509a21a1f
feat(linter/eslint-plugin-vitest): implement prefer-to-be-falsy ( #4770 )
...
Related to https://github.com/oxc-project/oxc/issues/4656
2024-08-09 13:17:45 +08:00
rzvxa
0816255e5d
chore: add editors/README.md ( #4760 )
2024-08-09 08:31:38 +08:00
lucab
63f274c7ee
refactor(linter): simplify NoObjCalls resolution logic ( #4765 )
2024-08-09 00:27:07 +00:00
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