Donny/강동윤
aa83584634
refactor(es/ast): Reimplement optional chaining ( #7441 )
...
**Related issue:**
- Closes #7003 .
- Closes #7156 .
2023-06-12 06:47:40 +00:00
Austaras
7f9f0b8bce
fix(es/minifier): Infect mutation when assigning a property ( #7503 )
2023-06-08 04:13:42 +00:00
David Sherret
064bcf4854
fix(es/codegen): Remove extra spaces in AssignPatProp
and KeyValuePatProp
( #7488 )
...
Co-authored-by: Donny/강동윤 <kdy1997.dev@gmail.com>
2023-06-07 05:08:35 +00:00
Austaras
62075faeaa
feat(es/minifier): Remove unused labels ( #7478 )
2023-06-07 04:23:40 +00:00
Donny/강동윤
e506635f74
fix(es/minifier): Don't generate generator arrows ( #7466 )
...
**Related issue:**
- Closes #7457 .
2023-05-31 01:57:13 +00:00
Austaras
0cd2b61b05
feat(es/minifier): Inline for loop variables ( #7445 )
2023-05-25 03:59:02 +00:00
Austaras
40d2bf7ec3
fix(es/minifier): Prevent inlining vars assigned outside current function scope ( #7414 )
...
**Related issue:**
- Closes #7412 .
2023-05-19 13:35:50 +09:00
Austaras
5dbbbea2ef
fix(es/minifier): Mark all function params as potential property mutation ( #7409 )
...
**Description:**
This issue is more severe than I originally thought. It raises not in
array indexing, but in function calls and property mutation. We should
treat all function arguments as potentially be property mutated,
otherwise following example
```js
class A {
a = 1
toString() {
return this.a
}
}
const a = new A()
function foo(x) {
x.a++
}
const b = a + 1
foo(a)
console.log(b)
```
would be error(It should log 2, but logs 3 after compress).
As the result, massive regressions is unavoidable, since some of these
optimizations may indeed cause error. Part of them can be mitigated with
following optimization -- allow inline of ident even if its original
value is mutated. Consider
```js
export function foo(x) {
const y = x
x.a = 1
y.b = 2
}
```
If x is a primitive value, all mutations to its properties are ignored;
if x is a object, then y refers to the same object no matter what
mutation is performed.
And there's still room for more, currently following code
```js
export function foo(x) {
const y = Math.floor(x);
g(y);
}
```
But I'd rather do it in a separate PR.
**Related issue:**
- Closes #7402 .
2023-05-18 01:19:17 +00:00
Donny/강동윤
f9cdd741c2
test(es/minifier): Enable more terser tests ( #7396 )
2023-05-16 03:21:08 +00:00
Donny/강동윤
041b491466
feat(es/parser): Implement explicit resource management ( #7322 )
...
**Description:**
- Add `UsingDecl`.
- Add `UsingDecl` to `Decl`.
- Rename `VarDeclOrPat` to `ForHead`.
- Add `UsingDecl` to `ForHead`.
- Implement parser for using declarations.
**Related issue:**
- #7316 .
2023-05-10 04:16:44 +00:00
Donny/강동윤
1dced17998
fix(es/minifier): Fix remapping of vars upon inlining ( #7362 )
...
**Related issue:**
- Closes #7331 .
2023-05-10 03:31:15 +00:00
Donny/강동윤
246300ae25
feat(es/minifier): Drop expressions using sequential inliner ( #6936 )
2023-04-29 22:19:00 +09:00
Donny/강동윤
0aab90c005
fix(es/minifier): Fix a inliner bug related to Script
( #7288 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7287 .
2023-04-19 07:22:48 +00:00
Donny/강동윤
4c06a56e52
fix(es/minifier): Use UTF16 length for str.length
( #7275 )
...
**Related issue:**
- Closes #7274 .
2023-04-15 14:50:52 +00:00
Austaras
93a264c9a4
fix(es/renamer): Ensure that param and function body are in same scope ( #7271 )
...
**Description:**
The problem arises in L235 of swc_ecma_transforms_base/src/rename/mod.rs
```rs
unit!(visit_mut_fn_decl, FnDecl, true);
```
which calls `get_map` and evals to
```rs
node.visit_children_with(&mut v);
```
with `FnDecl` and `Analyzer` in L132. However, in `Analyzer`, a visit to raw function was not overloaded, so function arguments and function body are considered different scopes.
**Related issue:**
- Closes #7261 .
2023-04-15 04:19:52 +00:00
Donny/강동윤
a44fea1ec8
fix(es/minifier): Fix handling of optional chaining when hoist_props
is enabled ( #7246 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7228 .
2023-04-13 03:23:29 +00:00
Donny/강동윤
559d1202bc
feat(es/minifier): Support PURE
comment of seq exprs ( #7245 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7241 .
2023-04-11 04:48:11 +00:00
Donny/강동윤
73bc29eeb0
fix(es/minifier): Don't remove used var decl ( #7200 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7194 .
2023-04-05 04:35:37 +00:00
magic-akari
3ca954b9f9
fix(es/helpers): Use snake_case for helpers ( #7147 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7144 .
- Closes https://github.com/swc-project/swc/issues/7118 .
2023-03-31 15:15:21 +09:00
Donny/강동윤
0259a7465f
build(cargo): Update rustc
to nightly-2023-03-20
( #7170 )
...
**Description:**
This PR also updates `rkyv` to `=0.7.40`.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6807 .
2023-03-30 08:06:02 +00:00
Donny/강동윤
12546c853a
build(cargo): Revert rustc upgrade ( #7162 )
...
**Description:**
The `rkyv` bug is not fixed.
2023-03-29 17:48:45 +09:00
Donny/강동윤
e445502072
build(cargo): Update rustc
to nightly-2023-03-28
( #7154 )
...
**Description:**
This PR also updates `rkyv` to `=0.7.40`.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6807 .
2023-03-29 06:24:19 +00:00
Donny/강동윤
6d9763e8c0
fix(es/renamer): Don't use symbols used by declarations if eval
exists ( #7116 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6971 .
- Closes https://github.com/swc-project/swc/issues/7094 .
2023-03-22 06:31:43 +00:00
Donny/강동윤
610e1bb581
fix(es/minifier): Don't inline into arrow heads ( #7099 )
...
**Related issue:**
- https://github.com/vercel/next.js/issues/47005
2023-03-22 02:24:13 +00:00
Donny/강동윤
6a570a334c
fix(es/ast): Fix EqIgnoreSpan
impl of Number
( #7112 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7111 .
2023-03-21 08:46:22 +00:00
Anders Kaseorg
493a4f7042
fix(es/minifier): Remove wrong optimization of new RegExp(…)
( #7091 )
2023-03-17 03:22:02 +00:00
Donny/강동윤
86295ba8f2
fix(es/minifier): Preserve delete
of unresolved variables ( #7072 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7045 .
2023-03-15 02:31:08 +00:00
Donny/강동윤
963c460613
refactor: Fix lints using clippy from nightly-2023-03-13
( #6920 )
2023-03-14 04:56:21 +00:00
Donny/강동윤
a9fe1d2d22
perf(es/ast): Shrink size of Expr
( #7041 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/7019 .
2023-03-09 13:34:11 +00:00
Austaras
1318afe2b4
fix(es/minifier): Bailout regex optimization on invalid flags ( #7020 )
2023-03-07 11:05:04 +09:00
magic-akari
bb2486c459
fix(es/minifier): Don't create invalid property names ( #7010 )
2023-03-04 17:58:49 +09:00
Austaras
06cbb9002d
feat(es/minifier): Optimize calls to Boolean
/Number
/String
/Symbol
( #7006 )
2023-03-04 04:14:14 +00:00
Austaras
cfeb088c37
fix(es/minifier): Don't skip expressions with side effects from seq inliner ( #7007 )
2023-03-04 12:32:15 +09:00
magic-akari
a27ffd2242
feat(es/minifier): Drop unused import bindings ( #6967 )
2023-02-21 06:22:25 +00:00
magic-akari
1dfadb8790
fix(es/minifier): Fix optimization of expressions in numeric context ( #6965 )
2023-02-20 05:28:28 +00:00
magic-akari
9382bda786
fix(es/minifier): Fix toFixed
, toPrecision
, toExponential
and toString
of Number ( #6960 )
2023-02-19 23:18:14 +09:00
Donny/강동윤
725d3fb645
fix(es/minifier): Don't skip shorthand properties from sequential inliner ( #6918 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6914 .
2023-02-09 03:07:31 +00:00
Donny/강동윤
951dafbc1a
fix(es/minifier): Don't break ternary with assignment in test ( #6906 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6903 .
2023-02-08 02:10:44 +00:00
Donny/강동윤
432dca647b
fix(es/minifier): Respect span hygiene from expr simplifier ( #6899 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6896 .
2023-02-07 05:14:19 +00:00
Austaras
c0e72ef64a
fix(es/minifier): Track reassign in parent scope ( #6865 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6864 .
2023-01-28 17:19:19 +00:00
Donny/강동윤
d1687d8e01
feat(es/minifier): Improve compatibility of arrows
with terser
( #6862 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6123 .
2023-01-27 14:36:12 +09:00
Austaras
55225cb994
refactor(es/minifier): Merge cond_init
with reassigned
( #6850 )
...
**Description:**
And optimize the following situation
```js
export function genElement(el, state) {
if ('slot' === el.tag) return el1 = el, genChildren(el1);
if (el.component) {
var el1
return 999;
}
}
```
which rarely happens in hand written JS, but is often generated by swc merge variable pass.
2023-01-26 10:17:33 +09:00
Donny/강동윤
21e14787c5
fix(es/minifier): Don't inline into await
from sequential inliner ( #6839 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6837 .
2023-01-20 08:50:51 +00:00
Donny/강동윤
df702614e1
fix(es/codegen): Fix codegen of string literals with \x000
( #6838 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6836 .
2023-01-20 08:08:58 +00:00
Donny/강동윤
ebce18b221
fix(es/renamer): Handle rest params correctly ( #6821 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6819 .
2023-01-16 06:57:16 +00:00
Donny/강동윤
8f683e3f77
feat(es/minifier): Remove noop spreads ( #6803 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6788 .
2023-01-13 06:55:04 +00:00
Donny/강동윤
a299fd0418
test(es/minifier): Add a test for an invalid issue ( #6802 )
...
**Related issue:**
- https://github.com/vercel/next.js/discussions/30237#discussioncomment-4674405
2023-01-13 05:39:22 +00:00
Donny/강동윤
631dd7872b
feat(es/renamer): Support safari10
from the name mangler ( #6801 )
2023-01-13 05:00:13 +00:00
Donny/강동윤
c14540905f
fix(es/transform): Apply hygiene
and resolver
if minify is specified ( #6793 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/6791 .
2023-01-12 07:29:28 +00:00
Donny/강동윤
06770cff04
fix(es/minifier): Make AST compressor respect toplevel
( #6775 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/4386 .
2023-01-11 07:04:20 +00:00