Age | Commit message (Expand) | Author |
2017-03-31 | sort options in alphabetical order (#1743)...They started off as functional groups I guess, but given the sheer number of options this is becoming too difficult to read. | Alex Lam S.L |
2017-03-31 | fix catch symbol mangling (#1734)...Only need to look up the immediate non-block/catch scope for the same-name special case.
fixes #1733 | Alex Lam S.L |
2017-03-28 | handle var within catch of the same name (#1711)...The following code prints `1`:
var a = 1;
!function(){
a = 4;
try{
throw 2;
} catch (a) {
var a = 3;
}
}();
console.log(a);
fixes #1708 | Alex Lam S.L |
2017-03-28 | fix mangle for variable declared within catch block (#1706)...fixes #1704 | Alex Lam S.L |
2017-03-27 | handle overlapped variable definitions (#1691)...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. | Alex Lam S.L |
2017-03-10 | fix catch variable reference in IE8 (#1587)...`AST_Scope.def_variable()` will overwrite `AST_Symbol.thedef`, so save a copy before calling.
fixes #1586 | Alex Lam S.L |
2017-03-05 | handle variable declaration within catch blocks (#1546)...accounts for IE8- scoping | Alex Lam S.L |
2017-03-05 | stay safe with constants in IE8- (#1547)...- `undefined` etc. can be redefined at top-level for IE8-, so disable related optimisations
- fixed `--support-ie8` catch mangle bug | Alex Lam S.L |
2017-02-26 | consolidate `evaluate` & `reduce_vars` (#1505)...- improve marking efficiency
- apply smarter `const` replacement to `var`
fixes #1501 | Alex Lam S.L |
2017-02-24 | enable `collapse_vars` & `reduce_vars` by default...- fix corner cases in `const` optimisation
- deprecate `/*@const*/`
fixes #1497
closes #1498
| alexlamsl |
2017-02-21 | enhance `global_defs`...- 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
| alexlamsl |
2017-02-21 | improve reduce_vars and fix a bug...- update modified flag between compress() passes
- support IIFE arguments
- fix corner case with multiple definitions
closes #1473
| alexlamsl |
2017-02-18 | fix corner case in keep_fnames...happens when inner function:
- just below top level
- not referenced
- `unused` is disabled
closes #1445
| alexlamsl |
2017-02-18 | remove unused AST_Scope.nesting & AST_SymbolRef.frame...they are computed but never used
closes #1444
| alexlamsl |
2017-01-26 | fix mangling collision with keep_fnames (#1431)...* fix mangling collision with keep_fnames
fixes #1423
* pass mangle options to figure_out_scope()
bring command-line in line with minify()
| Alex Lam S.L |
2017-01-26 | augment evaluate to extract within objects (#1425)...- 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 | Alex Lam S.L |
2017-01-19 | add missing LHS cases which global_defs should avoid | alexlamsl |
2016-10-23 | fix uses_arguments handling (broken since 6605d1578351)...Using the symbol declaration tracking of UglifyJS doesn't make sense here
anyway, `arguments` always comes from something in the current scope.
fixes #1299
| Jann Horn |
2016-10-01 | Optimize unmodified variables | alexlamsl |
2016-07-15 | Fix mangle with option keep_fnames=true for Safari....Fixes: #1202
| kzc |
2016-06-30 | Enable --screw-ie8 by default....catch identifier is mangled correctly for ES5 standards-compliant JS engines by default.
Unconditionally use the ie8 if/do-while workaround whether or not --screw-ie8 is enabled.
To support non-standard ie8 javascript use: uglifyjs --support-ie8
| kzc |
2016-03-28 | Speedup `unused` compress option for already minified code...Fixes: #321 #917 #1022
| kzc |
2016-02-27 | #877 Ignore mangle sort option | kzc |
2016-02-17 | preserve ThisBinding for side_effects | alexlamsl |
2016-01-27 | Add start/end in the `arguments` definition...(keeps my https://github.com/mishoo/jsinfo.el working)
| Mihai Bazon |
2016-01-20 | Tighten up @const regex. | Samuel Reed |
2016-01-20 | Simplify by skipping extra tree walk. | Samuel Reed |
2016-01-20 | Use TreeWalker for more accurate @const results and update tests | Samuel Reed |
2016-01-19 | Mark vars with /** @const */ pragma as consts so they can be eliminated....Fixes older browser support for consts and allows more flexibility
in dead code removal.
| Samuel Reed |
2016-01-14 | Never mangle arguments and keep them in their scope...Fixes #892
Helped-by: kzc
| Anthony Van de Gejuchte |
2015-11-12 | Build label def/refs info when figuring out scope...Fix #862
| Mihai Bazon |
2015-11-11 | Rework has_directive...It's now available during tree walking, i.e. walker.has_directive("use
asm"), rather than as part of the scope. It's thus no longer necessary
to call `figure_out_scope` before codegen. Added special bits in the
code generator to overcome the fact that it doesn't inherit from
TreeWalker.
Fix #861
| Mihai Bazon |
2015-10-07 | Add proper support for "use asm"; blocks. Disable -c optimization within "use... | kzc |
2015-03-16 | rename --prop-cache to --name-cache...... and support storing there variable names as well, to help with multiple
invocations when mangling toplevel.
| Mihai Bazon |
2015-01-04 | Add an option to prevent function names from being mangled...See #552. This is mostly useful for having the actual function names in traces.
| Richard van Velzen |
2014-12-01 | fix base54 | Cheng Liangyu |
2014-09-12 | Don't warn for an unreferenced exception symbol in a catch block. | Arnavion |
2014-02-14 | Mangle name of exception when --screw-ie8. Fix #430....The effect of not mangling it was visible only with --screw-ie8 (otherwise
the names would be mangled exactly because they leaked into the parent
scope).
| Mihai Bazon |
2013-12-16 | minor | Mihai Bazon |
2013-12-16 | bugfix #242 | colorhook |
2013-12-05 | AST_Catch shouldn't really inherit from AST_Scope. Fix #363...I hereby acknowledge that figure_out_scope has become a mess.
| Mihai Bazon |
2013-11-28 | Properly scope `catch` identifier when --screw-ie8...Fix #344
| Mihai Bazon |
2013-10-29 | Fix typo | Mihai Bazon |
2013-10-29 | Avoid shadowing name of function expression with function argument...Close #179, #326, #327
| Mihai Bazon |
2013-10-17 | `arguments` outside of a function is an ordinary variable....Fix #501
| Mihai Bazon |
2013-09-02 | Disallow `continue` referring to a non-IterationStatement. Fix #287...Simplifies handling of labels (their definition/references can be easily
figured out at parse time, no need to do it in `figure_out_scope`).
| Mihai Bazon |
2013-05-22 | Set "global" on undeclared SymbolDef-s | Mihai Bazon |
2013-03-25 | renamed --screw-ie to --screw-ie8, documented it in README.md, indicated it d... | Michał Gołębiowski |
2013-03-22 | Keep legit code working even when --screw-ie is not passed....Previously:
Without `--screw-ie`, UglifyJS would always leak names of function
expressions into the containing scope, as if they were function
declarations. That was to emulate IE<9 behavior. Code relying on this
IE bug would continue to work properly after mangling, although it would
only work in IE (since other engines don't share the bug). Sometimes
this broke legitimage code (see #153 and #155).
With `--screw-ie` the names would not be leaked into the current scope,
working properly in legit cases; but still it broke legit code when
running in IE<9 (see #24).
Currently:
Regardless of the `--screw-ie` setting, the names will not be leaked.
Code relying on the IE bug will not work properly after mangling.
<evil laughter here>
Without `--screw-ie`: a hack has been added to the mangler to avoid
using the same name for a function expression and some other variable in
the same scope. This keeps legit code working, at the (negligible,
indeed) cost of one more identifier.
With `--screw-ie` you allow the mangler to name function expressions
with the same identifier as another variable in scope. After mangling
code might break in IE<9.
Oh man, the commit message is longer than the patch.
Fix #153, #155
| Mihai Bazon |
2013-03-13 | Support mangling toplevel names...Close #127
| Mihai Bazon |