aboutsummaryrefslogtreecommitdiff
path: root/lib/ast.js
AgeCommit message (Collapse)Author
2020-07-31improve diagnostics upon AST validation failure (#4033)Alex Lam S.L
2020-07-31validate against multiple parents on `AST_Node` (#4032)Alex Lam S.L
- fix related issues in `global_defs`, `ie8` & `reduce_vars`
2020-05-10improve `inline` of `/*@__PURE__*/` calls (#3865)Alex Lam S.L
2020-05-10improve AST validation (#3864)Alex Lam S.L
2020-05-09implement AST validation (#3863)Alex Lam S.L
2020-05-06remove unused returns from tree walk (#3850)kzc
2020-05-05improve `TreeWalker` performance (#3848)Alex Lam S.L
2020-05-05update links to repository after rename (#3847)Alex Lam S.L
2020-02-15minor cleanup (#3723)Alex Lam S.L
2020-02-06export missing API for AST manipulation (#3707)Alex Lam S.L
2019-12-31enhance `booleans` (#3661)Alex Lam S.L
2019-12-31fix corner case in `booleans` (#3659)Alex Lam S.L
fixes #3658
2019-12-28enhance `evaluate` (#3649)Alex Lam S.L
2019-10-12fix boolean context detection (#3466)Alex Lam S.L
fixes #3465
2019-10-10detect boolean context across IIFEs (#3461)Alex Lam S.L
2019-10-10remove extraneous property (#3459)Alex Lam S.L
fixes #3455
2019-05-13enhance `keep_fargs` (#3409)Alex Lam S.L
2019-05-04make `enclose` & `wrap` work with `sourceMap` (#3396)Alex Lam S.L
fixes #3313
2019-04-30unify logging functionality (#3392)Alex Lam S.L
fixes #3253 fixes #3254
2019-04-24fix corner case in `assignments` (#3376)Alex Lam S.L
fixes #3375
2018-07-26fix corner case in `ie8` & `rename` (#3223)Alex Lam S.L
2018-07-01fix corner case in `unused`alexlamsl
2018-06-06general clean-ups (#3175)Alex Lam S.L
2018-06-01re-introduce `enclose` (#3163)Jiavan
fixes #2443
2018-05-24fix corner cases with `eval()` (#3147)Alex Lam S.L
fixes #3146
2018-05-03fix `TreeWalker` scan order (#3114)Alex Lam S.L
fixes #3113
2018-03-17extend fuzzy RHS folding (#3006)Alex Lam S.L
- `a = []; if (1) x();` => `if (a = []) x();`
2018-03-15refactor brackets to braces (#3005)Alex Lam S.L
2018-01-19compress `undefined` property names (#2811)Alex Lam S.L
- enforce property names as string - handle `void 0` as `undefined` in `hoist_props` & `reduce_vars`
2018-01-17fix `AST_Scope.clone()` (#2803)Alex Lam S.L
fixes #2799
2018-01-16general improvements around `AST_ForIn` (#2796)Alex Lam S.L
- compress using `collapse_vars` - remove unused `name` - simplify `loop_body`
2017-12-22make comments output more robust (#2633)Alex Lam S.L
- improve handling of comments right after `return` - retain comments after `OutputStream` - preserve trailing comments - fix handling of new line before comments - handle comments around parentheses fixes #88 fixes #112 fixes #218 fixes #372 fixes #2629
2017-12-01improve code reuse (#2542)Alex Lam S.L
2017-11-16fix cross-scope inlining of `AST_Function`s (#2486)Alex Lam S.L
fixes #2485
2017-09-20suppress `collapse_vars` of `this` into "use strict" (#2326)Alex Lam S.L
fixes #2319
2017-07-03clean up `TreeWalker.pop()` (#2195)Alex Lam S.L
Remove superfluous parameter.
2017-05-14fix bugs with getter/setter (#1926)Alex Lam S.L
- `reduce_vars` - `side_effects` - property access for object - `AST_SymbolAccessor` as key names enhance `test/ufuzz.js` - add object getter & setter - property assignment to setter - avoid infinite recursion in setter - fix & adjust assignment operators - 50% `=` - 25% `+=` - 2.5% each for the rest - avoid "Invalid array length" - fix `console.log()` - bypass getter - curb recursive reference - deprecate `-E`, always report runtime errors
2017-05-12remove support for `const` (#1910)Alex Lam S.L
As this is not part of ES5.
2017-05-08support dumping AST (#1879)Alex Lam S.L
Re-order `AST_Binary` properties to make dump more readable. closes #769
2017-04-22fix label-related bugs (#1835)Alex Lam S.L
- deep cloning of `AST_LabeledStatement` - `L:do{...}while(false)` - empty statement with label within block extend `test/ufuzz.js` - generate labels for blocks & loops - generate for-in statements - skip suspicious option search if `minify()` errs fixes #1833
2017-04-17enhance `reduce_vars` (#1814)Alex Lam S.L
- allow immediate assignment after declaration of variable - relax modification rule for immutable value - fix order of visit for TreeWalker - remove extraneous code
2017-04-15unify CLI & API under `minify()` (#1811)Alex Lam S.L
- rename `screw_ie8` to `ie8` - rename `mangle.except` to `mangle.reserved` - rename `mangle.properties.ignore_quoted` to `mangle.properties.keep_quoted` - compact `sourceMap` options - more stringent verification on input `options` - toplevel shorthands - `ie8` - `keep_fnames` - `toplevel` - `warnings` - support arrays and unquoted string values on CLI - drop `fromString` from `minify()` - `minify()` no longer handles any `fs` operations - unify order of operations for `mangle_properties()` on CLI & API - `bin/uglifyjs` used to `mangle_properties()` before even `Compressor` - `minify()` used to `mangle_properties()` after `Compressor` but before `mangle_names()` - both will now do `Compressor`, `mangle_names()` then `mangle_properties()` - `options.parse` / `--parse` for parser options beyond `bare_returns` - add `mangle.properties.builtins` to disable built-in reserved list - disable with `--mangle-props builtins` on CLI - `warnings` now off by default - add `--warn` and `--verbose` on CLI - drop `--enclose` - drop `--export-all` - drop `--reserved-file` - use `--mangle reserved` instead - drop `--reserve-domprops` - enabled by default, disable with `--mangle-props domprops` - drop `--prefix` - use `--source-map base` instead - drop `--lint` - remove `bin/extract-props.js` - limit exposure of internal APIs - update documentations closes #96 closes #102 closes #136 closes #166 closes #243 closes #254 closes #261 closes #311 closes #700 closes #748 closes #912 closes #1072 closes #1366 fixes #101 fixes #123 fixes #124 fixes #263 fixes #379 fixes #419 fixes #423 fixes #461 fixes #465 fixes #576 fixes #737 fixes #772 fixes #958 fixes #1036 fixes #1142 fixes #1175 fixes #1220 fixes #1223 fixes #1280 fixes #1359 fixes #1368
2017-04-12convert `AST_Seq` from binary tree to array (#1460)Alex Lam S.L
- rename `AST_Seq` to `AST_Sequence` - raise default sequences_limit from 200 to 800
2017-04-04optimise `do{...}while(false)` (#1785)Alex Lam S.L
- better heuristics to avoid issues like #1532 - fix `TreeWalker.loopcontrol_target()` - `continue` cannot refer to `switch` blocks
2017-03-14minor clean-ups (#1600)Alex Lam S.L
- remove obsolete optimisation in `AST_Binary` after #1477 - improve `TreeWalker.has_directive()` readability and resilience against multiple visits
2017-03-07fix deep cloning of labels (#1565)Alex Lam S.L
`AST_Label.references` get `.initialize()` to `[]` every time after `.clone()` So walk down the tree to pick up the cloned `AST_LoopControl` pieces and put it back together.
2017-03-07transform function calls to IIFEs (#1560)Alex Lam S.L
- expose function body to call sites for potential optimisations - suppress substitution of variable used within `AST_Defun`
2017-03-05handle variable declaration within catch blocks (#1546)Alex Lam S.L
accounts for IE8- scoping
2017-02-26faster tree transversal (#1462)Alex Lam S.L
- convert `[].forEach()` to for-loops
2017-02-24Avoid using exports when undefined (#1471)Ondřej Španěl
Makes direct usage within web browser easier, even if officially unsupported.