Boshen
3d88f20cbb
fix(codegen): print shorthand for all { x } variants ( #4374 )
...
closes #4340
2024-07-21 19:54:21 +08:00
DonIsaac
51f5025c9c
feat(linter): add fixer for unicorn/prefer-string-starts-ends-with ( #4378 )
...
Part of #4179
2024-07-21 07:20:22 +00:00
DonIsaac
a207923af1
perf: replace some CompactStr usages with Cows ( #4377 )
...
Reduce memory allocations in semantic and linter by using `Cow<'a, str>` over `CompactStr`
2024-07-20 19:19:55 +00:00
rzvxa
7a3e92591f
refactor(ast_codegen): better visit marker parsing. ( #4371 )
...
closes #4281
2024-07-20 17:07:24 +00:00
overlookmotel
d213773e38
refactor(ast): replace serde rename "lowercase" with "camelCase" ( #4376 )
...
Replace all `#[serde(rename_all = "lowercase")]` with `#[serde(rename_all = "camelCase")]`, for consistency. In all these cases lowercase and camelcase formatting is the same, so it makes no substantive difference, just better to be consistent.
2024-07-20 16:49:19 +00:00
overlookmotel
abfccbd941
refactor(ast): reduce #[cfg_attr] boilerplate in AST type defs ( #4375 )
...
Remove a ton of `#[cfg_attr(feature = "serialize", serde(...))]` boilerplate from AST type definitions.
Before: `#[cfg_attr(feature = "serialize", serde(flatten))]`
After: `#[serde(flatten)]`
This is a reprise of #2669 , which was later reverted, but this time doing it using our existing zero-cost `#[ast]` dummy macro attr, so no compile time penalty this time around.
This makes no difference to either runtime or compile time behavior, purely removes the `cfg_attr` boilerplate and makes the code easier to read.
2024-07-20 16:41:16 +00:00
rzvxa
d345b84a72
feat(ast): add #[ast] attribute to non-visited AST types. ( #4309 )
...
Mark everything mentioned in https://github.com/oxc-project/oxc/pull/3815#issuecomment-2186736258 as AST.
We now error on the occurrence of non-ast items in the source of truth. It doesn't make sure that all fields and variants are `#[ast]` and therefore `repr_stable` but there are only a handful of non-AST types used here(mainly Atom and Span). Since we don't have access to the external types we can't make sure of it unless we find a way to const assert it.
The best we can do until then is to check all field/variant types to be either `#[ast]` or in a white list. I can add this check to the codegen in an upcoming PR.
2024-07-20 12:22:26 +00:00
rzvxa
5f1c7ecad7
refactor(ast): rename the visited_node marker to ast. ( #4289 )
...
closes #4282
I went with `#[ast(visit)]` but we can change it to 2 separate markers as suggested by @overlookmotel in the issue.
2024-07-20 12:02:25 +00:00
DonIsaac
7a75e0f8a7
refactor(linter): use diagnostic codes in lint rules ( #4349 )
...
> This PR is (unfortunately) quite large, but all changes are needed in tandem for this to work properly.
## What This PR Does
Updates the linter to populate diagnostics reported by rules with error codes statically derived from `RuleMeta` + `RuleEnum`.
Doing so required changing how we handle vitest rules. I know @mysterven was hoping to refactor that part of the code, and I think this approach is an improvement (but could probably be cleaned up further).
## Changes
### 1. Auto-Populate Error Codes
`LintContext` now sets an error code scope + error code number for diagnostics reported by lint rules. `LintContext` will not clobber existing codes set by rules, allowing for rule-specific override behavior (e.g. to use `eslint-plugin-react-hooks` as an error scope).
In order to accomplish this, I had to update every diagnostic factory for every rule. While doing this I found some incorrect error messages, or messages that could be easily improved. This is where a large majority of the snapshot diffs come from. Additionally, I was able to reduce string allocations from `format!` usages in diagnostic factories, especially within jest rules.
### 2. Framework and Library Detection
This PR adds `FrameworkFlags`, which specify what (if any) set of libraries and frameworks are being used by a project and/or file. They are passed in two ways:
1. `LintOptions` can specify a set of `framework_hints` that apply to the entire target codebase. Right now these are always empty, but I'm thinking in the future we could sniff `package.json`. It may be helpful for enabling/disabling default rules.
2. When `Linter` gets run on a file, framework information is sniffed from the `LintContext`. Right now, we are only checking for `vitest` imports in `ModuleRecord` and test path prefixes from `source_path`. It may be useful to do something similar for React/NextJS rules in the future. I know that [next/no-html-link-for-pages](https://nextjs.org/docs/messages/no-html-link-for-pages ) could benefit greatly from this.
2024-07-20 03:35:00 +00:00
Jelle van der Waa
5f1e070c8b
feat(linter/eslint-plugin-unicorn): add fixer for prefer-code-point ( #4353 )
2024-07-20 10:33:15 +08:00
Jaden Rodriguez
3c0c7093b5
feat(linter): add typescript-eslint/no-extraneous-class ( #4357 )
...
Added rule for https://typescript-eslint.io/rules/no-extraneous-class/
Also, I chose to make the match the node against the class and derive
the body from the node, rather than matching against the body and using
the context to go back up to the parent class node as in the original
source.
2024-07-19 15:56:30 -04:00
DonIsaac
ea33f9470b
fix: impl PartialEq<str> for CompactStr ( #4352 )
...
I need this for another PR that I'm working on, but I think adding this just makes sense.
2024-07-19 16:39:10 +00:00
overlookmotel
5d77b36f24
refactor(semantic): visit_program visit hashbang field ( #4370 )
...
The visit was missing previously, though it didn't matter, because semantic doesn't do anything with `Hashbang` anyway. But is needed for #4367 .
2024-07-19 16:32:32 +00:00
overlookmotel
f7b9ada372
refactor(semantic): Program visitor leave scope before node ( #4369 )
...
Bring the order of calls in `SemanticBuilder::visit_program` into line with `Visit`'s `walk_program`.
2024-07-19 16:32:27 +00:00
overlookmotel
aece1df561
fix(ast): visit Programs hashbang field first ( #4368 )
...
Visit `hashbang` before `directives` for `Program`.
2024-07-19 16:27:51 +00:00
Dunqing
6ffce865d1
fix(semantic): align visit_arrow_function_expression field visit order with ast ( #4366 )
...
related: #4364
2024-07-19 14:51:59 +00:00
Dunqing
f68b659713
refactor(ast)!: reorder fields of ArrowFunctionExpression ( #4364 )
...
Found in #4328
Same as #4248
2024-07-19 14:12:05 +00:00
Boshen
27cbd551fb
chore: bump napi to v3 ( #4365 )
2024-07-19 14:06:33 +00:00
Boshen
557132ffdf
chore(deps): update vscode npm packages ( #4363 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-19 21:31:23 +08:00
Boshen
bec03ede98
chore(deps): update website npm packages ( #4362 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-19 21:30:21 +08:00
overlookmotel
7469e018b0
perf(semantic): remove branch from Nodes::add_node ( #4361 )
...
`AstNodes::add_node` had a branch specifically to handle `Program`. Remove that by inlining the special logic for `Program` into `visit_program`.
Probably won't have much effect on benchmarks as the branch is easy to predict, but still removes a few instructions and makes `add_node` easier for compiler to inline.
2024-07-19 11:34:03 +00:00
overlookmotel
729b288c5d
refactor(semantic): shorten code ( #4358 )
...
Code style: Remove unnecessary assignments to `_`.
2024-07-19 10:29:27 +00:00
overlookmotel
7eb286413e
perf(traverse): speed up finding UID binding name ( #4356 )
...
Speed up finding UID var name. Previously iterated through all `SymbolTable::references` and checked each for a string match. Replace that with a single hashmap lookup on `ScopeTree::root_unresolved_references`.
2024-07-19 10:24:01 +00:00
underfin
4cd5df00ea
fix(sourcemap): avoid negative line if token_chunks has same prev_dst_line ( #4348 )
2024-07-19 18:14:35 +08:00
Dunqing
58f6ec21f3
refactor(ast): enter node before scope ( #4347 )
...
close : #4276
2024-07-18 19:18:01 +00:00
Dunqing
59aea73daf
refactor(ast): scope is created only if CatchClause has param ( #4346 )
...
close : #4345
2024-07-18 19:14:34 +00:00
Dunqing
f8565ae3cd
fix(transformer/typescript): unexpectedly removed class binding from ExportNamedDeclaration ( #4351 )
...
The original `SymbolFlags` methods were a bit confusing I renamed and re-implemented them.
2024-07-18 16:44:38 +00:00
Boshen
e624dff1d4
fix(codegen,mangler): do not print shorthand for ObjectProperty ( #4350 )
...
I'll fix the TODO's later.
2024-07-18 16:26:33 +00:00
DonIsaac
21d0eee182
refactor(semantic): use error codes for ts diagnostics ( #4336 )
...
Part of #4333
2024-07-18 16:09:28 +00:00
DonIsaac
a2eabe1f4b
refactor(parser): use error codes for ts diagnostics ( #4335 )
...
Part of #4333
2024-07-18 16:09:25 +00:00
DonIsaac
6068e6baca
feat: add error codes to OxcDiagnostic ( #4334 )
...
Part of #4333
2024-07-18 16:09:22 +00:00
github-actions[bot]
7d751898b3
Release crates v0.21.0 ( #4344 )
...
## [0.21.0] - 2024-07-18
- d7ab0b8 semantic: [**BREAKING**] Simplify node creation (#4226 )
(lucab)
### Features
- af4dc01 ast: Align ts ast scope with typescript (#4253 ) (Dunqing)
- 83c2c62 codegen: Add option for choosing quotes; remove slow
`choose_quot` method (#4219 ) (Boshen)
- 5d17675 mangler: Add debug mode (#4314 ) (Boshen)
- e3e663b mangler: Initialize crate and integrate into minifier (#4197 )
(Boshen)
- c818472 minifier: Dce conditional expression `&&` or `||` (#4190 )
(Boshen)
- 8a190eb oxc: Export `oxc_mangler` (Boshen)
- 20cdb1f semantic: Align class scope with typescript (#4195 ) (Dunqing)
- 92ee774 semantic: Add `ScopeFlags::CatchClause` for use in CatchClause
(#4205 ) (Dunqing)
- 205c259 sourcemap: Support SourceMapBuilder#token_chunks (#4220 )
(underfin)
- 7eb960d transformer: Decode xml character entity `&#xhhhh` and
`&#nnnn;` (#4235 ) (Boshen)
### Bug Fixes
- bf3d8d3 codegen: Print annotation comment inside parens for new and
call expressions (#4290 ) (Boshen)
- 084ab76 codegen: Use `ryu-js` for f64 to string (Boshen)
- e167ef7 codegen: Print parenthesis properly (#4245 ) (Boshen)
- c65198f codegen: Choose the right quote for jsx attribute string
(#4236 ) (Boshen)
- be82c28 codegen: Print `JSXAttributeValue::StringLiteral` directly
(#4231 ) (Boshen)
- 3df9e69 mangler: No shorthand `BindingProperty`; handle var hoisting
and export variables (#4319 ) (Boshen)
- f144082 minifier: RemoveDeadCode should visit nested expression
(#4268 ) (underfin)
- 66b455a oxc_codegen: Avoid print same pure comments multiple time
(#4230 ) (IWANABETHATGUY)
- 9a87e41 parser: Avoid crashing on invalid const modifier (#4267 )
(lucab)
- 641a78b parser: Fix tests for number parsing (#4254 ) (overlookmotel)
- 9badac0 semantic: Avoid var hosting insert the var variable to the
`CatchClause` scope (#4337 ) (Dunqing)
- 95e15b6 semantic: Incorrect resolve references for `ExportSpecifier`
(#4320 ) (Dunqing)
- c362bf7 semantic: Incorrect resolve references for
`TSInterfaceHeritage` (#4311 ) (Dunqing)
- 351ecf2 semantic: Incorrect resolve references for `TSTypeQuery`
(#4310 ) (Dunqing)
- 1108f2a semantic: Resolve references to the incorrect symbol (#4280 )
(Dunqing)
- 22d56bd semantic: Do not resolve references after `FormalParameters`
in TS type (#4241 ) (overlookmotel)- 1c117eb Avoid print extra semicolon
after accessor property (#4199 ) (IWANABETHATGUY)
### Performance
- a8dc4f3 parser: Speed up parsing numbers with `_` separators (#4259 )
(overlookmotel)
- b94540d parser: Speed up parsing octal literals (#4258 )
(overlookmotel)
- a7b328c parser: Faster parsing decimal numbers (#4257 ) (overlookmotel)
- f9d3f2e semantic: Inline ast record functions (#4272 ) (overlookmotel)
- 8fad7db semantic: Reduce `AstNodeId` to `u32` (#4264 ) (overlookmotel)
- 23743db semantic: Do not record ast nodes for cfg if cfg disabled
(#4263 ) (overlookmotel)
- da69076 semantic: Reduce overhead of cfg recording ast nodes (#4262 )
(overlookmotel)
- cb15303 semantic: Reduce memory copies (#4216 ) (overlookmotel)
- ef4c1f4 semantic: Reduce lookups (#4214 ) (overlookmotel)
- f23e54f semantic: Recycle unresolved references hash maps (#4213 )
(overlookmotel)
- 2602ce2 semantic: Reuse existing map of unresolved refs (#4206 )
(lucab)
### Refactor
- 2c7bb9f ast: Pass final `ScopeFlags` into `visit_function` (#4283 )
(overlookmotel)
- 3e099fe ast: Move `enter_scope` after `visit_binding_identifier`
(#4246 ) (Dunqing)
- aab7aaa ast/visit: Fire node events as the outermost one. (#4203 )
(rzvxa)
- d1c4be0 codegen: Clean up annotation_comment (Boshen)
- 06197b8 codegen: Separate tests (Boshen)
- aa22073 codegen: Improve print API (#4196 ) (Boshen)
- c5731a5 semantic: Remove defunct code setting ScopeFlags twice (#4286 )
(overlookmotel)
- 16698bc semantic: Move function/class-specific code into specific
visitors (#4278 ) (overlookmotel)
- ee16668 semantic: Rename function param (#4277 ) (overlookmotel)
- 25f0771 semantic: Alter syntax of `control_flow!` macro (#4275 )
(overlookmotel)
- 639fd48 semantic: Comment why extra CFG enabled check (#4274 )
(overlookmotel)
- c418bf5 semantic: Directly record `current_node_id` when adding a
scope (#4265 ) (Dunqing)
- ace4f1f semantic: Update the order of `visit_function` and `Visit`
fields in the builder to be consistent (#4248 ) (Dunqing)
- 8bfeabf semantic: Simplify adding `SymbolFlags::Export` (#4249 )
(Dunqing)
- dc2b3c4 semantic: Add strict mode in scope flags for class definitions
(#4156 ) (Dunqing)
- 81ed588 semantic: Convert scope fields to IndexVecs (#4208 ) (lucab)
- bbe5ded semantic: Set `current_scope_id` to `scope_id` in
`enter_scope` (#4193 ) (Dunqing)
- 7f1addd semantic: Correct scope in CatchClause (#4192 ) (Dunqing)
- fc0b17d syntax: Turn the `AstNodeId::dummy` into a constant field.
(#4308 ) (rzvxa)
- a197e01 transformer/typescript: Remove unnecessary code (#4321 )
(Dunqing)
- 1458d81 visit: Add `#[inline]` to empty functions (#4330 )
(overlookmotel)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-18 14:39:07 +08:00
Dunqing
1f7ec62d44
chore: move mangler example to minifier ( #4343 )
...
```
Error: Circular dependency detected: oxc_codegen -> oxc_mangler
```
2024-07-18 06:27:16 +00:00
Dunqing
fc39ffa009
Revert "Release crates v0.21.0" ( #4342 )
...
Reverts oxc-project/oxc#4338
https://github.com/oxc-project/oxc/actions/runs/9986290706/job/27598542089
Release failed
2024-07-18 14:11:42 +08:00
github-actions[bot]
0abcf499b7
Release crates v0.21.0 ( #4338 )
...
## [0.21.0] - 2024-07-18
- d7ab0b8 semantic: [**BREAKING**] Simplify node creation (#4226 )
(lucab)
### Features
- af4dc01 ast: Align ts ast scope with typescript (#4253 ) (Dunqing)
- 83c2c62 codegen: Add option for choosing quotes; remove slow
`choose_quot` method (#4219 ) (Boshen)
- 5d17675 mangler: Add debug mode (#4314 ) (Boshen)
- e3e663b mangler: Initialize crate and integrate into minifier (#4197 )
(Boshen)
- c818472 minifier: Dce conditional expression `&&` or `||` (#4190 )
(Boshen)
- 8a190eb oxc: Export `oxc_mangler` (Boshen)
- 20cdb1f semantic: Align class scope with typescript (#4195 ) (Dunqing)
- 92ee774 semantic: Add `ScopeFlags::CatchClause` for use in CatchClause
(#4205 ) (Dunqing)
- 205c259 sourcemap: Support SourceMapBuilder#token_chunks (#4220 )
(underfin)
- 7eb960d transformer: Decode xml character entity `&#xhhhh` and
`&#nnnn;` (#4235 ) (Boshen)
### Bug Fixes
- bf3d8d3 codegen: Print annotation comment inside parens for new and
call expressions (#4290 ) (Boshen)
- 084ab76 codegen: Use `ryu-js` for f64 to string (Boshen)
- e167ef7 codegen: Print parenthesis properly (#4245 ) (Boshen)
- c65198f codegen: Choose the right quote for jsx attribute string
(#4236 ) (Boshen)
- be82c28 codegen: Print `JSXAttributeValue::StringLiteral` directly
(#4231 ) (Boshen)
- 3df9e69 mangler: No shorthand `BindingProperty`; handle var hoisting
and export variables (#4319 ) (Boshen)
- f144082 minifier: RemoveDeadCode should visit nested expression
(#4268 ) (underfin)
- 66b455a oxc_codegen: Avoid print same pure comments multiple time
(#4230 ) (IWANABETHATGUY)
- 9a87e41 parser: Avoid crashing on invalid const modifier (#4267 )
(lucab)
- 641a78b parser: Fix tests for number parsing (#4254 ) (overlookmotel)
- 9badac0 semantic: Avoid var hosting insert the var variable to the
`CatchClause` scope (#4337 ) (Dunqing)
- 95e15b6 semantic: Incorrect resolve references for `ExportSpecifier`
(#4320 ) (Dunqing)
- c362bf7 semantic: Incorrect resolve references for
`TSInterfaceHeritage` (#4311 ) (Dunqing)
- 351ecf2 semantic: Incorrect resolve references for `TSTypeQuery`
(#4310 ) (Dunqing)
- 1108f2a semantic: Resolve references to the incorrect symbol (#4280 )
(Dunqing)
- 22d56bd semantic: Do not resolve references after `FormalParameters`
in TS type (#4241 ) (overlookmotel)- 1c117eb Avoid print extra semicolon
after accessor property (#4199 ) (IWANABETHATGUY)
### Performance
- a8dc4f3 parser: Speed up parsing numbers with `_` separators (#4259 )
(overlookmotel)
- b94540d parser: Speed up parsing octal literals (#4258 )
(overlookmotel)
- a7b328c parser: Faster parsing decimal numbers (#4257 ) (overlookmotel)
- f9d3f2e semantic: Inline ast record functions (#4272 ) (overlookmotel)
- 8fad7db semantic: Reduce `AstNodeId` to `u32` (#4264 ) (overlookmotel)
- 23743db semantic: Do not record ast nodes for cfg if cfg disabled
(#4263 ) (overlookmotel)
- da69076 semantic: Reduce overhead of cfg recording ast nodes (#4262 )
(overlookmotel)
- cb15303 semantic: Reduce memory copies (#4216 ) (overlookmotel)
- ef4c1f4 semantic: Reduce lookups (#4214 ) (overlookmotel)
- f23e54f semantic: Recycle unresolved references hash maps (#4213 )
(overlookmotel)
- 2602ce2 semantic: Reuse existing map of unresolved refs (#4206 )
(lucab)
### Refactor
- 2c7bb9f ast: Pass final `ScopeFlags` into `visit_function` (#4283 )
(overlookmotel)
- 3e099fe ast: Move `enter_scope` after `visit_binding_identifier`
(#4246 ) (Dunqing)
- aab7aaa ast/visit: Fire node events as the outermost one. (#4203 )
(rzvxa)
- d1c4be0 codegen: Clean up annotation_comment (Boshen)
- 06197b8 codegen: Separate tests (Boshen)
- aa22073 codegen: Improve print API (#4196 ) (Boshen)
- c5731a5 semantic: Remove defunct code setting ScopeFlags twice (#4286 )
(overlookmotel)
- 16698bc semantic: Move function/class-specific code into specific
visitors (#4278 ) (overlookmotel)
- ee16668 semantic: Rename function param (#4277 ) (overlookmotel)
- 25f0771 semantic: Alter syntax of `control_flow!` macro (#4275 )
(overlookmotel)
- 639fd48 semantic: Comment why extra CFG enabled check (#4274 )
(overlookmotel)
- c418bf5 semantic: Directly record `current_node_id` when adding a
scope (#4265 ) (Dunqing)
- ace4f1f semantic: Update the order of `visit_function` and `Visit`
fields in the builder to be consistent (#4248 ) (Dunqing)
- 8bfeabf semantic: Simplify adding `SymbolFlags::Export` (#4249 )
(Dunqing)
- dc2b3c4 semantic: Add strict mode in scope flags for class definitions
(#4156 ) (Dunqing)
- 81ed588 semantic: Convert scope fields to IndexVecs (#4208 ) (lucab)
- bbe5ded semantic: Set `current_scope_id` to `scope_id` in
`enter_scope` (#4193 ) (Dunqing)
- 7f1addd semantic: Correct scope in CatchClause (#4192 ) (Dunqing)
- fc0b17d syntax: Turn the `AstNodeId::dummy` into a constant field.
(#4308 ) (rzvxa)
- a197e01 transformer/typescript: Remove unnecessary code (#4321 )
(Dunqing)
- 1458d81 visit: Add `#[inline]` to empty functions (#4330 )
(overlookmotel)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-18 13:56:35 +08:00
Dunqing
9badac030d
fix(semantic): avoid var hosting insert the var variable to the CatchClause scope ( #4337 )
...
related: #4192 #4323
I will figure it out #4323 later
2024-07-18 02:52:14 +00:00
DonIsaac
7afa1f06c3
feat(linter): support suggestions and dangerous fixes ( #4223 )
2024-07-18 02:20:30 +00:00
cinchen
acc57295d5
feat(linter): eslint-plugin-vitest/expect-expect ( #4299 )
...
support
[eslint-plugin-vitest/expect-expect](https://github.com/veritem/eslint-plugin-vitest/blob/main/src/rules/expect-expect.ts )
---------
Co-authored-by: wenzhe <mysteryven@gmail.com>
2024-07-18 10:13:45 +08:00
Jelle van der Waa
ed49e169cb
feat(linter/eslint-plugin-unicorn): implement fixer for prefer-dom-node-append ( #4306 )
2024-07-18 09:44:23 +08:00
Jelle van der Waa
9df7b5675f
feat(jsx-a11y/no-autofocus): implement fixer support ( #4171 )
...
Let oxlint automatically remove the autoFocus attribute when `--fix` is
passed.
2024-07-17 16:31:19 -04:00
cinchen
2213f9393b
feat(linter): eslint-plugin-vitest/no-alias-methods ( #4301 )
...
support
[eslint-plugin-vitest/no-alias-methods](https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-alias-method.md )
2024-07-17 16:30:35 -04:00
Jelle van der Waa
4463eb4c48
chore(linter): add fixer test cases for prefer-dom-node-text-content ( #4315 )
2024-07-17 16:21:31 -04:00
Jelle van der Waa
db2fd70432
feat(linter/eslint-plugin-promise): implement no-webpack-loader-syntax ( #4331 )
...
Rule detail:
[link](https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-webpack-loader-syntax.md )
2024-07-17 16:13:54 -04:00
overlookmotel
1458d81268
refactor(visit): add #[inline] to empty functions ( #4330 )
...
Add `#[inline]` to empty default implementations of `enter_node` etc. Hopefully compiler will inline them automatically within Oxc even cross-crate because we compile with LTO, but maybe not for external consumers who don't use LTO.
2024-07-17 17:10:36 +00:00
Don Isaac
650615c15d
build: compile macro crates with some optimizations ( #4327 )
...
## What This PR Does
Compile `oxc_macros` and `oxc_ast_macros` with `O1` in debug builds.
This should make consuming crates compile faster, as well as test
binaries (oxc_linter tests take a while to compile when developing rules
locally)
2024-07-17 23:32:00 +08:00
github-actions[bot]
697c0efdef
Release oxlint v0.6.1 ( #4326 )
...
## [0.6.1] - 2024-07-17
### Features
- 83c2c62 codegen: Add option for choosing quotes; remove slow
`choose_quot` method (#4219 ) (Boshen)
- 1f8968a linter: Add eslint-plugin-promise rules: avoid-new,
no-new-statics, params-names (#4293 ) (Jelle van der Waa)
- a4dc56c linter: Add fixer for
unicorn/no_useless_promise_resolve_reject (#4244 ) (Burlin)
- 6fb808f linter: Add typescript-eslint/no-confusing-non-null-assertion
(#4224 ) (Jaden Rodriguez)
- 126b66c linter: Support eslint-plugin-vitest/valid-describe-callback
(#4185 ) (cinchen)
- 05b9a73 linter: Support eslint-plugin-vitest/valid-expect (#4183 )
(cinchen)
- 3e56b2b linter: Support eslint-plugin-vitest/no-test-prefixes (#4182 )
(cinchen)
- 3016f03 linter: Let fixer functions return a `None` fix (#4210 )
(DonIsaac)
- bbe6137 linter: Implement unicorn/no-useless-undefined (#4079 )
(Burlin)
- 20cdb1f semantic: Align class scope with typescript (#4195 ) (Dunqing)
### Bug Fixes
- 9df60da linter: Correct find first non whitespace logic in
@typescript-eslint/consistent-type-imports (#4198 ) (mysteryven)
- 67240dc linter: Not ignore adjacent spans when fixing (#4217 )
(mysteryven)
- dd07a54 linter: Global variables should always check the builtin
variables (#4209 ) (Jelle van der Waa)
- 351ecf2 semantic: Incorrect resolve references for `TSTypeQuery`
(#4310 ) (Dunqing)
- 1108f2a semantic: Resolve references to the incorrect symbol (#4280 )
(Dunqing)
### Performance
- 0fdc88b linter: Optimize no-dupe-keys (#4292 ) (lucab)
### Refactor
- 2c7bb9f ast: Pass final `ScopeFlags` into `visit_function` (#4283 )
(overlookmotel)
- aa22073 codegen: Improve print API (#4196 ) (Boshen)
- b5a8f3c linter: Use get_first_parameter_name from unicorn utils
(#4255 ) (Jelle van der Waa)
- 7089a3d linter: Split up fixer code into separate files (#4222 )
(DonIsaac)
- ace4f1f semantic: Update the order of `visit_function` and `Visit`
fields in the builder to be consistent (#4248 ) (Dunqing)
- 7f1addd semantic: Correct scope in CatchClause (#4192 ) (Dunqing)
Co-authored-by: Boshen <Boshen@users.noreply.github.com>
2024-07-17 21:18:28 +08:00
Boshen
3df9e697cc
fix(mangler): no shorthand BindingProperty; handle var hoisting and export variables ( #4319 )
...
Trying to pass tests in https://github.com/oxc-project/monitor-oxc
2024-07-17 18:12:42 +08:00
Dunqing
a197e01b5c
refactor(transformer/typescript): remove unnecessary code ( #4321 )
...
close : #3827
2024-07-17 10:07:30 +00:00
Dunqing
95e15b6dc5
fix(semantic): incorrect resolve references for ExportSpecifier ( #4320 )
...
```ts
type A = any;
const B = 0;
export { A, B }
^^^^^^^^ ExportSpecifiers
export { A }
^^^^^ type-only ExportSpecifiers
```
non-type-only `ExportSpecifier` can reference value and type symbols. but currently, `IdentifierReference` in ExportSpecifier only has a `ReferenceFlags::Read`
2024-07-17 09:52:58 +00:00
Dunqing
a88d588a07
feat(semantic): add ReferenceFlags::TSTypeQuery to indicate referenced by TSTypeQuery ( #4317 )
...
`ReferenceFlags::TSTypeQuery` can be used to help us insist on whether the reference is referenced by the type or not.
2024-07-17 09:52:57 +00:00