aboutsummaryrefslogtreecommitdiff
path: root/lib/scope.js
AgeCommit message (Collapse)Author
2018-06-06general clean-ups (#3175)Alex Lam S.L
2018-05-24fix corner cases with `eval()` (#3147)Alex Lam S.L
fixes #3146
2018-04-27improve general performance (#3104)Alex Lam S.L
2018-04-08fix corner case in reuse of `mangle` options (#3062)Alex Lam S.L
2018-04-03improve performance through `makePredicate()` (#3048)Alex Lam S.L
2018-03-30mangle unused nested `AST_SymbolCatch` correctly (#3038)Alex Lam S.L
fixes #3035
2018-03-23improve performance (#3020)Alex Lam S.L
- replace `find_if()` with `all()` wherever possible - move ESTree-specific logic out of `figure_out_scope()`
2018-03-07fix `mangle` of `AST_SymbolLambda` under `ie8` (#2978)Alex Lam S.L
fixes #2976
2018-02-24minor clean-ups (#2951)Alex Lam S.L
2018-02-23improve `mangle` (#2948)Alex Lam S.L
2018-01-23handle duplicate function declarations correctly (#2837)Alex Lam S.L
fixes #2836
2018-01-14improve SymbolDef info in `--output ast` (#2778)kzc
* SymbolDef info (a.k.a. `thedef`) is now represented as a string containing `"ID name [mangled_name]"`. * Enhance display of `globals`, `variables`, `functions` and `enclosed`. * `SymbolDef.next_id` starts at `1` and the `id` is adjusted for `-o ast` display.
2018-01-12add SymbolDef IDs to --output ast (#2772)kzc
2018-01-09improve synergy between `compress` and `rename` (#2755)Alex Lam S.L
2018-01-05fix corner case with `arguments` as function name (#2729)Alex Lam S.L
fixes #2728
2018-01-05fix `mangle` name collision across files (#2722)Alex Lam S.L
2018-01-04drop `unused` assignment based on `reduce_vars` (#2709)Alex Lam S.L
2018-01-03fix `reduce_vars` on `AST_Defun` (#2708)Alex Lam S.L
2017-12-26replace single-use recursive functions (#2659)Alex Lam S.L
fixes #2628
2017-12-01improve code reuse (#2542)Alex Lam S.L
2017-11-24fix `rename` (#2501)Alex Lam S.L
- suppress spurious `rename` from `commander` - handle `AST_SymbolCatch` correctly
2017-11-19expand symbol space to improve compression (#2460)Alex Lam S.L
- give globally distinct names to distinct variables - improve ability to compress cross-scoped - introduce `options.rename` to `minify()` - default `true` if both `compress` & `mangle`
2017-11-12allow symbol replacement on multiple occurrences (#2472)Alex Lam S.L
- all-or-nothing replacement - avoid unmangleable names fixes #2436
2017-08-01fix `ie8` mangling of top-level `AST_SymbolCatch` (#2263)Alex Lam S.L
fixes #2254
2017-07-15drop `unused` builtin globals under `unsafe` (#2236)Alex Lam S.L
fixes #2233
2017-06-23refactor `compute_char_frequency()` (#2152)Alex Lam S.L
- minimise maintenance when updating AST - maximise code sharing between `master` & `harmony`
2017-06-20ensure mangling works if catch reuses a scope variable (#2123)Alex Lam S.L
fixes #2120
2017-06-15compute `uses_arguments` correctly in `figure_out_scope()` (#2099)Alex Lam S.L
fixes #2097
2017-06-09marshal `mangle[.properties].reserved` from non-Array values (#2072)Alex Lam S.L
2017-05-26clean up `lib/scope.js` (#2003)Alex Lam S.L
fixes #2004
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-04-17compress duplicated variable definitions (#1817)Alex Lam S.L
These are surprisingly common, as people reuse the same variable name within loops or switch branches.
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-03-31sort options in alphabetical order (#1743)Alex Lam S.L
They started off as functional groups I guess, but given the sheer number of options this is becoming too difficult to read.
2017-03-31fix catch symbol mangling (#1734)Alex Lam S.L
Only need to look up the immediate non-block/catch scope for the same-name special case. fixes #1733
2017-03-28handle var within catch of the same name (#1711)Alex Lam S.L
The following code prints `1`: var a = 1; !function(){ a = 4; try{ throw 2; } catch (a) { var a = 3; } }(); console.log(a); fixes #1708
2017-03-28fix mangle for variable declared within catch block (#1706)Alex Lam S.L
fixes #1704
2017-03-27handle overlapped variable definitions (#1691)Alex Lam S.L
Process variable definitions with or without assigned values against: - `arguments` - named function arguments - multiple definitions within same scope Essentially demote variable declarations with no value assignments. Also fixed invalid use of `AST_VarDef` over `arguments` - should use a member of `AST_SymbolDeclaration` instead.
2017-03-10fix catch variable reference in IE8 (#1587)Alex Lam S.L
`AST_Scope.def_variable()` will overwrite `AST_Symbol.thedef`, so save a copy before calling. fixes #1586
2017-03-05handle variable declaration within catch blocks (#1546)Alex Lam S.L
accounts for IE8- scoping
2017-03-05stay safe with constants in IE8- (#1547)Alex Lam S.L
- `undefined` etc. can be redefined at top-level for IE8-, so disable related optimisations - fixed `--support-ie8` catch mangle bug
2017-02-26consolidate `evaluate` & `reduce_vars` (#1505)Alex Lam S.L
- improve marking efficiency - apply smarter `const` replacement to `var` fixes #1501
2017-02-24enable `collapse_vars` & `reduce_vars` by defaultalexlamsl
- fix corner cases in `const` optimisation - deprecate `/*@const*/` fixes #1497 closes #1498
2017-02-21enhance `global_defs`alexlamsl
- support arrays, objects & AST_Node - support `"a.b":1` on both cli & API - emit warning if variable is modified - override top-level variables fixes #1416 closes #1198 closes #1469
2017-02-21improve reduce_vars and fix a bugalexlamsl
- update modified flag between compress() passes - support IIFE arguments - fix corner case with multiple definitions closes #1473
2017-02-18fix corner case in keep_fnamesalexlamsl
happens when inner function: - just below top level - not referenced - `unused` is disabled closes #1445
2017-02-18remove unused AST_Scope.nesting & AST_SymbolRef.framealexlamsl
they are computed but never used closes #1444
2017-01-26fix mangling collision with keep_fnames (#1431)Alex Lam S.L
* fix mangling collision with keep_fnames fixes #1423 * pass mangle options to figure_out_scope() bring command-line in line with minify()
2017-01-26augment evaluate to extract within objects (#1425)Alex Lam S.L
- gated by `unsafe` - replaces previous optimisation specific to String.length - "123"[0] => 1 - [1, 2, 3][0] => 1 - [1, 2, 3].length => 3 - does not apply to objects with overridden prototype functions