Donny/강동윤
73cab638a1
fix(es/minifier): Preserve unresolved references ( #3780 )
...
swc_ecma_minifier:
- `pure`: Add an optional list of bindings.
- `pure`: Drop identifier only if we have the complete list of bindings.
- `pure`: Allow using `GLOBALS`.
- `pure`: Drop some pure member expressions.
- Move identifier dropping logic from the stateful optimizer to the pure optimizer.
- `pure`: Drop more references to global declarations.
2022-02-28 16:31:13 +00:00
Donny/강동윤
cfc036381a
fix(es/minifier): Fix inlining logic ( #3776 )
...
swc_ecma_minifier:
- Make `inline_vars_in_node` use `MultiReplacer`.
2022-02-28 12:07:12 +00:00
Donny/강동윤
e7f7f69db4
fix(es/minifier): Disable some operations for asm.js codes ( #3572 )
2022-02-28 07:40:04 +00:00
Donny/강동윤
da2c77d9af
perf(es/minifier): Parallelize join_vars
( #3655 )
2022-02-21 05:34:32 +00:00
Donny/강동윤
d2c94416a8
feat(es/minifier): Treat !0
as a literal while inlining ( #3631 )
2022-02-19 17:33:36 +09:00
Donny/강동윤
ac1d4058f2
fix(es/minifier): Fix analyzer ( #3557 )
...
swc_ecma_utils:
- `collect_decls`: Support paramters of arrow expressions.
swc_ecma_minifier:
- `analyzer`: Fix `has_property_mutation`.
2022-02-14 15:47:16 +09:00
Donny/강동윤
73e9185bba
test(es/minifier): Add snapshot testing for the analyzer ( #3529 )
2022-02-11 18:33:08 +09:00
Donny/강동윤
292add7d26
fix(es/minifier): Make sequences
less aggressive ( #3480 )
...
swc_ecma_minifier:
- `sequences`: Abort on RHS contains the left id.
2022-02-08 19:10:22 +09:00
Donny/강동윤
5812c3c10f
fix(es/minifier): Fix codemirror
( #3462 )
...
swc_ecma_minifier:
- Mark for in/of loops as executed multiple times.
- Check captured identifiers while invoking IIFE.
2022-02-07 11:11:53 +09:00
Donny/강동윤
68e9017376
fix(es/minifier): Improve minifier ( #3350 )
...
swc_ecma_transforms_optimization:
- `expr_simplifier`: Track more changes.
swc_ecma_minifier:
- Analyze after applying the pure optimizer.
- Preserve access to a variable not in scope.
- `compress`: Remove string literal if it was not a directive.
- `pure/collapse_vars`: Merge vars declared in the first statement into one with initializers if `collapse_vars` and `join_vars` are enabled.
- `unused`: Use `usage_count` instead of `ref_count`.
- `unused`: Fix dropping rule for member expressions.
- `unused`: Fix dropping rule for declarations.
- `hoist_props`: Preserve exported items.
2022-01-27 15:36:22 +09:00
Donny/강동윤
6921ffbbda
fix(es/minifier): Respect block scoping while negating if statements ( #3344 )
...
swc_ecma_minifier:
- Don't negate a if statement if it has `let`/`const` binding.
2022-01-24 00:19:33 +09:00
Donny/강동윤
d52a1f3899
fix(es/minifier): Don't inline a var if the initializer is reassigned ( #3333 )
...
swc_ecma_minifier:
- Consider reassignment to initializer while inlining a variable.
2022-01-21 14:01:20 +09:00
Donny/강동윤
4f23d651d1
fix(es/minifier): Consider capturing while inlining ( #3322 )
...
swc_ecma_minifier:
- Don't inline functions if it captures the environment.
2022-01-21 10:24:41 +09:00
Donny/강동윤
57204e39cd
fix(es/minifier): Don't inline functions used as arguments ( #3320 )
...
swc_ecma_minifier:
- Preserve a variable initialized with a function expression if it's used as an argument.
2022-01-20 16:06:23 +09:00
Donny/강동윤
b4d21bf077
fix(es/minifier): Prevent infinite loop due to negation ( #3310 )
...
swc_ecma_minifier:
- Don't mark as modified while negating.
2022-01-19 23:17:17 +09:00
Donny/강동윤
1aa494b1c0
fix(es/minifier): Fix logic for checking arguments
( #3313 )
...
swc_ecma_minifier:
- Don't mark `arguments` in nested scope as a inline blocker.
2022-01-19 17:39:24 +09:00
Donny/강동윤
8e796cdc0a
fix(es/minifier): Don't emit invalid code ( #3302 )
...
swc_ecma_minifier:
- Add lots of debug assertions for invalid codes.
- Remove all invalid AST nodes eagerly.
- `pure`: Normalize `PatOrExpr`.
- `analyzer`: Handle `PatOrExpr` correctly.
2022-01-18 20:52:21 +09:00
Donny/강동윤
210ecf83bb
feat(es/minifier): Drop more expressions from parallel optimizer ( #3303 )
...
swc_ecma_minifier:
- `pure`: Implement more rule for dropping useless expressions.
2022-01-18 16:45:47 +09:00
Donny/강동윤
18a11d7c8f
fix(es/minifier): Remove more side-effect-free expressions. ( #3301 )
...
swc_ecam_minifier:
- `pure`: Drop more binary expressions.
- `pure`: Drop more literals.
2022-01-18 12:51:31 +09:00
Donny/강동윤
fa5c063144
fix(es/minifier): Inline into interpolations in tagged template literals ( #3287 )
...
swc_ecma_minifier:
- Inline into tagged template literals. (Closes #2923 )
2022-01-17 15:17:01 +09:00
Donny/강동윤
b55ae4b312
fix(es/minifier): Fix analysis of unary expressions ( #3286 )
...
swc_ecma_minifier:
- Mark update as usage and assignment. (Closes #3265 )
2022-01-17 14:28:35 +09:00
magic-akari
f4b3cb714a
fix(es/resolver): Treat a switch statement as a block scope ( #3275 )
2022-01-15 17:20:17 +09:00
Donny/강동윤
efd86715c9
fix(es/minifier): Preserve side effects in correct position ( #3263 )
...
swc_ecma_minifier:
- Add `fake_block` mark.
- Inject statements for side effects from `visit_mut_stmt` instead of `visit_mut_stmt_likes`. (Closes #2926 )
2022-01-14 16:36:48 +09:00
Donny/강동윤
74fd353053
fix(es/minifier): Fix bugs ( #3238 )
...
swc_ecma_minifier:
- `collapse_vars`: Respect `mutated`. (Closes #2679 )
- Add a test for https://github.com/vercel/next.js/issues/31084 .
2022-01-12 16:57:54 +09:00
Austaras
f58b50bea7
refactor(es/ast): Change types of member-like expressions ( #3178 )
...
swc_ecma_ast:
- Split `MemberExpr` into `MemberExpr` and `SuperPropExpr`.
- Use `Box<Expr>` for `MemberExpr.obj`.
- Use ad-hoc type for `MemberExpr.prop`.
- Use ad-hoc type for `SuperPropExpr.prop`.
- Use `Callee` instead of `ExprOrSpread` for `CallExpr`.
- Simplify types for meta property expressions.
2022-01-10 13:54:42 +00:00
Donny/강동윤
057fca4196
chore(es/minifier): Add scripts to extract tests automatically ( #3212 )
2022-01-10 16:59:21 +09:00
Austaras
cdb46cfb91
fix(es/hygiene): Visit computed properties in usage analyzer ( #3217 )
2022-01-09 15:42:19 +09:00
Donny/강동윤
0105939426
fix(es/minifier): Drop unreachable statements eagerly ( #3204 )
...
swc_ecma_minifier:
- `pure`: Drop unreachable statements. (Closes #3173 )
2022-01-06 21:25:06 +09:00
Donny/강동윤
69b5f799f3
fix(es/minifier): Disable inlining of expressions from collapse_vars
( #3200 )
...
swc_ecma_minifier:
- `collapse_vars`: Disable for member expressions. (Closes #2614 )
- `sequences`: Respect `inline_prevented`.
2022-01-06 20:49:10 +09:00
Donny/강동윤
1c1c9f0eae
fix(es/minifier): Fix bugs ( #2955 )
...
swc_ecma_minifier:
- Improve the script for extracting inputs from next.js app.
- Ensure the name is removed on inlining.
- Respect `inline_prevented`.
2022-01-05 05:12:52 +09:00
YuChao Liang
db51ce4461
fix(es/minifier): Fix comparison of objects, numbers and strings ( #3172 )
2022-01-03 11:31:49 +00:00
magic-akari
52961804d1
feat(es/codegen): Make the output for empty objects and empty statements pretty ( #3171 )
2022-01-03 05:54:58 +09:00
Donny/강동윤
a81661c74a
perf(es/hygiene): Fix performance bug ( #3090 )
...
swc_ecma_transforms_base:
- `hygiene`: Skip checking a symbol if we are sure that it will be discarded.
swc_ecma_laoder:
- Optimize `NodeModulesResolver` by trying `.js` first.
2021-12-21 23:52:13 +09:00
David Sherret
beb2c73c2c
fix(swc/hygiene): Prefer not renaming top level variables ( #2940 )
...
swc_ecma_transforms_base:
- `hygiene`: Use concept of depth to prevent renaming top level nodes.
2021-12-04 01:55:27 +09:00
David Sherret
4d993c26b6
fix(es/hygiene): Reduce renaming ( #2938 )
...
swc_ecma_transforms_base:
- `hygiene`: Treat class methods and constructors as a scope.
2021-12-02 07:28:09 +00:00
黄伟
c5768d7672
feat(es/minifier): Improve drop_console
( #2830 )
...
swc_ecma_minifier:
- Implement more rules for `drop_console`. (Closes #2807 )
2021-11-22 17:54:36 +09:00
Donny/강동윤
fa342a0067
fix(es/minifier): Fix bugs ( #2779 )
...
swc_ecma_minifier:
- Don't optimize `1 / t == -1 / 0` as `!1`.
- Don't optimize `e === -1 / 0` as false.
- Don't inline string literals in arguments, if it's used multiple time. (https://github.com/vercel/next.js/issues/31291 )
2021-11-20 17:06:18 +09:00
Donny/강동윤
f2c67b8caf
fix(es/minifier): Don't inline string literals if it's used multiple time ( #2748 )
...
swc_ecma_minifier:
- Don't inline strings because it's simple.
- Inline short strings.
2021-11-15 14:03:03 +09:00
Donny/강동윤
df635c9e6d
fix(es/minifier): Fix minifier ( #2711 )
...
swc_ecma_minifier:
- Respect `inline_prevented`.
- Mark the LHS of an assignment pattern property as a pattern. (https://github.com/vercel/next.js/issues/30498 )
2021-11-10 20:56:50 +09:00
Donny/강동윤
2b2f6955f2
refactor: Flatten ecmascript
( #2708 )
2021-11-10 19:00:54 +09:00