Age | Commit message (Collapse) | Author |
|
|
|
|
|
Fixes older browser support for consts and allows more flexibility
in dead code removal.
|
|
Fixes #892
Helped-by: kzc
|
|
Fix #862
|
|
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
|
|
"use asm"; sections and preserve floating point literals in their original form. Non-asm.js sections are optimized as before. Asm.js sections can still be mangled and minified of whitespace. No special command line flags are required.
|
|
... and support storing there variable names as well, to help with multiple
invocations when mangling toplevel.
|
|
See #552. This is mostly useful for having the actual function names in traces.
|
|
|
|
|
|
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).
|
|
|
|
|
|
I hereby acknowledge that figure_out_scope has become a mess.
|
|
Fix #344
|
|
|
|
Close #179, #326, #327
|
|
Fix #501
|
|
Simplifies handling of labels (their definition/references can be easily
figured out at parse time, no need to do it in `figure_out_scope`).
|
|
|
|
doesn't break IE9+
|
|
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
|
|
Close #127
|
|
For now the implication is that UglifyJS will not leak a function
expression's name in the surrounding scope (IE < 9 does that).
(ref. mishoo/UglifyJS#485)
|
|
Close #113
|
|
|
|
close #83
|
|
|
|
close #36, #38
|
|
AST_Accessor will represent the function for a setter or getter. Since they
are not mangleable, and they should not introduce a name in scope, we have a
new node for their name (AST_SymbolAccessor) which doesn't inherit from
AST_SymbolDeclaration.
fix #37
|
|
(for more fair comparison to Closure compiler)
|
|
to mitigate the `__proto__` issue
related to #30
|
|
close #24
|
|
we need to mangle names from outermost to innermost scope; mangling names
from inner scopes before we got to the outer scope won't work correctly,
therefore sorting doesn't make sense.
|
|
is_digit takes a char code now, not a string
|
|
- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
|
|
|
|
|
|
|
|
hopefully we can make the AST documentation self-generating
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to always print brackets around if/do/while/for statements; export more options via the CLI
|