Commit Graph

1876 Commits

Author SHA1 Message Date
Fnll
2b361e679a
fix(es/minifier): Fix compress pow NaN (#9210)
**Description:**

`f64::powf` for `NaN` returns 1 instead of `NaN`, see
https://github.com/rust-lang/rust/issues/60468. We should handle that.

**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/9193

---------

Co-authored-by: magic-akari <akari.ccino@gmail.com>
2024-07-12 21:06:57 +09:00
SWC Bot
fd94562f02 chore: Bump crates 2024-07-12 04:14:55 +00:00
Donny/강동윤
0960b23c04 refactor(es): Use Into and From for AST construction (#9201)
**Description:**

This PR will help modifying boxedness of AST nodes.
2024-07-12 13:13:20 +09:00
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
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
91cef80d38 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 14:31:34 +00:00
CPunisher
f81fa6e063
fix(es/minifier): Fix case matching (#9208)
**Description:**

Caused by https://github.com/swc-project/swc/pull/7112
Since swc minifier evaluates expressions in a separate pass, I make a temporary patch here.

**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/9176
2024-07-11 14:29:51 +00:00
Donny/강동윤
e7b9c552a7
chore(ci): Configure codspeed (#9189) 2024-07-10 15:20:27 +09:00
Donny/강동윤
f90574d045
test(es/minfiier): Improve comment testing (#9164)
**Description:**

This is required for https://github.com/swc-project/swc/pull/8907
2024-07-06 22:53:57 +09:00
SWC Bot
ce454176ba chore: Bump crates 2024-07-05 07:13:12 +00:00
CPunisher
1a739b7928
fix(es/minifier): Fix undefined judgement (#9146)
**Description:**

by symbol name -> by whether it points to global undefined or not.

The updated test results all involve variables with `undefined` ident (although they are indeed uninitialized).


**Related issue:**

 - Closes: https://github.com/swc-project/swc/issues/8567
2024-07-05 07:05:43 +00:00
Donny/강동윤
45f671d8d8
fix(es/renamer): Fix renaming of default-exported declarations (#9135)
**Related issue:**

 - Closes #9129
2024-07-04 21:08:45 +09: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
Donny/강동윤
5520b236dd
refactor(es/parser): Rename EsConfig and TsConfig (#9094)
**Description:**

`EsConfig` and `TsConfig` sound like a general configuration for the whole language, while actually it's only about parsing.

To avoid a breaking change, I created type aliases that will work without changing the code, while warning the users.

**Related issue:**

 - Closes #9089.
2024-06-22 01:56:37 +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
SWC Bot
931f752d54 chore: Bump crates 2024-06-14 05:24:10 +00:00
Donny/강동윤
675916ccbd
perf(es/minifier): Do not visit var init multiple times (#9039)
**Description:**

I mistakenly introduced a performance regression with https://github.com/swc-project/swc/pull/9032. It makes the minifier visit the initializer of variables multiple times - once while normal visiting and once in `hoist_props_of_vars`. This PR fixes it.
2024-06-12 12:24:28 +09:00
SWC Bot
6400140999 chore: Bump crates 2024-06-11 11:22:41 +00:00
Donny/강동윤
cb16994a8d
fix(es/minifier): Visit RHS while hoisting properties (#9032)
**Description:**

Handles 

```js
var FRUITS = { MANGO: "mango" }, getMangoLabel = (label) => label[FRUITS.MANGO];
```

while hoisting properties. In the code above, the initializer of the second variable declarator should be visited after hoisting the first variable declarator. Otherwise `FRUITS.MANGO` cannot be handled.


**Related issue:**

 - Closes #9030
2024-06-11 20:20:39 +09:00
SWC Bot
b31927cb66 chore: Bump crates 2024-06-11 06:01:25 +00:00
Donny/강동윤
6669343b4a
fix(es/minifier): Fix typescript enum detection (#9031)
**Description:**

This reverts commit cc8c1550dd because it caused a regression in the next.js canary.

 - Canary version: `15.0.0-canary.12`


**Related issue:**

 - Reverts #8986
2024-06-11 14:59:42 +09:00
Donny/강동윤
54ac992781
feat(es/renamer): Workaround a bug of Safari (#9029)
**Related issue:**

 - Closes #9015
2024-06-10 11:29:24 +09:00
SWC Bot
f1ca6a7906 chore: Bump crates 2024-06-07 07:18:53 +00:00
Donny/강동윤
cada50b017
feat(es/minifier): Support module: "unknown" (#9026)
**Related issue:**

 - Closes #8571
2024-06-07 07:17:05 +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
Donny/강동윤
2879a4d42b
fix(es/minifier): Do not index a string with a surrogate pair (#9013)
**Related issue:**

 - Closes #9008
2024-06-02 03:35:43 +00:00
SWC Bot
04c183933a chore: Bump crates 2024-06-02 03:12:32 +00:00
Donny/강동윤
8a29577cc5
fix(es/minifier): Fix comparison of -0.0 (#9012)
**Related issue:**

 - Closes #9007
2024-06-02 03:10:55 +00:00
Donny/강동윤
0d9ecf39c1
fix(es/resolver): Fix hoisting of const and let (#8987)
**Description:**

 - Repro: https://github.com/kdy1/repro-next-66237

**Related issue:**

 - https://github.com/vercel/next.js/issues/66237
2024-06-01 23:18:34 +09:00
SWC Bot
629d59cb18 chore: Bump crates 2024-05-31 03:15:29 +00:00
Donny/강동윤
e764ff6f64
fix(es/minifier): Preserve unused special properties (#9005)
**Related issue:**

 - https://github.com/vercel/next.js/issues/66378
2024-05-31 03:13:43 +00:00
SWC Bot
b534d03591 chore: Bump crates 2024-05-30 14:02:56 +00:00
Donny/강동윤
cc8c1550dd
feat(es/minifier): Detect TypeScript enum initialization pattern (#8986)
**Description:**

We can optimize
```js
var Foo;
Foo || Foo = {};
```

This code looks strange, but 
```ts
enum Foo {
    a = 1,
    b = 2,
}
```

transpiles to

```js
var Foo;
(function(Foo) {
    Foo[Foo["a"] = 1] = "a";
    Foo[Foo["b"] = 2] = "b";
})(Foo || (Foo = {}));

```

and after minification it becomes

```js
var Foo, Foo1;
(Foo1 = Foo || (Foo = {}))[Foo1.a = 1] = "a", Foo1[Foo1.b = 2] = "b";

```
2024-05-30 14:01:07 +00:00
Donny/강동윤
c0dc5e44ab
test(es/minifier): Update the passing terser test list (#8984) 2024-05-27 22:45:44 +09:00
Donny/강동윤
a753c8d191
fix(es/minifier): Mark usage in TaggedTpl as ref (#8975)
**Related issue:**

 - Closes #8974
2024-05-24 05:11:00 +00:00
Donny/강동윤
2a43df4984
fix(es/minifier): Fix comparison of -0.0 and 0 (#8973)
**Related issue:**

 - Closes #8972
2024-05-24 09:16:42 +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/강동윤
02729f24d8
fix(es/minifier): Abort property hoisting on eval (#8957)
**Description:**

 - Repro: https://github.com/kdy1/repro-next-46887-2


**Related issue:**

- https://github.com/vercel/next.js/issues/46887#issuecomment-2113264586
2024-05-16 11:35:45 +09:00
SWC Bot
f681924023 chore: Bump crates 2024-05-16 02:11:50 +00:00
Donny/강동윤
255485e373
fix(es/minifier): Abort array property inliner if the array is used as a ref (#8956)
**Description:**

Repro:
 - https://github.com/kdy1/repro-next-46887

**Related issue:**

 - https://github.com/vercel/next.js/issues/46887
2024-05-16 11:09:41 +09:00
Donny/강동윤
3046d71daa
fix(es/minifier): Abort seq inliner on ** (#8947)
**Related issue:**

 - Closes #8942
2024-05-13 01:11:46 +00:00