Boshen
bb646f2bf9
feat(tasks/minsize): show target size for easier comparison ( #4201 )
2024-07-11 12:38:45 +00:00
IWANABETHATGUY
1c117eb20d
fix: avoid print extra semicolon after accessor property ( #4199 )
...
## Before
```js
export default class Foo { @x @y accessor #aDef = 1 }
```
**output**
```bash
Original:
export default class Foo { @x @y accessor #aDef = 1 }
Printed:
export default class Foo {
accessor #aDef=1;;
}
```
2024-07-11 20:16:02 +08:00
Boshen
e3e663bae4
feat(mangler): initialize crate and integrate into minifier ( #4197 )
2024-07-11 10:35:13 +00:00
Dunqing
bbe5dede07
refactor(semantic): set current_scope_id to scope_id in enter_scope ( #4193 )
...
close : #4170
2024-07-11 08:45:35 +00:00
Dunqing
7f1adddaf0
refactor(semantic): correct scope in CatchClause ( #4192 )
...
close : #4186
CatchClause has two scopes. The first one is `CatchClause`, which will add a `CatchParameter` to it. The second one is `Block`, which will add binding that declares in the current block scope.
The spec has a syntax error about `CatchParameter`
- It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the LexicallyDeclaredNames of Block.
2024-07-11 08:45:30 +00:00
Boshen
8c54a2f1ed
fix(tasks/ast_codegen): run cargo fmt synchronously ( #4181 )
...
relates #4152
This is my wild guess, because it works in my other script 143685deb1/xtask/src/main.rs (L21)
2024-07-11 02:59:30 +00:00
Boshen
ca0b4fa08a
refactor(tasks): clean up test files and remove libs.txt ( #4172 )
2024-07-10 17:38:06 +00:00
DonIsaac
4a656c3a18
fix(lexer): incorrect lexing of large hex/octal/binary literals ( #4072 )
...
Closes #3347 . Implementation follows the approach described by @overlookmotel [here](https://github.com/oxc-project/oxc/issues/3347#issuecomment-2119004288 ).
2024-07-10 16:39:10 +00:00
rzvxa
67fe75ec6c
feat(ast, ast_codegen): pass the scope_id to the enter_scope event. ( #4168 )
2024-07-10 15:19:23 +00:00
Boshen
28eeee0f71
fix(parser): fix asi error diagnostic pointing at invalid text causing crash ( #4163 )
2024-07-10 14:45:10 +00:00
rzvxa
3ba7cfed1f
feat(ast_codegen): add #[visit(enter_before)] hint. ( #4147 )
...
Closes #4142
I can split it into 2 PRs but it seems pointless. Let me know if you guys disagree with me.
2024-07-10 14:02:29 +00:00
Luca Bruno
5731e3957f
refactor(ast)!: store span details inside comment struct ( #4132 )
...
This tweaks `Comment` definition in order to internally store the start
and end position of its span.
Closes: https://github.com/oxc-project/oxc/issues/4069
2024-07-09 23:23:43 +08:00
rzvxa
0b433108be
feat(ast_codegen): add cli arguments to use with oxc_ast_codegen executable. ( #4117 )
...
```
Usage: oxc_ast_codegen [--dry-run] [--no-fmt] [--schema=ARG]
Available options:
--dry-run Runs all generators but won't write anything down.
--no-fmt Don't run cargo fmt at the end
--schema=ARG Path of output `schema.json`.
-h, --help Prints help information
```
2024-07-09 03:42:11 +00:00
rzvxa
6db630fab3
refactor(ast_codegen): cleanup usages of the generated outputs. ( #4116 )
2024-07-09 03:42:05 +00:00
DonIsaac
2f53bdf72d
feat(semantic): check for abstract ClassElements in non-abstract classes ( #4127 )
...
feat(semantic): check for abstract ClassElements in non-abstract classes
chore: update coverage snapshots
2024-07-09 03:35:32 +00:00
DonIsaac
3a0f2aa7ef
feat(parser): check for illegal modifiers in modules and namespaces ( #4126 )
2024-07-09 02:54:06 +00:00
rzvxa
91c792a2ce
feat(ast_codegen): add ast builder generator. ( #4098 )
2024-07-09 00:47:23 +00:00
Don Isaac
c4ee9f8ec6
feat(semantic): check for abstract initializations and implementations ( #4125 )
2024-07-08 17:30:16 -04:00
Don Isaac
0f026089d1
fix(semantic): bind TSImportEqualsDeclarations ( #4100 )
...
Closes #4091
2024-07-08 14:03:47 +08:00
Don Isaac
4413e2d298
fix(transformer): missing initializer for readonly consructor properties ( #4103 )
2024-07-08 12:45:50 +08:00
DonIsaac
e386b62331
feat(semantic): check for invalid type import assignments ( #4097 )
...
Adds checks to `TSImportEqualsDeclaration` for invalid use of `import type` modifier.
```ts
import { Foo } from './foo'
namespace Bar {
export class Baz {}
}
import type A = Foo.Baz; // not allowed
import type B = Bar.Baz; // not allowed
import type C = require('./c'); // allowed
```
2024-07-08 03:14:22 +00:00
renovate[bot]
57d821b93c
chore(deps): update npm packages ( #4092 )
...
[](https://renovatebot.com )
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pnpm](https://pnpm.io ) ([source](https://togithub.com/pnpm/pnpm )) |
[`9.4.0` -> `9.5.0`](https://renovatebot.com/diffs/npm/pnpm/9.4.0/9.5.0 )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
| [wasm-pack](https://togithub.com/rustwasm/wasm-pack ) | [`^0.12.1` ->
`^0.13.0`](https://renovatebot.com/diffs/npm/wasm-pack/0.12.1/0.13.0 ) |
[](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>pnpm/pnpm (pnpm)</summary>
###
[`v9.5.0`](https://togithub.com/pnpm/pnpm/compare/v9.5.0-beta.3...v9.5.0 )
[Compare Source](https://togithub.com/pnpm/pnpm/compare/v9.4.0...v9.5.0 )
</details>
<details>
<summary>rustwasm/wasm-pack (wasm-pack)</summary>
###
[`v0.13.0`](https://togithub.com/rustwasm/wasm-pack/blob/HEAD/CHANGELOG.md#-0130 )
[Compare
Source](https://togithub.com/rustwasm/wasm-pack/compare/v0.12.1...v0.13.0 )
- ### ✨ Features
- **Add option to skip optimization with wasm-opt - [sisou],
[pull/1321]**
This feature introduces the `--no-opt` option to wasm-pack, providing a
significant improvement in build efficiency for projects requiring
multiple wasm-pack executions.
[pull/1321]: https://togithub.com/rustwasm/wasm-pack/pull/1321
[sisou]: https://togithub.com/sisou
- **Add support geckodriver for linux-aarch64 - [EstebanBorai],
[pull/1371]**
Introduces support to download Geckodriver in Linux aarch64.
[pull/1371]: https://togithub.com/rustwasm/wasm-pack/pull/1371
[EstebanBorai]: https://togithub.com/EstebanBorai
- **Add wasm-opt linux aarch64 condition - [dkristia], [issue/1392],
[pull/1393]**
A linux aarch64 build for wasm-opt exists in the newest binaryen
versions.
[issue/1392]: https://togithub.com/rustwasm/wasm-pack/issues/1392
[pull/1393]: https://togithub.com/rustwasm/wasm-pack/pull/1393
[dkristia]: https://togithub.com/dkristia
- ### 🤕 Fixes
- **Fix passing relative paths to cargo - [dfaust], [issue/704],
[issue/1156], [issue/1252], [pull/1331]**
When building a crate located in a sub-directory, relative paths, passed
as extra options to cargo (like `--target-dir`), are now handled
correctly.
[issue/704]: https://togithub.com/rustwasm/wasm-pack/issues/704
[issue/1156]: https://togithub.com/rustwasm/wasm-pack/issues/1156
[issue/1252]: https://togithub.com/rustwasm/wasm-pack/issues/1252
[pull/1331]: https://togithub.com/rustwasm/wasm-pack/pull/1331
[dfaust]: https://togithub.com/dfaust
- **Rewrite wasm_target to use target-libdir - [daidoji], [issue/1342],
[pull/1343]**
Rewritten wasm_target to use target libdir from the rustc tool rather
than looking through sysroot. This is to accomodate non-rustup
installations.
[issue/1342]: https://togithub.com/rustwasm/wasm-pack/issues/1342
[pull/1343]: https://togithub.com/rustwasm/wasm-pack/pull/1343
[daidoji]: https://togithub.com/daidoji
- **Declare ES module in package.json - [gthb], [issue/1039],
[pull/1061]**
In bundler mode, generate package.json with "type": "module" and use the
"main" attribute instead of the "module" attribute.
This change makes the built ES module palatable to Node.js (when run
with --experimental-vm-modules --experimental-wasm-modules),
while it remains also palatable to webpack as illustrated in
[webpack/webpack#14313 ](https://togithub.com/webpack/webpack/issues/14313 )
(where the pkg subfolder is generated with wasm-pack built with this
change).
This resolves the headache of using a wasm-pack-built package in a
library that one needs to both run directly in Node and include in a
webpack build.
[issue/1039]: https://togithub.com/rustwasm/wasm-pack/issues/1039
[pull/1061]: https://togithub.com/rustwasm/wasm-pack/pull/1061
[gthb]: https://togithub.com/gthb
- **Use new chromdriver endpoint and fix CI - [Myriad-Dreamin],
[kade-robertson], [issue/1315], [issue/1390], [pull/1325], [pull/1391]**
[issue/1315]: https://togithub.com/rustwasm/wasm-pack/issues/1315
[issue/1390]: https://togithub.com/rustwasm/wasm-pack/issues/1390
[pull/1325]: https://togithub.com/rustwasm/wasm-pack/pull/1325
[pull/1391]: https://togithub.com/rustwasm/wasm-pack/pull/1391
[Myriad-Dreamin]: https://togithub.com/Myriad-Dreamin
[kade-robertson]: https://togithub.com/kade-robertson
- **Add mingw support to npm package - [nathaniel-daniel], [issue/1354],
[issue/1359], [pull/1363]**
Fixes the NPM package's platform detection for mingw.
[issue/1354]: https://togithub.com/rustwasm/wasm-pack/issues/1354
[issue/1359]: https://togithub.com/rustwasm/wasm-pack/issues/1359
[pull/1363]: https://togithub.com/rustwasm/wasm-pack/pull/1363
[nathaniel-daniel]: https://togithub.com/nathaniel-daniel
- **pkg-dir option for pack and publish commands - [danielronnkvist],
[issue/1369], [pull/1370]**
To be able to use these commands when the output directory option to the
build command isn't the default pkg.
[issue/1369]: https://togithub.com/rustwasm/wasm-pack/issues/1369
[pull/1370]: https://togithub.com/rustwasm/wasm-pack/pull/1370
[danielronnkvist]: https://togithub.com/danielronnkvist
- **Optimize out-dir display - [ahaoboy], [issue/1395], [pull/1396]**
Optimize out-dir display.
from:
`[INFO]: 📦 Your wasm pkg is ready to publish at
/root/code/fib-wasm/fib-rs/../fib-wasm/wasm.`
to:
`[INFO]: 📦 Your wasm pkg is ready to publish at
/root/code/fib-wasm/fib-wasm/wasm.`
[issue/1395]: https://togithub.com/rustwasm/wasm-pack/issues/1395
[pull/1396]: https://togithub.com/rustwasm/wasm-pack/pull/1396
[ahaoboy]: https://togithub.com/ahaoboy
- ### 🛠️ Maintenance
- **Fix error and warnings in install script - [lucashorward],
[issue/1159], [issue/1217], [issue/1283], [pull/1320]**
[issue/1159]: https://togithub.com/rustwasm/wasm-pack/issues/1159
[issue/1217]: https://togithub.com/rustwasm/wasm-pack/issues/1217
[issue/1283]: https://togithub.com/rustwasm/wasm-pack/issues/1283
[pull/1320]: https://togithub.com/rustwasm/wasm-pack/pull/1320
[lucashorward]: https://togithub.com/lucashorward
- **Bump follow-redirects from 1.14.9 to 1.15.6 in /npm - [dependabot],
[pull/1375]**
[pull/1375]: https://togithub.com/rustwasm/wasm-pack/pull/1375
- **Bump rustls-webpki from 0.100.1 to 0.100.2 - [dependabot],
[pull/1323]**
[pull/1341]: https://togithub.com/rustwasm/wasm-pack/pull/1341
- **Bump rustix from 0.37.20 to 0.37.25 - [dependabot], [pull/1341]**
[pull/1323]: https://togithub.com/rustwasm/wasm-pack/pull/1323
[dependabot]: https://togithub.com/apps/dependabot
- **Bump rustls from 0.21.9 to 0.21.11 - [dependabot], [pull/1385]**
[pull/1385]: https://togithub.com/rustwasm/wasm-pack/pull/1385
[dependabot]: https://togithub.com/apps/dependabot
- **Bump tar from 6.1.11 to 6.2.1 in /npm - [dependabot], [pull/1379]**
[pull/1379]: https://togithub.com/rustwasm/wasm-pack/pull/1379
[dependabot]: https://togithub.com/apps/dependabot
- ### 📖 Documentation
- **Fix typo in README - [Lionelf329], \[pull/1368]**
[pull/1268]: https://togithub.com/rustwasm/wasm-pack/pull/1368
[Lionelf329]: https://togithub.com/Lionelf329
- **Add a description of build --target deno - [puxiao], [pull/1344]**
[pull/1344]: https://togithub.com/rustwasm/wasm-pack/pull/1344
[puxiao]: https://togithub.com/puxiao
- **Document deno in build target - [sigmaSd], [pull/1348]**
[pull/1348]: https://togithub.com/rustwasm/wasm-pack/pull/1348
[sigmaSd]: https://togithub.com/sigmaSd
- **Fix local navigation backing one step too far in docs - [SamuSoft],
[pull/1387]**
[pull/1387]: https://togithub.com/rustwasm/wasm-pack/pull/1387
[SamuSoft]: https://togithub.com/SamuSoft
- **Add --target web to quick start build command - [josephrocca],
[pull/1367]**
[pull/1367]: https://togithub.com/rustwasm/wasm-pack/pull/1367
[josephrocca]: https://togithub.com/josephrocca
</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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/ ). View
repository job log
[here](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjEuOSIsInVwZGF0ZWRJblZlciI6IjM3LjQyMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-07 18:33:47 +00:00
Boshen
6e5447e5d5
chore(coverage): add test for huge binary expression and nested if statements ( #4084 )
...
relates https://github.com/oxc-project/backlog/issues/58
2024-07-08 00:15:26 +08:00
Boshen
0ba375899c
chore(tasks/benchmark): add isolated_declarations bench
2024-07-07 19:22:49 +08:00
Dunqing
54b3b6c0da
chore(benchmark): add isolated declarations ( #4078 )
2024-07-07 17:14:48 +08:00
mysteryven
4414774d7d
chore(tasks/rulegen): generate options for fix cases ( #4076 )
...
Our fixer support rule option, and we need to generate `options` for them.
328445b4ca/crates/oxc_linter/src/tester.rs (L238)
cc @eryue0220
2024-07-07 03:01:55 +00:00
rzvxa
aa585d31e1
fix(ast_codegen, ast): visit ExpressionArrayElement as Expression. ( #4061 )
...
hotfix for #4060
I just added an edge case, We can come back to it later on and make it a
standard in our codegen.
The diff is big because it causes the code to reorder, The edge case
generated code doesn't follow the order in which they are defined in the
source of truth(eg `js.rs`)
2024-07-06 00:29:36 +08:00
Boshen
aaac2d8775
fix(codegen): preserve parentheses from AST instead calculating from operator precedence ( #4055 )
...
…operator precedence
Calculating from operator precedence is currently unsafe and will result
incorrect semantics.
2024-07-05 14:01:17 +08:00
Boshen
09cc760475
chore(tasks/benchmark): turn on jsdoc parsing in semantic benchmark
2024-07-04 00:00:52 +08:00
Boshen
243c9f35b0
refactor(parser): use function instead of trait to parse list with rest element ( #4028 )
...
closes #3887
2024-07-02 13:43:14 +00:00
rzvxa
1854a52bd7
feat(ast_codegen): introduce the #[span] hint. ( #4012 )
...
closes #3904
2024-07-02 10:18:58 +00:00
rzvxa
71e9286fa6
improvement(ast_codegen): use visit_as attribute to create aliased AstKinds. ( #4011 )
2024-07-02 10:18:56 +00:00
rzvxa
352c0b4103
pref(ast): inline visit walks with small bodies. ( #4009 )
...
~~Attempt to improve the performance of visitors, It is mostly for experiments. I'm not sure how much performance is there to gain back.~~
- [x] inline plural visits (eg: visit_statements)
- [x] inline enums when there are 5 or fewer match cases
- [x] inline structs when there are 5 or less fields
- [x] inline `Visit::alloc`
2024-07-02 10:18:55 +00:00
rzvxa
b51f75baf8
refactor(ast_codegen): no longer outputs discard variable for empty visitors. ( #4008 )
2024-07-02 10:18:53 +00:00
rzvxa
272df6ee90
feat(ast_codegen): support for generating VisitMut. ( #4006 )
2024-07-02 10:18:49 +00:00
rzvxa
7538af12d8
feat(ast_codegen): add visit generator ( #3954 )
...
~~The generated code is only here for the sake of my own comparison (instead of manually keeping a backup of the old generated file). I would clean this up as soon as it is ready, submit some parts of it as the down stack, and stack the actual generated code on top of this. So please don't let the huge diff distract you, It won't have many conflicts since almost all of these are the generated visit code, which is completely contained to its own module(other than some minor renaming refactors).~~
The order of function definitions is a bit different, I've used a depth-first search, We can switch to a breadth-first one to align functions more closely to the original.
2024-07-02 10:18:45 +00:00
Boshen
1dacb1fc5b
refactor(parser): use function instead of trait to parse delimited lists ( #4014 )
...
relates #3887
The rest of the list parsing trait implementations involves ... parsing
`rest`, which I'll refactor in another PR.
2024-07-02 14:47:56 +08:00
Dunqing
bdee156c5d
fix(transformer/typescript): declare class incorrectly preserved as runtime class ( #3997 )
...
fix : #3993
2024-07-01 16:04:40 +00:00
Dunqing
a50ce3d299
fix(transformer/typescript): missing initializer for class constructor arguments with private and protected modifier ( #3996 )
...
close : #3992
2024-07-01 15:10:32 +00:00
Boshen
23038ad8f8
fix(codegen): print TSFunctionType inside TSTypeAssertion ( #3999 )
2024-07-01 14:44:35 +00:00
Boshen
1852ea4fd2
chore: clean up unused deps
2024-06-30 19:04:44 +08:00
Boshen
5845057bff
refactor(transformer): pass in symbols and scopes ( #3978 )
...
This PR adds a new method `build_with_symbols_and_scopes` to make semantic building optional, there may be prior steps that has the semantic data already built.
2024-06-30 06:33:48 +00:00
DonIsaac
63f36daae0
feat(parser): parse modifiers with parse_modifiers (take 2) ( #3977 )
...
Same as #3948 , with fixes for bugs found by @Boshen.
2024-06-30 03:46:34 +00:00
Boshen
14bc31ee74
Revert "feat(parser): parse modifiers with parse_modifiers ( #3948 )"
...
This reverts commit 7b38bde073 .
2024-06-29 14:16:26 +08:00
rzvxa
71c07c59d7
improvement(ast_codegen): better output formatting. ( #3932 )
...
We use prettyplease for formatting our generated code, Which has a lot of advantages over rustfmt, But sometimes it conflicts with our cargo fmt config,
Since it isn't configurable I just added a `cargo fmt` step after the generation process to prevent conflicts.
We might be able to not rely on prettyplease at all, But We have to test that one after we have most of our generated code, rustfmt usually bails on nested calls and macros so it might not work as our only solution. In contrast to that prettyplease is used in both bindgen and cargo-expand and is created for this exact reason(formatting generated code).
2024-06-29 05:37:15 +00:00
DonIsaac
7b38bde073
feat(parser): parse modifiers with parse_modifiers ( #3948 )
...
Closes #3929
2024-06-29 05:29:47 +00:00
Dunqing
51e54f902c
fix(codegen): should print TSModuleDeclarationKind instead of just module ( #3957 )
2024-06-29 05:24:36 +00:00
underfin
9e8709f06e
fix(sourcemap): should add tokens for unordered span ( #3941 )
...
close: https://github.com/oxc-project/oxc/issues/3843
2024-06-27 20:24:22 +08:00
Boshen
275349a9fe
fix(parser): parse function type parameter name accessor ( #3926 )
...
fixes #3910
2024-06-26 13:34:24 +00:00
Boshen
3db2553dc2
refactor(parser): improve parsing of TypeScript type arguments ( #3923 )
2024-06-26 07:16:18 +00:00