Donny/강동윤
1c48a8c8f4
fix(es/minifier): Consider side effects while removing an object spread ( #4788 )
2022-05-26 07:37:34 +00:00
brightwu
f28d9c143b
fix(es/resolver): Fix more edge cases related to catch
and var
( #4773 )
2022-05-24 09:24:42 +00:00
Donny/강동윤
e4dee1ed33
fix(es/minifier): Consider parameters while detecting pure calls ( #4748 )
2022-05-23 13:04:11 +00:00
Donny/강동윤
49b3c2715c
refactor(es/minifier): Make rust-analyzer
fast, really ( #4746 )
2022-05-23 16:16:05 +09:00
Donny/강동윤
47e6cc5190
refactor(es/minifier): Make rust-analyzer
faster ( #4744 )
...
- We now use a separate crate for testing the minifier. This makes IDE much faster.
2022-05-23 15:53:01 +09:00
Donny/강동윤
a51816a577
feat(es/minifier): Handle prefix update expressions with sequential inliner ( #4741 )
2022-05-23 04:29:31 +00:00
Donny/강동윤
9e42382091
feat(es/minifier): Implement pure_funcs
( #4710 )
2022-05-22 12:07:28 +00:00
Donny/강동윤
6f565fbb3a
test(es/minifier): Categorize more tests ( #4709 )
2022-05-19 04:33:11 +00:00
Donny/강동윤
274648ec26
feat(es/minifier): Improve if_return
( #4694 )
2022-05-18 08:39:57 +00:00
Donny/강동윤
96cec97b2c
fix(es/minifier): Don't inline a function if we need referential equality ( #4665 )
2022-05-15 09:37:34 +00:00
Donny/강동윤
9c190f0a8e
fix(es/minifier): Fix optimization of spread ( #4639 )
2022-05-12 09:20:44 +00:00
Donny/강동윤
56a227ad9d
fix(es/minifier): Don't create direct eval
( #4634 )
...
- `expr_simplifier`: Preserve `this`.
- `ExprReplacer`: Inject `0` after inlining eval.
- `MultiReplacer`: Inject `0` after inlining eval.
2022-05-12 15:14:18 +09:00
Donny/강동윤
6a97c7bef8
fix(es/utils): Fix wrong apis ( #4604 )
...
# API Changes
## `swc_ecma_utils`
### Renames
- `find_ids` => `find_pat_ids`
- `prepend` => `prepend_stmt`
- `as_bool` => `cast_to_bool`
- `as_number` => `as_pure_number`
- `as_string` => `cast_to_string`
- (`as_pure_bool`, `cast_to_number` is not renamed)
- `UsageFinder` => `IdentUsageFinder`.
- `IdentFinder` => `IdentRefFinder`.
## Changes
- Re-export of `HANDLER` from `swc_common::errors` is removed. Use `swc_common::error::HANDLER` instead.
- Re-export of `Id` from `swc_ecma_ast` is removed. Use `swc_ecma_ast::Id` instead.
- `ExprCtx` is used for apis related to `Expr`.
- `preserve_effects` is now a method of `ExprCtx`. It was a top-level function.
- `extract_side_effects_to` is now a method of `ExprCtx`. It was a top-level function.
- `IdentUsageFinder` (previously `UsageFinder`) now takes `Id` instead of `Ident`.
- `IdentRefFinder` (previously `IdentFinder`) now takes `Id` instead of `Ident`.
- `ExprExt::is_ident_ref_to` is removed.
- `Expr::is_global_ref_to` is added.
- `:🆔 :id` is removed. Use `Ident::to_id()` instead.
2022-05-11 04:36:22 +00:00
Donny/강동윤
097ff1ddc1
fix(es/minifier): Fix with
and NaN
( #4596 )
2022-05-10 03:21:43 +00:00
Donny/강동윤
3521ce09e7
fix(es/minifier): Consider more aliases in sequences pass ( #4583 )
2022-05-09 16:36:40 +00:00
Donny/강동윤
e43689b7d5
fix(es/minifier): Preserve more identifiers if eval
or with
exists ( #4580 )
2022-05-09 07:17:33 +00:00
Donny/강동윤
bf5ee018b3
test(es/minifier): Fix test system ( #4571 )
2022-05-08 08:27:14 +00:00
Donny/강동윤
af368eead2
fix(es/minifier): Improve sequential inliner ( #4570 )
2022-05-08 06:12:42 +00:00
Donny/강동윤
920d9a7678
fix(es/minifier): Fix handling of template literals ( #4563 )
2022-05-08 01:56:38 +09:00
Donny/강동윤
c5b4ef4377
feat(es/minifier): Drop vars using sequential inliner ( #4547 )
2022-05-07 08:19:56 +00:00
Donny/강동윤
b0efd00f38
test(es/minifier): Ignore difference of parens ( #4546 )
2022-05-07 06:08:23 +00:00
Donny/강동윤
7a584d755a
feat(es/minifier): Consider cost of functions for inlining ( #4470 )
2022-04-29 05:58:59 +00:00
Donny/강동윤
effc85df57
fix(es/minifier): Disable some passes for hoist_props
( #4468 )
2022-04-28 08:32:03 +00:00
Donny/강동윤
8118569045
fix(es/minifier): Remove wrong logic for optimizing delete
s ( #4429 )
2022-04-25 12:32:02 +00:00
Donny/강동윤
aa19b65f9c
fix(es/minifier): Don't drop arguments to an IIFE without body ( #4419 )
2022-04-24 15:27:51 +00:00
Donny/강동윤
9b34ecfd2e
test(es/minifier): Categorize tests ( #4410 )
2022-04-24 12:11:02 +00:00
Donny/강동윤
375cc5975a
fix(es/minifier): Disable conditionals
by default ( #4391 )
2022-04-22 10:44:53 +09:00
Donny/강동윤
87859e373d
fix(es/minifier): Preserve more labels ( #4380 )
2022-04-21 07:23:50 +00:00
Donny/강동윤
922299a490
fix(es/minifier): Don't drop labels if required ( #4370 )
2022-04-20 13:34:21 +00:00
Donny/강동윤
e60ae2a486
feat(es/minifier): Implement all template literal evaluation rules ( #4360 )
...
- We now handle nested template literals.
- We now drop expressions in template literals if it's ignored.
2022-04-18 02:43:55 +00:00
Donny/강동윤
2e095face5
feat(es/minifier): Improve evaluation of template literals ( #4359 )
2022-04-18 08:43:54 +09:00
Donny/강동윤
e13b8625f2
feat(es/minifier): Implement more evaluation rules ( #4356 )
...
- We now handle `array.join` in parallel optimizer.
- We now handle `[].join` of template literals.
- We now optimize a template literal as a string addition, in unsafe mode.
2022-04-17 22:16:21 +00:00
Donny/강동윤
f92242dcb1
feat(es/minifier): Improve sequential inliner ( #4335 )
...
- We now skip more expressions.
2022-04-15 08:25:31 +00:00
Donny/강동윤
8886a4b572
fix(es/minifier): Respect dead_code
( #4328 )
2022-04-14 06:00:43 +00:00
Donny/강동윤
2002554fa2
refactor(es/minifier): Clean up logging ( #4322 )
2022-04-13 23:23:07 +09:00
Donny/강동윤
7e8f613272
feat(es/minifier): Enable conditionals
by default ( #4301 )
2022-04-12 02:12:10 +00:00
Donny/강동윤
434dcf4af7
refactor(es/minifier): Merge code for multi-replacer ( #4269 )
2022-04-07 08:08:42 +00:00
Donny/강동윤
1f5cac4d41
feat(es/minifier): Implement more rules for hoist_props
( #4262 )
2022-04-06 11:01:45 +00:00
Donny/강동윤
ab1f440103
feat(es/minifier): Exclude local bindings from aliases ( #4261 )
...
- We now exclude bindings created by the initializer while analyzing aliases.
2022-04-06 06:28:49 +00:00
Donny/강동윤
4701da576f
feat(es/minifier): Improve inliner and evaluator ( #4216 )
2022-04-05 06:25:23 +00:00
Donny/강동윤
10718547e0
fix(es/minifier): Fix evaluation of IIFEs ( #4207 )
...
- We now remap parameters using a new syntax context. This is required because we may copy functions, and it can result in duplicated variables with respect to the span hygiene.
- We now visit the sequence expression generated by inlining. This is to improve performance in some cases.
- We now remove variables from variable statements if it's identical to a parameter declared in the function.
- IIFE evaluation is now aware of `this` being different for member expressions.
- We now have more logic for detecting simple functions.
2022-03-31 09:11:54 +00:00
Donny/강동윤
11fe5fabd8
feat(es/minifier): Evaluate more iifes ( #4200 )
2022-03-30 23:35:30 +00:00
Donny/강동윤
6d3ea17aa6
feat(es/minifier): Optimize switches more correctly ( #4180 )
2022-03-29 04:25:15 +00:00
Donny/강동윤
a6f6799811
feat(es/minifier): Evaluate trivial expressions ( #4179 )
2022-03-29 01:46:09 +00:00
Donny/강동윤
6f25e5774b
feat(es/minifier): Implement more rules for dropping unused assignemnts ( #4171 )
2022-03-28 09:14:16 +00:00
Donny/강동윤
b37dafbd27
feat(es/minifier): Implement rules for optimizing loops ( #4157 )
2022-03-25 12:08:14 +00:00
Donny/강동윤
ee5c48c935
feat(es/minifier): Implement more rules for optimizing for-if-break ( #4140 )
2022-03-24 00:49:32 +00:00
Donny/강동윤
1d3763d96c
feat(es/minifier): Implement some unsafe evaluation rules ( #4133 )
2022-03-23 22:56:13 +00:00
Donny/강동윤
c6f8742669
feat(es/minifier): Implement more evaluation rules ( #4030 )
2022-03-21 20:07:59 +09:00
Donny/강동윤
be09ea6991
feat(es/minifier): Drop noop calls ( #4019 )
2022-03-15 16:23:32 +09:00