Dunqing
d8b9909bd8
fix(semantic): IdentifierReference within TSPropertySignature cannot reference type-only import binding ( #5441 )
...
close : #5435
The behavior of `IdentifierReference` in `TSPropertySignature` is the same as in `TSTypeQuery`, both allow only reference value bindings and type-only import bindings.
I still use `ReferenceFlags::TSTypeQuery` here because I want to avoid producing many changes unrelated to the bug in this PR. I will refactor it in the follow-up PR soon
2024-09-05 01:50:18 +00:00
DonIsaac
0f50b1ed6d
feat(semantic): check for initializers in ambient VariableDeclarations ( #5463 )
2024-09-05 01:33:11 +00:00
DonIsaac
62f7fff88f
feat(semantic): check for non-declared, non-abstract object accessors without bodies ( #5461 )
2024-09-05 01:33:10 +00:00
DonIsaac
540714393a
feat(semantic): check for non-declared, non-abstract class accessors without bodies ( #5460 )
...
This should be causing more negative tests to fail than it actually is. This is
because our typescript coverage tests use the "declarations" option to change
the source type to `.d.ts`, which is incorrect. This setting enables `.d.ts`
emits, it does not mean that input files should be treated as `.d.ts`
themselves.
2024-09-05 01:33:09 +00:00
DonIsaac
052e94c94e
feat(semantic): check for parameter properties in constructor overloads ( #5459 )
...
Adds checks for
```
A parameter property is only allowed in a constructor implementation.ts(2369)
```
2024-09-05 01:33:07 +00:00
overlookmotel
87c5df2226
refactor(ast)!: rename Expression::without_parentheses ( #5448 )
...
Rename `without_parenthesized` to `without_parentheses`. Both are hard-to-spell words, but "without parenthesized" does not make sense.
2024-09-05 01:25:00 +00:00
overlookmotel
a43e9512f3
refactor(ast): use loop instead of recursion ( #5447 )
...
Use loop instead of recursive function call. Loops are usually cheaper.
2024-09-05 01:24:59 +00:00
overlookmotel
6285a02274
fix(linter): eslint/radix rule correctly check for unbound symbols ( #5446 )
...
`SymbolTable::get_symbol_id_from_name(name).is_none()` is not always correct, because it will return `false` if there is a binding *anywhere* in the AST with that name, whereas what we actually want to know is whether *this* `IdentifierReference` is referring to a global or not.
Instead, look up whether this reference is resolved or not using `SymbolTable::is_global_reference`.
The 3 test cases added were not working prior to this change.
2024-09-05 01:18:24 +00:00
overlookmotel
2224cc4e62
refactor(ast): renumber JSXMemberExpressionObject discriminants ( #5464 )
...
Number discriminants starting at 0, not 1. This likely makes no difference, but starting numbering at 1 seems odd.
2024-09-04 22:59:53 +00:00
overlookmotel
a952c47265
refactor(ast): use loop not recursion ( #5449 )
...
`Expression::get_inner_expression` and `Expression::get_inner_expression_mut` use a loop rather than recursive function calls. Loops are usually cheaper.
2024-09-04 20:24:45 +00:00
overlookmotel
1d3e973f10
refactor(linter): simplify eslint/radix rule ( #5445 )
...
Refactor to remove duplicate logic.
2024-09-04 16:52:27 +00:00
Boshen
9c937e06e8
fix(benchmark): do not measure initialization of transformer options ( #5442 )
...
relates #5267
2024-09-04 14:52:21 +00:00
Boshen
10279f55d9
feat(parser): add syntax error for hyphen in JSXMemberExpression <Foo.bar-baz /> ( #5440 )
...
closes #5355
2024-09-04 14:09:06 +00:00
rzvxa
fdb8857630
refactor(linter): use "parsed pattern" in no_div_regex rule. ( #5417 )
...
Part of #5416 , Paves the road for upcoming refactors by adding the `oxc_regular_expression` dependency and a helper method for ease of access.
2024-09-04 14:00:47 +00:00
Jelle van der Waa
aff2c71423
feat(linter/react): implement self-closing-comp ( #5415 )
...
Rule Detail:
[link](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md )
Co-authored-by: Don Isaac <donald.isaac@gmail.com>
2024-09-04 10:00:23 -04:00
Boshen
ba4b68cf63
feat(minifier): remove parenthesized expression for dce ( #5439 )
...
relates #5436
2024-09-04 12:58:39 +00:00
overlookmotel
d9d7e7c596
refactor(ast): remove IdentifierName from TSThisParameter ( #5327 )
...
`TSThisParameter` does not need to include an `IdentifierName` which is always "this". Just storing the `Span` is sufficient.
2024-09-04 12:46:53 +00:00
Jelle van der Waa
81709549d9
perf(linter/react): add should_run conditions for react rules ( #5402 )
2024-09-04 08:37:15 -04:00
dalaoshu
f89c776ac4
chore(linter/vitest): improve docs for vitest rules ( #5428 )
2024-09-04 08:29:57 -04:00
rzvxa
23285f431d
feat(ast): add ContentEq trait. ( #5427 )
...
Part of #5283
2024-09-04 11:53:50 +00:00
Dunqing
c78291600e
feat(codegen): print type_parameters in TaggedTemplateExpression ( #5438 )
2024-09-04 11:24:04 +00:00
IWANABETHATGUY
caf800700d
chore(justfile): bundle wasm with different flag ( #5433 )
...
1. wasm-pack with release flag will increase wasm bundling time, which
hurts dx when developing playground.
2. only enable `release` flag when `build-wasm`.
2024-09-04 13:30:48 +08:00
Boshen
f7f63bc3e2
chore(README): update playground link
2024-09-04 12:18:24 +08:00
Boshen
cd0516752c
chore(justfile): build-wasm should build in prod
2024-09-04 08:58:14 +08:00
overlookmotel
e7bd49dae4
refactor(regular_expression): correct typo ( #5429 )
...
Just correct a misspelling.
2024-09-04 00:54:22 +00:00
Dunqing
c984219e06
refactor(transformer/typescript): move all entry points to implementation of Traverse trait ( #5422 )
2024-09-03 18:26:20 +00:00
Dunqing
0617249716
fix(transformer/nullish-coalescing-operator): incorrect reference flags ( #5408 )
...
Fixes an obvious problem
2024-09-03 15:29:07 +00:00
overlookmotel
cfe54974f1
fix(transformer): do not create double reference in JSX transform ( #5414 )
...
Follow on after #5358 . Don't create a new `IdentifierReference` with a new `ReferenceId` when we already have one which is correctly resolved.
2024-09-03 15:06:07 +00:00
overlookmotel
b9ef357868
test(transformer): add tests for nested JSX this member expressions in arrow function transform ( #5413 )
...
Follow-up after #5356 . Handle nested JSX member expressions with `this` as base object in arrow functions transform (e.g. `<this.foo.bar />`).
2024-09-03 15:06:06 +00:00
Boshen
51b15ca143
ci: set show-progress: false in clone-submodules
2024-09-03 22:03:34 +08:00
overlookmotel
bfabd8facc
perf(syntax): further optimize is_identifier_name ( #5426 )
...
Follow-on after #5425 . Further optimize `oxc_syntax::identifier::is_identifier_name` by processing string in blocks of 8 bytes, and checking if all bytes in a block are ASCII in one go, rather than testing each byte individually.
2024-09-03 13:48:36 +00:00
overlookmotel
aeda84f904
perf(syntax): optimize is_identifier_name ( #5425 )
...
Optimize `oxc_syntax::identifier::is_identifier_name`. Add a fast path for ASCII, which will be the common case. Only fall back to iterating over `char`s and using the more expensive test functions e.g. `is_identifier_start_unicode` if non-ASCII chars are found.
2024-09-03 12:48:32 +00:00
IWANABETHATGUY
3ccb065695
ci: make cargo coverage compile faster
...
It still runs fast
2024-09-03 20:22:37 +08:00
Dunqing
0eb32a6770
fix(traverse): invalid variable name generated by generate_uid_based_on_node ( #5407 )
...
close : #5371
2024-09-03 12:13:30 +00:00
IWANABETHATGUY
4cb63fea4d
feat(index): impl rayon related to trait for IndexVec ( #5421 )
...
1. Impl `rayon` related trait for `oxc_index::IndexVec`
2024-09-03 12:01:57 +00:00
IWANABETHATGUY
00511fd6a8
docs: use oxc_index instead of index_vec in doc comments ( #5423 )
2024-09-03 11:57:27 +00:00
dalaoshu
4473779074
feat(linter/node): implement no-exports-assign ( #5370 )
2024-09-03 07:53:14 -04:00
Boshen
0a5780d328
ci: fix broken benchmark ( #5424 )
2024-09-03 18:21:39 +08:00
Boshen
b1d7440401
chore(deps): update oxc-browserslist to v1.0.3
2024-09-03 14:07:11 +08:00
Boshen
a03b24d94e
ci: add napi tests ( #5419 )
2024-09-03 12:24:58 +08:00
Boshen
b486a85405
ci: fix broken reusable_prepare_release.yml
2024-09-03 12:20:04 +08:00
Boshen
58bab2b52a
chore(regular_expression): prevent cargo shear wasm-bindgen
2024-09-03 12:16:47 +08:00
Boshen
310e05ca8e
ci: match autofix trigger with ci.yml
2024-09-03 12:05:02 +08:00
Boshen
a834424a41
ci: change commit message to follow conventional commit
2024-09-03 11:29:09 +08:00
Boshen
5a5fbcbec2
chore: format toml
2024-09-03 11:14:49 +08:00
Boshen
ea7a52f1b4
fix(napi/transform): fix test
2024-09-03 11:03:44 +08:00
rzvxa
59abf27d95
feat(ast, parser): add oxc_regular_expression types to the parser and AST. ( #5256 )
...
closes #5060
2024-09-03 02:36:37 +00:00
rzvxa
b47aca0e88
refactor(syntax): use generate_derive for CloneIn in types outside of oxc_ast crate. ( #5280 )
...
Removes the temporary `CloneIn` derive macro used for "foreign" types - as in types outside of the `oxc_ast` crate - since now we have support for multiple derive outputs - one per each crate - that allows us to use `generate_derive` across multiple crates.
2024-09-03 02:36:37 +00:00
rzvxa
68a1c01f4e
feat(ast_tools): add dedicated Derive trait. ( #5278 )
...
In an effort toward the implementation of #5256 , this PR allows us to have a separately generated "derive" file for each crate.
This also eliminates a bunch of boilerplate when writing new "derive" generators and generally makes it more approachable.
2024-09-03 02:36:36 +00:00
oxc-bot
be1a6d4c84
Release crates v0.26.0 ( #5418 )
...
## [0.26.0] - 2024-09-03
- 1aa49af ast: [**BREAKING**] Remove
`JSXMemberExpressionObject::Identifier` variant (#5358 ) (Dunqing)
- 01cc2ce semantic: [**BREAKING**] Add `ScopeTree:get_child_ids` API
behind a runtime flag (#5403 ) (Boshen)
- b1d0075 napi/transform: [**BREAKING**] Align output API `sourceText`
-> `code` with babel (#5398 ) (Boshen)
- 32f7300 ast: [**BREAKING**] Add `JSXElementName::IdentifierReference`
and `JSXMemberExpressionObject::IdentifierReference` (#5223 ) (Dunqing)
- 23e8456 traverse: [**BREAKING**] `TraverseCtx::ancestor` with level 0
= equivalent to `parent` (#5294 ) (overlookmotel)
- 582ce9e traverse: [**BREAKING**] `TraverseCtx::ancestor` return
`Ancestor::None` if out of bounds (#5286 ) (overlookmotel)
- 234a24c ast: [**BREAKING**] Merge `UsingDeclaration` into
`VariableDeclaration` (#5270 ) (Kevin Deng 三咲智子)
- c100826 semantic: [**BREAKING**] Always create a scope for `for`
statements (#5110 ) (overlookmotel)
- d304d6f semantic: [**BREAKING**] Always create a scope for
`CatchClause` (#5109 ) (overlookmotel)
### Features
- 180b1a1 ast: Add `Function::name()` (#5361 ) (DonIsaac)
- 5505749 ast: Add `accessibility` field to `AccessorProperty` (#5290 )
(Dunqing)
- 49cd5db ast,parser: Add `definite` flag to `AccessorProperty` node
(#5182 ) (DonIsaac)
- c2fa725 ast,parser: Parse `TSTypeAnnotations` on `AccessorProperty`
(#5179 ) (DonIsaac)
- 292d162 codegen: Print missing fields for `AccessorProperty` (#5291 )
(Dunqing)
- 72740b3 isolated_declaration: Support sourcemap option (#5170 )
(dalaoshu)
- f81e8a1 linter: Add `oxc/no-async-endpoint-handlers` (#5364 )
(DonIsaac)
- 9c22ce9 linter: Add hyperlinks to diagnostic messages (#5318 )
(DonIsaac)
- d22bd20 module_lexer: Distinguish for types-only imports and exports
(#5184 ) (Kevin Deng 三咲智子)
- 7dfd51a parser: Report class properties that are both definite and
optional (#5181 ) (DonIsaac)
- a563968 parser: Report errors on optional accessor properties (#5180 )
(DonIsaac)
- 46b641b regular_expression: Validate max quantifier value (#5218 )
(leaysgur)
- be4642f semantic: Transform checker check child scope IDs (#5410 )
(overlookmotel)
- 6e969f9 semantic: Add `ScopeTree::delete_root_unresolved_reference`
(#5305 ) (overlookmotel)
- 1b20ceb span: Add `CompactStr::to_compact_string` method (#5385 )
(Boshen)
- 5a137f0 span/source-type: Add SourceType factory methods (#5242 )
(DonIsaac)
- f5e05db span/source-type: Impl `Display` and `Error` for
`UnknownExtension` (#5240 ) (DonIsaac)
- d04857b transformer: Support `Targets::from_query` method (#5336 )
(Dunqing)
- 3d4a64c transformer: Make `Targets` public (#5335 ) (Dunqing)
- 0eb7602 transformer: Support `TransformOptions::from_preset_env` API
(#5323 ) (Dunqing)
- 08dc0ad transformer: Add `object-spread` plugin (#3133 ) (magic-akari)
- 01c0c3e transformer: Add remaining options to transformer options
(#5169 ) (Boshen)
- 056c667 transformer/arrow-functions: The output that uses `this`
inside blocks doesn't match Babel (#5188 ) (Dunqing)
- 0abfc50 transformer/typescript: Support `rewrite_import_extensions`
option (#5399 ) (Dunqing)
### Bug Fixes
- 8ebc23f ast: Serialize `TSParenthesizedType` with camelCase (#5199 )
(Kevin Deng 三咲智子)
- 5c4c001 codegen: Print `export @decorator declare abstract class Foo`
correctly (#5303 ) (Boshen)
- 7b1546b codegen: Do not print comments when `--minify` (Boshen)
- ff7fa98 diagnostics: Improve "file is too long to fit on the screen"
(#5120 ) (Boshen)
- 8a17807 parser: Treat JSX element tags starting with `_` or `$` as
`IdentifierReference`s (#5343 ) (overlookmotel)
- d4c06ef parser: Revert "check for `@flow` with recoverable errors as
well" (#5297 ) (overlookmotel)
- e1d8b92 parser: Check for `@flow` with recoverable errors as well
(Boshen)
- e6fd52e parser: Change unterminated regex error to be non-recoverable
(#5285 ) (Boshen)
- 1686920 parser: Span for invalid regex flags (#5225 ) (leaysgur)
- cffce11 regular_expression: Prevent panic on too large number (#5282 )
(leaysgur)
- 293413f semantic: Implicit return `UpdateExpression` in
`ArrowFunctionExpression` does not as read reference (#5161 ) (Dunqing)
- a6bb3b1 span/source-type: Consider `.cjs` and `.cts` files as
`ModuleKind::Script` (#5239 ) (DonIsaac)
- 35f03db transformer: `ArrowfunctionExpression`'s expression is true
but has more than one body statement (#5366 ) (Dunqing)
- 8d6b05c transformer: Class property with typescript value should not
be removed (#5298 ) (Boshen)
- 47e69a8 transformer-optional-catch-binding: The `unused` binding is
not in the correct scope (#5066 ) (Dunqing)
- 94ff94c transformer/arrow-functions: Reaches `unreachable` when
`<this.foo>` is inside an arrow function (#5356 ) (Dunqing)
- f8bb022 transformer/arrow-functions: Remove
`SymbolFlags::ArrowFunction` (#5190 ) (Dunqing)
- d9ba5ad transformer/arrow-functions: Correct scope for `_this` (#5189 )
(Dunqing)
- 3acb3f6 transformer/react: Mismatch output caused by incorrect
transformation ordering (#5255 ) (Dunqing)
- 5754c89 transformer/typescript: Remove accessibility from
`AccessorProperty` (#5292 ) (Dunqing)
- d594818 traverse: `insert_scope_below` update child scopes records
(#5409 ) (overlookmotel)
- 25d6e20 traverse: Add missing visitors to `ChildScopeCollector`
(#5118 ) (overlookmotel)
### Performance
- 292f217 ast: Optimize `JSXIdentifier::is_reference` (#5344 )
(overlookmotel)
- 12a7607 codegen: Inline `Codegen::print_list` (#5221 ) (overlookmotel)
- fb847bd codegen: Slightly faster `print_list` (#5192 ) (Boshen)
- a1523c6 transformer: Remove an allocation from arrow functions
transform (#5412 ) (overlookmotel)
### Documentation
- 8334bd4 transformer: Add documentation for `Targets::get_targets`
(#5337 ) (Dunqing)
- d51a954 transformer: Add documentation for arrow-functions plugin
(#5186 ) (Dunqing)
### Refactor
- c2d8c9e ast: Reduce allocations in
`AstBuilder::move_assignment_target` (#5367 ) (overlookmotel)
- 946c867 ast: Box `TSThisParameter` (#5325 ) (overlookmotel)
- 960e1d5 ast: Rename `IdentifierReference::new_with_reference_id`
(#5157 ) (overlookmotel)
- f63b568 ast: Remove `#[non_exhaustive]` attr from `AstBuilder` (#5130 )
(overlookmotel)
- d4c3778 codegen: Rename vars (#5222 ) (overlookmotel)
- 543cad6 codegen: Remove some pub APIs (Boshen)
- cd63336 diagnostic: Change how diagnostic codes are rendered (#5317 )
(DonIsaac)
- d236554 parser: Move `JSXIdentifier` conversion code into parser
(#5345 ) (overlookmotel)
- bc59dd2 parser: Improve example for `byte_search!` macro usage (#5234 )
(overlookmotel)
- a3ddfdd parser: Improve lexer pointer maths (#5233 ) (overlookmotel)
- 3ae94b8 semantic: Change `build_module_record` to accept &Path instead
of PathBuf (Boshen)
- 05d25e2 semantic: Combine add scope methods (#5262 ) (overlookmotel)
- fdedc0f semantic: Transform checker: rename `SemanticData` to
`Scoping` (#5261 ) (overlookmotel)
- 1086109 semantic: Transform checker do not output spans in errors
(#5260 ) (overlookmotel)
- af5713e semantic: Transform checker continue checks if missing IDs
(#5259 ) (overlookmotel)
- 943454f semantic: Update transform checker for no conditional scopes
(#5252 ) (overlookmotel)
- 892a7fa semantic: Replace `ref` syntax (#5253 ) (overlookmotel)
- cbb4725 semantic: Add comment to transform checker (#5250 )
(overlookmotel)
- a17cf33 semantic: Remove `ScopeTree::child_ids` (#5232 ) (Boshen)
- d5a4940 semantic: Rewrite handling of label statement errors (#5138 )
(Boshen)
- 94f60e7 span/source-type: Make `SourceType` factories `const` (#5241 )
(DonIsaac)
- 0de844d transformer: Remove unnecessary code from JSX transform
(#5339 ) (overlookmotel)
- 5136f01 transformer: Remove unnecessary type annotation (#5131 )
(overlookmotel)
- 260c9d2 transformer/es2015: Move all entry points to implementation of
Traverse trait (#5187 ) (Dunqing)
- 1645115 transformer/object-reset-spread: Make plugin initialization
unconditional (#5319 ) (Dunqing)
- d2666fe transformer/object-rest-spread: Move plugin-relates files to
`object_rest_spread` mod (#5320 ) (Dunqing)
- 7e2a7af transformer/react: Remove `CalculateSignatureKey`
implementation from refresh (#5289 ) (Dunqing)
- b43a394 traverse: Correct code comments (#5293 ) (overlookmotel)
- d71f0ed traverse: Inline all passthrough methods (#5279 )
(overlookmotel)
- 188ce07 traverse: Improve safety via type system (#5277 )
(overlookmotel)
- 0f4a8b3 traverse: Add debug asserts for safety invariants (#5272 )
(overlookmotel)
- 341e42a traverse: Make `Ancestor` an owned type (#5269 )
(overlookmotel)
- eba5033 traverse: Codegen `ChildScopeCollector` (#5119 )
(overlookmotel)
- f771d7c traverse: Remove unnecessary imports (#5116 ) (overlookmotel)
- c6590ae traverse: Move generated files into separate folder (#5115 )
(overlookmotel)
- fc2e9ad traverse: Remove support for `#[scope(if(...))]` attr (#5114 )
(overlookmotel)
- 1ba11a3 traverse: Refactor `ChildScopeCollector` (#5112 )
(overlookmotel)
- 40e2f6e traverse: Remove unnecessary branch in `ChildScopeCollector`
(#5111 ) (overlookmotel)
- b39c0d6 wasm: Add `source_type` for parser, replace class options with
plain object (#5217 ) (Kevin Deng 三咲智子)
### Testing
- 7009177 parser: Fix incorrect flow error test (Boshen)
- be7b8c6 semantic: Add `JSXIdentifierReference`-related tests (#5224 )
(Dunqing)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-09-03 10:36:02 +08:00