Age | Commit message (Expand) | Author |
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 |
2013-03-02 | Add `--screw-ie` option...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)
| Mihai Bazon |
2013-02-06 | Fix handling of constants...Close #113
| Mihai Bazon |
2013-01-04 | Fix handling of labels in nested scopes | Mihai Bazon |
2013-01-02 | Implement `-m sort=true`...close #83
| Mihai Bazon |
2012-12-05 | When hoisting variables, try to merge in assignments that follow. | Mihai Bazon |
2012-11-08 | fix API breakage...close #36, #38
| Mihai Bazon |
2012-11-07 | add AST_Accessor and AST_SymbolAccessor node types...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
| Mihai Bazon |
2012-11-06 | add option to mangle names even if eval/with is in use...(for more fair comparison to Closure compiler)
| Mihai Bazon |
2012-11-02 | use a Dictionary object instead of plain object for hashes...to mitigate the `__proto__` issue
related to #30
| Mihai Bazon |
2012-10-25 | cripple scope to make IE happy :-(...close #24
| Mihai Bazon |
2012-10-17 | the `sort` option is broken anyway, removed it...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.
| Mihai Bazon |
2012-10-13 | fix regression from fb5c01c073d06034815d5f3b782fd11cbdf6d6f5...is_digit takes a char code now, not a string
| Mihai Bazon |
2012-10-11 | cleanup...- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
| Mihai Bazon |
2012-10-11 | fix propagation of symbol references | Mihai Bazon |
2012-10-10 | seems cleaner if AST_Label doesn't inherit from AST_SymbolDeclaration | Mihai Bazon |
2012-10-10 | add `--lint` and display {file} in scope_warnings | Mihai Bazon |
2012-10-09 | added $propdoc to AST nodes and some cleanups...hopefully we can make the AST documentation self-generating
| Mihai Bazon |
2012-10-08 | should not expose base54.sort() in the API docs, I think | Mihai Bazon |
2012-10-05 | prevent mangling only when eval is *called*, not when it's just referenced | Mihai Bazon |
2012-10-04 | removed some unused variables | Mihai Bazon |
2012-10-03 | more cleanup (dropped AST_SwitchBlock) | Mihai Bazon |
2012-10-02 | option to exclude certain names from mangling | Mihai Bazon |
2012-10-02 | support defines | Mihai Bazon |
2012-10-02 | "use strict"; | Mihai Bazon |
2012-10-02 | add AST_SymbolConst for names defined with `const` | Mihai Bazon |
2012-10-02 | a shy attempt to obey `width` in the beautifier; added `bracketize` option to... | Mihai Bazon |
2012-09-28 | minor | Mihai Bazon |
2012-09-27 | fix mangling...(bug in our code prevented the mangler from using a name that was in use
prior to mangling but not after it)
| Mihai Bazon |
2012-09-23 | properly drop mutually-referring declarations that are not otherwise...referenced and have no side effects
| Mihai Bazon |
2012-09-21 | better support for multiple input files:...- use a single AST_Toplevel node for all files
- keep original source filename in the tokens
| Mihai Bazon |
2012-09-19 | drop unused variables | Mihai Bazon |
2012-09-18 | fixed label scope/mangling | Mihai Bazon |
2012-09-18 | minor | Mihai Bazon |
2012-09-18 | support for directives | Mihai Bazon |
2012-09-15 | figure out label targets | Mihai Bazon |
2012-09-11 | fixed some mess with symbols/scope...- all symbols now have a `thedef` property which is a SymbolDef object,
instead of the `uniq` that we had before (pointing to the first occurrence
of the name as declaration).
- for undeclared symbols we still create a SymbolDef object in the toplevel
scope but mark it "undeclared"
- we can now call figure_out_scope after squeezing, which is useful in order
not to mangle names that were dropped by the squeezer
| Mihai Bazon |
2012-09-11 | checkpoint...- discard statements with no side effects (unsafe? could be)
- safer hoist_vars (needs some revamping of scope/mangling)
| Mihai Bazon |
2012-09-10 | adaptive base54 digits depending on char frequency (WIP) | Mihai Bazon |
2012-09-05 | fix for variable names like `toString` | Mihai Bazon |
2012-09-05 | cleaned up usage of AST_BlockStatement...The following nodes were instances of AST_BlockStatement: AST_Scope,
AST_SwitchBlock, AST_SwitchBranch. Also, AST_Try, AST_Catch, AST_Finally
were having a body instanceof AST_BlockStatement.
Overloading the meaning of AST_BlockStatement this way turned out to be a
mess; we now have an AST_Block class that is the base class for things
having a block of statements (might or might not be bracketed). The
`this.body` of AST_Scope, AST_Try, AST_Catch, AST_Finally is now an array of
statements (as they inherit from AST_Block).
Avoiding calling superclass's _walk function in walkers (turns out we walked
a node multiple times).
| Mihai Bazon |
2012-09-04 | checkpoint | Mihai Bazon |
2012-08-29 | don't mangle names of setters/getters | Mihai Bazon |
2012-08-27 | update (c) years | Mihai Bazon |
2012-08-22 | added license | Mihai Bazon |
2012-08-22 | declare some properties in the node constructor so that they're copied in clone | Mihai Bazon |
2012-08-21 | hint that brackets may be required in AST_BlockStatement | Mihai Bazon |