overlookmotel
91343913ca
fix(semantic): transform checker check unresolved references ( #5096 )
...
Transform checker check root unresolved references.
The transform checker is now checking pretty much everything it can.
Only fields of `ScopeTree` and `SymbolTable` that it's *not* checking are those which contain `AstNodeId`s, because transformer does not create node IDs at present:
* `ScopeTree::node_ids`
* `SymbolTable::declarations`
* `Reference::node_id`
Checking also only proceeds in "from AST" direction.
i.e. for each `SymbolId` which appears in the AST, we check everything about that symbol. But we *don't* go through all the "rows" in `SymbolTable` and check if there are any extra symbols in the table which aren't in the AST.
Presumably transformer will leave a lot of old symbols lying around in `SymbolTable` (ditto scopes and references). We'd need to add `ScopeFlags::Deleted`, `SymbolFlags::Deleted` and `ReferenceFlags::Deleted` for the transformer to be able to "delete" existing symbols.
2024-08-23 07:52:30 +00:00
Boshen
56cc4818b5
chore(website): remove textlint annotation
...
the website no longer uses textlint
2024-08-23 15:50:52 +08:00
overlookmotel
c57e078c71
fix(semantic): transform checker check unbound references ( #5093 )
2024-08-23 08:37:48 +01:00
Boshen
aa7718ab7b
feat(transform_conformance): show printed output alongside with errors ( #5105 )
...
closes #5098
```
cargo run -p oxc_transform_conformance -- --filter logical-assignment/arrow-functions-transform/input.js
Input:
var a;
a ||= () => {};
a &&= () => {};
a ??= () => {};
Expected:
var a;
a || (a = () => {});
a && (a = () => {});
a ?? (a = () => {});
Transformed:
var a;
a || (a = () => {});
a && (a = () => {});
a ?? (a = () => {});
Errors:
x Symbol reference IDs mismatch:
| after transform: SymbolId(0): [ReferenceId(0), ReferenceId(1),
| ReferenceId(2), ReferenceId(3), ReferenceId(4), ReferenceId(5),
| ReferenceId(6), ReferenceId(7), ReferenceId(8)]
| rebuilt : SymbolId(0): [ReferenceId(0), ReferenceId(1),
| ReferenceId(2), ReferenceId(3), ReferenceId(4), ReferenceId(5)]
x Reference flags mismatch:
| after transform: ReferenceId(4): ReferenceFlags(Write)
| rebuilt : ReferenceId(1): ReferenceFlags(Read | Write)
x Reference flags mismatch:
| after transform: ReferenceId(6): ReferenceFlags(Write)
| rebuilt : ReferenceId(3): ReferenceFlags(Read | Write)
x Reference flags mismatch:
| after transform: ReferenceId(8): ReferenceFlags(Write)
| rebuilt : ReferenceId(5): ReferenceFlags(Read | Write)
Passed: true
```
2024-08-23 04:00:45 +00:00
heygsc
ad2be97078
fix(semantic): incorrect semantic check for label has same name ( #5041 )
...
fix : #5036
---------
Co-authored-by: Boshen <boshenc@gmail.com>
2024-08-23 10:36:12 +08:00
overlookmotel
d5de97d6fe
fix(semantic): transform checker check reference flags ( #5092 )
2024-08-23 00:21:21 +00:00
overlookmotel
9da6a21e40
refactor(semantic): rename transform checker output for reference symbol mismatches ( #5091 )
2024-08-22 23:40:27 +00:00
overlookmotel
90c74ee449
fix(semantic): transform checker check reference symbol IDs ( #5090 )
...
Previously was checking that references point to symbols with same name, but not necessarily the same symbol (there could be 2 different symbols with same name).
2024-08-22 23:40:26 +00:00
overlookmotel
a8005b9914
fix(semantic): transform checker check symbol redeclarations ( #5089 )
2024-08-22 23:40:26 +00:00
overlookmotel
205bff7ea9
fix(semantic): transform checker check symbol references ( #5088 )
2024-08-22 23:40:25 +00:00
Boshen
4b49cf8ce4
feat(transformer): always pass in symbols and scopes ( #5087 )
...
We no longer need to build semantic data inside the transformer.
The caller should be responsible for handling semantic data and its
errors.
The best way to achieve this in via `CompilerInterface`.
closes #3565
2024-08-22 16:06:31 +00:00
overlookmotel
4a57086d79
fix(semantic): transform checker check symbol IDs ( #5078 )
2024-08-22 15:08:48 +00:00
overlookmotel
ea7d2163e3
fix(semantic): transform checker check symbol spans ( #5076 )
2024-08-22 15:08:47 +00:00
overlookmotel
1b6b27a6de
fix(semantic): transform checker check symbol flags ( #5074 )
2024-08-22 15:08:45 +00:00
Boshen
6d87b0f1f2
fix(semantic): fix error message for duplicated label ( #5071 )
2024-08-22 12:30:04 +00:00
Dunqing
3b353321ad
fix(transformer/logical-assignment-operators): fix semantic errors ( #5047 )
...
Fix semantic error caused by `clone_in` causing `reference_id` to not exist.
In this PR, I try to use `move_expression` as much as possible instead of `expr.clone_in`. But in some cases, we need to reuse the same expression in multiple places. I have added a `clone_expression` to workaround it
I felt a bit painful we missing a [clone_in_scope](https://github.com/oxc-project/oxc/issues/4804 ) API
2024-08-22 08:41:31 +00:00
Boshen
afe728a73a
feat(parser): parse regular expression with regex parser ( #4998 )
...
Many false positives and incorrect errors. @leaysgur Enjoy 😁
Run `just conformance` to update the snapshot.
2024-08-22 03:09:55 +00:00
overlookmotel
05fff16d55
fix(semantic): transform checker compare binding symbol IDs ( #5057 )
2024-08-22 02:34:44 +00:00
overlookmotel
f187b71877
fix(semantic): transform checker compare scope children ( #5056 )
2024-08-22 02:34:44 +00:00
overlookmotel
b52c6a4269
fix(semantic): transform checker compare scope parents ( #5055 )
2024-08-22 02:34:43 +00:00
overlookmotel
da64014a6c
fix(semantic): transform checker catch more scope flags mismatches ( #5054 )
...
There was a bug previously where scope flags were only checked if there was also a bindings mismatch.
2024-08-22 02:34:43 +00:00
overlookmotel
67d1a96391
fix(semantic): transform checker compare scope flags ( #5052 )
2024-08-22 02:34:41 +00:00
overlookmotel
ee7ac8b0b7
refactor(semantic): store all data in PostTransformChecker in transform checker ( #5050 )
...
Pure refactor of transform checker. Store all scope data in `PostTransformChecker` so it doesn't need to be passed around. `SemanticData` contains a full set of all semantic data for semantic pass, so we have 2 instances of it for 1. after transform and 2. rebuilt semantic.
2024-08-21 17:04:48 +00:00
overlookmotel
4e1f4abf89
refactor(semantic): add SemanticIds to transformer checker ( #5048 )
...
Transformer checker use `SemanticIds` to store collected IDs. `SemanticIds` only contains the IDs, without the `Vec` of errors which is only used temporarily.
2024-08-21 15:49:07 +00:00
overlookmotel
8cded08eb8
refactor(semantic): rename error labels in transformer checker snapshots ( #5044 )
...
Rename labels in transformer checker snapshots "after transform" vs "rebuilt".
2024-08-21 14:33:19 +00:00
overlookmotel
863b9cb921
fix(semantic): transform checker handle conditional scopes ( #5040 )
...
Some scopes are conditional e.g. `ForStatement` only gets a scope when initializer has a binding (`for (let i = 0; ...)` vs `for (i = 0; ...)`).
Make transform compare this between post-transform and fresh semantics.
2024-08-21 12:07:14 +00:00
overlookmotel
586e15c814
refactor(semantic): reformat transform checker errors ( #5039 )
...
Reformat transform checker error output - shorter and consistent capitalization.
2024-08-21 12:07:11 +00:00
Boshen
1bd9365bd0
fix(coverage): correctly check semantic data after transform ( #5035 )
...
closes #4999
2024-08-21 09:35:04 +00:00
overlookmotel
c4c08a7433
refactor(ast)!: rename IdentifierReference::reference_flags field ( #5024 )
...
Part of #4991 .
2024-08-21 00:19:57 +00:00
overlookmotel
d262a58eb5
refactor(syntax)!: rename ReferenceFlag to ReferenceFlags ( #5023 )
...
Part of #4991 .
2024-08-21 00:19:56 +00:00
Boshen
b4407c4e9a
refactor(oxc,mangler): oxc crate add mangler; mangler use options API
2024-08-20 22:58:59 +08:00
Boshen
cd9cf5efd8
refactor(oxc): remove remove_whitespace
2024-08-20 18:27:59 +08:00
Boshen
1f6b107339
chore(coverage): ignore test262 stage3 json-modules ( #5002 )
...
stage 3 https://github.com/tc39/proposal-json-modules
Ignoring due to https://github.com/tc39/proposal-json-modules/issues/27
2024-08-20 08:50:27 +00:00
Boshen
ce4d4698b4
feat(codegen)!: remove const generic MINIFY ( #5001 )
...
This is a premature optimization, makes the code complicated, and bloats the final binary size.
The minify option is moved to `CodegenOptions`
2024-08-20 08:13:27 +00:00
Boshen
b2ff2df5af
refactor(parser)!: remove builder pattern from Parser struct ( #5000 )
...
part of #4455
use `with_options(ParseOptions { ..ParseOptions::default() })` API instead.
2024-08-20 07:40:25 +00:00
Burlin
f88970bc79
refactor(ast)!: Change order of fields in CallExpression ( #4859 )
...
fix : #4821
---------
Co-authored-by: Dunqing <dengqing0821@gmail.com>
2024-08-20 09:47:12 +08:00
Dunqing
f51d3f9169
feat(transformer/nullish-coalescing-operator): handles nullish coalescing expression in the FormalParamter ( #4975 )
...
### What I did in this PR
1. Replace `self.clone_identifier_reference` with `ctx.clone_identifier.reference`
2. Remove the usage of `ast.copy`
3. Handle below example correctly
### Example
```js
// Input
var foo = object.foo ?? "default";
// Output
var _object$foo;
var foo =
(_object$foo = object.foo) !== null && _object$foo !== void 0
? _object$foo
: "default";
```
2024-08-20 01:06:37 +00:00
Dunqing
f794870dd4
feat(transformer/nullish-coalescing-operator): generate the correct binding name ( #4974 )
...
match Babel's [implementation](440fe41333/packages/babel-plugin-transform-nullish-coalescing-operator/src/index.ts (L40) )
2024-08-20 01:06:36 +00:00
DonIsaac
7c6bae2d65
feat(website): add link to rule source on docs page ( #4995 )
...

2024-08-19 20:40:14 +00:00
Don Isaac
a0effab160
feat(linter): support more flexible config.globals values ( #4990 )
...
Support `"readable", `"writable"`, and boolean values for `GlobalValue`.
I also enhanced the documentation for `OxcGlobals`
## Screenshot
<img width="797" alt="image"
src="https://github.com/user-attachments/assets/8f76de4c-4ae8-44d1-9be1-720fc3c7e0ec ">
2024-08-19 16:23:47 -04:00
Don Isaac
4436774e8c
fix(website): sanitize JSON in section docs ( #4989 )
2024-08-19 16:23:31 -04:00
Boshen
64ace42566
feat(transform_conformance): show transform conformance errors ( #4976 )
2024-08-19 09:01:34 +00:00
Boshen
4fdf26dac8
refactor(transform_conformance): add driver ( #4969 )
2024-08-19 07:27:39 +00:00
Boshen
3f6014a042
chore(semantic): add PostTransformChecker ( #4967 )
2024-08-19 05:38:27 +00:00
DonIsaac
96422b6489
refactor(ast): make AstBuilder non-exhaustive ( #4925 )
2024-08-19 05:32:30 +00:00
Boshen
6800e694e3
feat(oxc): add Compiler and CompilerInterface ( #4954 )
...
This PR adds a full compiler pipeline to the `oxc` crate, to stop us
from implementing the same pipeline over and over again.
relates #4455
2024-08-19 10:20:05 +08:00
renovate[bot]
ef057e7545
chore(deps): update npm packages ( #4958 )
...
[](https://renovatebot.com )
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [axios](https://axios-http.com )
([source](https://togithub.com/axios/axios )) | [`1.7.3` ->
`1.7.4`](https://renovatebot.com/diffs/npm/axios/1.7.3/1.7.4 ) |
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
| [pnpm](https://pnpm.io ) ([source](https://togithub.com/pnpm/pnpm )) |
[`9.7.0` -> `9.7.1`](https://renovatebot.com/diffs/npm/pnpm/9.7.0/9.7.1 )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
---
### Release Notes
<details>
<summary>axios/axios (axios)</summary>
###
[`v1.7.4`](https://togithub.com/axios/axios/blob/HEAD/CHANGELOG.md#174-2024-08-13 )
[Compare
Source](https://togithub.com/axios/axios/compare/v1.7.3...v1.7.4 )
##### Bug Fixes
- **sec:** CVE-2024-39338
([#​6539](https://togithub.com/axios/axios/issues/6539 ))
([#​6543](https://togithub.com/axios/axios/issues/6543 ))
([6b6b605](6b6b605eaf ))
- **sec:** disregard protocol-relative URL to remediate SSRF
([#​6539](https://togithub.com/axios/axios/issues/6539 ))
([07a661a](07a661a2a6 ))
##### Contributors to this release
- <img
src="https://avatars.githubusercontent.com/u/31389480?v=4&s=18 "
alt="avatar" width="18"/> [Lev
Pachmanov](https://togithub.com/levpachmanov "+47/-11 (#​6543 )")
- <img
src="https://avatars.githubusercontent.com/u/41283691?v=4&s=18 "
alt="avatar" width="18"/> [Đỗ Trọng Hải](https://togithub.com/hainenber
"+49/-4 (#​6539 )")
</details>
<details>
<summary>pnpm/pnpm (pnpm)</summary>
### [`v9.7.1`](https://togithub.com/pnpm/pnpm/compare/v9.7.0...v9.7.1 )
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v9.7.0...v9.7.1 )
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 10am on monday" in timezone
Asia/Shanghai, Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/ ). View the
[repository job log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4yNi4xIiwidXBkYXRlZEluVmVyIjoiMzguMjYuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-18 23:07:20 +00:00
Boshen
c7a86865f3
fix(coverage): handle transformer errors
2024-08-18 22:19:58 +08:00
Boshen
873d502993
refactor(coverage): use the oxc crate
2024-08-17 22:40:08 +08:00
Boshen
bea76f0f24
fix(coverage): fix babel cases
2024-08-17 11:22:00 +08:00