Commit Graph

530 Commits

Author SHA1 Message Date
Donny/강동윤
e7358e0f81 refactor(es): Use into for AST construction (#9197)
**Description:**

This PR changes the AST node construction code to use `.into()` or `::from()` to make changing the boxed-ness of the AST node easier. I used `ast-grep` to make large changes across codebase.
2024-07-12 13:13:20 +09:00
Donny/강동윤
7b3e5b3f61 pers(es/ast): Introduce IdentName (#9185)
**Description:**

The identifier in the `prop` field of `MemberExpr` does not need information like `optional` or `ctxt`.
2024-07-12 13:13:20 +09:00
Donny/강동윤
b2491e5461 refactor(common): Drop SyntaxContext from AST nodes (#9175) 2024-07-12 13:13:20 +09:00
Levi
2aef14d34d
feat(es/utils): Support for arrays using cast_to_number (#9212)
**Description:**

This PR allows `ArrayLit`s to be converted to numbers in the
`cast_to_number` function. This allows expressions using arrays to be
converted to numbers. See some example expressions below that were
previously not able to be computed, but are now able to due to this
change.

```js
+[] // 0
+[[]] // 0
+[1] // 1
+[undefined] // 0
+[null] // 0
+[[1]] // 1
+[,] // 0
+[,,] // NaN
```

Regarding the implementation, arrays are converted to strings, and the
string is then parsed as a number. So arrays like `[]` and `[undefined]`
return `""` which then return `0` when parsed as a string. This is also
why arrays with more than one element can't be parsed because e.g. `[1,
2]` returns `"1,2"`. This procedure follows the ECMAScript
specification.
https://262.ecma-international.org/6.0/#sec-tonumber
https://262.ecma-international.org/6.0/#sec-toprimitive
2024-07-12 12:15:12 +09:00
SWC Bot
b4dbe0be06 chore: Bump crates
Some checks are pending
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_plugin_runner os:windows-latest runner:windows-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_plugin_testing os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_plugin_testing os:windows-latest runner:windows-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_timer os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_trace_macro os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_transform_common os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_typescript os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_visit os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_visit_macros os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_x_optimizer os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_xml os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_xml_ast os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_xml_codegen os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_xml_codegen_macros os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_xml_parser os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:swc_xml_visit os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:testing os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (map[crate:testing_macros os:ubuntu-latest runner:ubuntu-latest]) (push) Waiting to run
CI / Test node bindings - ${{ matrix.os }} (macos-latest) (push) Waiting to run
CI / Test node bindings - ${{ matrix.os }} (windows-latest) (push) Waiting to run
CI / Test with @swc/cli (push) Waiting to run
CI / Miri (better_scoped_tls) (push) Waiting to run
CI / Miri (string_enum) (push) Waiting to run
CI / Miri (swc) (push) Waiting to run
CI / Miri (swc_bundler) (push) Waiting to run
CI / Miri (swc_ecma_codegen) (push) Waiting to run
CI / Miri (swc_ecma_minifier) (push) Waiting to run
CI / Done (push) Blocked by required conditions
Benchmark / Bench everything (push) Waiting to run
Bot / Start (push) Waiting to run
2024-07-11 16:17:45 +00:00
Donny/강동윤
92879b14fe
perf(es/visit): Introduce standard_only_* macros (#9207)
**Description:**

These macros are optimization hint on release builds.

**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/9204
2024-07-11 16:16:05 +00:00
SWC Bot
ce78baa17d chore: Bump crates 2024-07-05 09:20:32 +00:00
Donny/강동윤
648830a9a9
perf(es): Reduce allocations for dynamic stacks (#9133) 2024-07-05 09:18:38 +00:00
SWC Bot
f8a33e3800 chore: Bump crates 2024-07-02 01:17:55 +00:00
Levi
570c47a9ac
feat(es/minifier): Handle more indexing expression (#8750)
**Related issue:**

 - Closes #8747
2024-07-02 10:15:45 +09:00
강동윤 (Donny)
47a79485d9 chore: Revert bump crates
This reverts commit 97b92aa6ff.
2024-06-29 18:28:54 +09:00
SWC Bot
97b92aa6ff chore: Bump crates 2024-06-29 09:26:51 +00:00
강동윤 (Donny)
56f03675bc chore: Publish crates for EsSyntax fix
Some checks are pending
CI / Test with @swc/cli (push) Waiting to run
CI / Miri (better_scoped_tls) (push) Waiting to run
CI / Miri (string_enum) (push) Waiting to run
CI / Miri (swc) (push) Waiting to run
CI / Miri (swc_bundler) (push) Waiting to run
CI / Miri (swc_ecma_codegen) (push) Waiting to run
CI / Miri (swc_ecma_minifier) (push) Waiting to run
CI / Done (push) Blocked by required conditions
Benchmark / List crates (push) Waiting to run
Benchmark / Bench ${{ matrix.crate }} (push) Blocked by required conditions
Benchmark / Process result (push) Blocked by required conditions
Bot / Start (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:cargo build --manifest-path ../../bindings/swc_cli/Cargo.toml --release --features plugin --target x86_64-apple-darwin cp ../../bindings/target/x86_64-apple-darwin/release/swc . chmod +x ./swc… (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:export CARGO_PROFILE_RELEASE_LTO=false yarn build --target x86_64-pc-windows-msvc cargo build --manifest-path ../../bindings/swc_cli/Cargo.toml --release --features plugin --target x86_64-pc-w… (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:export DISABLE_PLUGIN_E2E_TESTS=true export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=256 export CARGO_PROFILE_RELEASE_LTO=false cargo build --manifest-path ../../bindings/swc_cli/Cargo.toml --relea… (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:export DISABLE_PLUGIN_E2E_TESTS=true export CARGO_PROFILE_RELEASE_LTO=false cargo build --manifest-path ../../bindings/swc_cli/Cargo.toml --release --target i686-pc-windows-msvc cp ../../bindi… (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:export DISABLE_PLUGIN_E2E_TESTS=true yarn napi build --bin swc --release --target armv7-unknown-linux-gnueabihf --manifest-path ../../bindings/swc_cli/Cargo.toml -x --target-dir ../release -o … (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:export JEMALLOC_SYS_WITH_LG_PAGE=16 && rustup toolchain install $(cat ../../rust-toolchain) && rustup target add aarch64-unknown-linux-musl && RUSTFLAGS='-C target-feature=+crt-static -C link-… (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:set -e && export CARGO_PROFILE_RELEASE_LTO=false && RUSTFLAGS='-C target-feature=+sse2' cargo build --manifest-path ../../bindings/swc_cli/Cargo.toml --release --features plugin --target x86_6… (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:set -e && export JEMALLOC_SYS_WITH_LG_PAGE=16 && rustup target add aarch64-unknown-linux-gnu && RUSTFLAGS='' cargo build --manifest-path ../../bindings/swc_cli/Cargo.toml --release --features … (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:set -e && unset CC_x86_64_unknown_linux_gnu && unset CC && RUSTFLAGS='-C target-feature=+sse2' cargo build --manifest-path ../../bindings/swc_cli/Cargo.toml --release --features plugin --targe… (push) Waiting to run
Publish (core) / stable - ${{ matrix.settings.target }} - node@20 (map[build:sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*; export CC=$(xcrun -f clang); export CXX=$(xcrun -f clang++); SYSROOT=$(xcrun --sdk macosx --show-sdk-path); export CFLAGS="-isysroot $SY… (push) Waiting to run
Publish (core) / Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }} (18, map[host:macos-latest target:x86_64-apple-darwin]) (push) Blocked by required conditions
Publish (core) / Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }} (18, map[host:windows-latest target:x86_64-pc-windows-msvc]) (push) Blocked by required conditions
Publish (core) / Test bindings on Linux-x64-gnu - node@${{ matrix.node }} (18) (push) Blocked by required conditions
Publish (core) / Test bindings on x86_64-unknown-linux-musl - node@${{ matrix.node }} (18) (push) Blocked by required conditions
Publish (core) / Test bindings on armv7-unknown-linux-gnueabihf - node@${{ matrix.node }} (18) (push) Blocked by required conditions
Publish (core) / npm (push) Blocked by required conditions
Publish (core) / Build - wasm for node.js (push) Waiting to run
Publish (core) / Build - wasm for web (push) Waiting to run
2024-06-25 12:40:41 +09:00
SWC Bot
10eab94d81 chore: Bump crates 2024-06-14 14:47:30 +00:00
Donny/강동윤
e856478060
refactor(es/utils): Refine some APIs (#9049)
**Description:**

This PR
 - moves some APIs into `swc_ecma_ast`.
 - removes needless types.

**BREAKING CHANGE:**

 - `swc_ecma_utils::IdentExt::private` => `swc_ecma_ast::Ident::into_private`.
 - `swc_ecma_utils::IdentExt::prefix` => `swc_ecma_ast::Ident::with_prefix`.
 - `swc_ecma_utils::undefined` => `swc_ecma_ast::Expr::undefined`.
2024-06-14 21:53:16 +09:00
Donny/강동윤
e5601989a1
perf(es/lints): Avoid needless allocations in no-dupe-args (#9041)
**Description:**

I introduced a zero-allocation variant for `swc_ecma_utils::DestructuringFinder` that does not allocate anything.
2024-06-14 14:39:15 +09:00
SWC Bot
931f752d54 chore: Bump crates 2024-06-14 05:24:10 +00:00
SWC Bot
1496ed1814 chore: Bump crates 2024-06-02 10:34:24 +00:00
Donny/강동윤
9f8e24a76c
fix(es/minifier): Fix evaluation of -0 as a string (#9011)
**Related issue:**

 - Closes #9010

---------

Co-authored-by: magic-akari <akari.ccino@gmail.com>
2024-06-02 19:32:44 +09:00
SWC Bot
ea14fc8e59 chore: Bump crates 2024-05-22 02:29:02 +00:00
Donny/강동윤
545ec51b51
fix(es/minifier): Add type check to & and | (#8965)
**Related issue:**

 - Closes #8964
2024-05-22 11:27:00 +09:00
강동윤 (Donny)
7ac3b0a7dc chore: Bump crates 2024-04-29 09:56:27 +09:00
magic-akari
cc1432a12f
chore: Apply cargo autoinherit (#8902) 2024-04-29 00:54:45 +00:00
SWC Bot
f9106a50c0 chore: Bump crates 2024-04-24 00:37:30 +00:00
SWC Bot
4410d62317 chore: Bump crates 2024-04-17 05:44:33 +00:00
Donny/강동윤
f9459a8adf
build(cargo): Update rustc to nightly-2024-04-16 (#8870) 2024-04-17 05:42:11 +00:00
Donny/강동윤
a1c5415b3b
feat(es/transforms): Allocate stacks dynamically (#8867)
**Description:**

 - This PR introduces an in-tree testing system for Deno.
 - This PR adds `stacker` cargo-feature to `swc_ecma_utils`.

**Related issue:**

 - #1627
 - Closes #8840
2024-04-16 19:43:58 +09:00
SWC Bot
0af201043a chore: Bump crates 2024-04-16 02:24:47 +00:00
Donny/강동윤
ca9c76b46f
build(cargo): Update rustc to nightly-2024-04-03 (#8821) 2024-04-16 02:20:47 +00:00
SWC Bot
fcc82a5a5b chore: Bump crates 2024-04-12 08:34:38 +00:00
Austaras
a7a32c4b6c
fix(es/utils): Preserve optional chain effect (#8850)
**Related issue:**

 - Closes #8844
2024-04-12 08:33:01 +00:00
SWC Bot
2a7a6e9522 chore: Bump crates 2024-04-04 23:19:09 +00:00
David Sherret
974f5c759c
fix(es/transforms): Fix capacity overflow with decorators (#8815)
**Description:**

Fixes an incorrect capacity (found while investigating a segfault).

More details: https://github.com/denoland/deno/pull/23187#issuecomment-2036266885
2024-04-05 08:17:28 +09:00
SWC Bot
d1eb7b8136 chore: Bump crates 2024-04-04 06:12:30 +00:00
Donny/강동윤
207582ff25
chore(deps): Update dependencies (#8810) 2024-04-04 15:07:49 +09:00
SWC Bot
44209386ca chore: Bump crates 2024-03-22 07:03:51 +00:00
pshu
f62097ca01
fix(es/utils): Mark ident of default fn/class as binding (#8764) 2024-03-22 07:02:08 +00:00
SWC Bot
df977a0bbd chore: Bump crates 2024-03-20 02:37:04 +00:00
Donny/강동윤
9f98a7026d
fix(es/minifier): Abort eval on valueOf or toString (#8763)
**Related issue:**

 - Closes #8704
 - Closes #8705
2024-03-20 02:35:24 +00:00
SWC Bot
82d1b8e49a chore: Bump crates 2024-03-17 13:04:54 +00:00
SWC Bot
31ecd2a6c1 chore: Bump crates 2024-03-14 01:32:37 +00:00
SWC Bot
e46dd5a208 chore: Bump crates 2024-03-12 06:00:28 +00:00
Donny/강동윤
aa0154d2d8
fix(es/minifier): Fix evaluation of array literals with void 0 (#8733)
**Related issue:**

 - Closes #8706
2024-03-12 14:58:52 +09:00
SWC Bot
90aaabaf15 chore: Bump crates 2024-03-06 04:41:56 +00:00
SWC Bot
98aa9824d5 chore: Bump crates 2024-03-04 10:08:47 +00:00
SWC Bot
7a5c7df195 chore: Bump crates 2024-03-04 07:48:09 +00:00
SWC Bot
5dc40d347b chore: Bump crates 2024-03-02 10:24:52 +00:00
SWC Bot
7c5113b6a9 chore: Bump crates 2024-02-22 02:56:23 +00:00
SWC Bot
359ae7a16a chore: Bump crates 2024-02-21 10:22:20 +00:00
SWC Bot
5cab610db1 chore: Bump crates 2024-02-20 01:27:25 +00:00