aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2013-03-02Add `--screw-ie` optionMihai Bazon
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)
2013-03-01Drop last `default:` if it's the last branch and emptyMihai Bazon
Close #141
2013-03-01Compress boolean constants after evaluationMihai Bazon
Close #137
2013-02-19Fix compressing `do {...} while (false)`Mihai Bazon
It's not safe to transform it to {...} because the body might contain `break`. The solution could be more elaborate (detect if body contains `break`) but I don't think it's worth the trouble. Close #129
2013-02-06Force space after literal regexp when used in "instanceof" or "in"Mihai Bazon
Close #118
2013-02-06Give up evaluating (unary-prefix '-' 0)Mihai Bazon
Close #117 ------ JS, WHY YOU SUCK SO BADLY? ;-(
2013-02-06Fix parens for NaNMihai Bazon
Close #116
2013-02-06Fix parens for negative numbersMihai Bazon
Close #115
2013-02-06Fix parens for AST_NewMihai Bazon
Close #114
2013-02-06Fix handling of constantsMihai Bazon
Close #113
2013-02-05Ugly hack to print comments before return/throw statementsMihai Bazon
Close #112
2013-02-01Fix end token for Assign nodesMihai Bazon
2013-01-23Fix #105: property comparison to undefined is not always safeRichard Gibson
2013-01-17[AST_Hole] the print function can be a no-op.Mihai Bazon
2013-01-17Fix output for arrays containing undefined values.David Glasser
1b6bcca7 was a first attempt at this. That commit made Uglify stop replacing holes with undefined, but instead it started replacing undefined with holes. This is slightly problematic, because there is a difference between a hole and an undefined value. More problematically, it changed [1,undefined] to [1,] which generally doesn't even parse as a hole (just as a trailing comma), so it didn't even preserve the length of the array! Instead, parse holes as their own special AST node which prints invisibly.
2013-01-17Handle String() with no arguments.Mihai Bazon
Fix #91
2013-01-04Fix handling of labels in nested scopesMihai Bazon
2013-01-02Implement `-m sort=true`Mihai Bazon
close #83
2012-12-22Accept string or number as name of an accessor.Mihai Bazon
[not sure I'm happy about this fix] Reference mishoo/UglifyJS#478
2012-12-21Optimize new Array(1, 2, 3) → [1, 2, 3]Mihai Bazon
Close #74
2012-12-21Fix output when semicolons is off.Mihai Bazon
(need to force a semicolon for the empty body of an `if`) Close #72
2012-12-12Small cleanupMihai Bazon
2012-12-06Add proper parens in "NoIn" expressions.Mihai Bazon
fix #60.
2012-12-05small improvement on merging assignments into hoisted varsMihai Bazon
2012-12-05When hoisting variables, try to merge in assignments that follow.Mihai Bazon
2012-11-30Don't messup compressor stack while optimizing SwitchMihai Bazon
Fix #59
2012-11-24fix #55Mihai Bazon
2012-11-23fix for https://github.com/mishoo/UglifyJS/issues/474Mihai Bazon
2012-11-18fix #51Mihai Bazon
2012-11-17retain (1,eval) as is when it's the expression of an AST_CallMihai Bazon
otherwise we change the meaning of eval from global to lexical.
2012-11-14Add support for somewhat preserving line numbers.Richard van Velzen
Usage: uglifyjs2 -b "beautify=0,preserve_line=1" /path/to/js ref #46
2012-11-14better solution for the last test in constant switch foldingMihai Bazon
2012-11-14optimize constant switch blocksMihai Bazon
ref. mishoo/UglifyJS#441
2012-11-13Merge branch 'optimize_concat' of https://github.com/rvanvelzen/UglifyJS2 ↵Mihai Bazon
into rvanvelzen-optimize_concat
2012-11-13don't change order in binary expressions if both operands have side effectsMihai Bazon
2012-11-12Add simple optimization for empty-string concats.Richard van Velzen
ref. #43
2012-11-12fix invalid AST produced by dropping unused variableMihai Bazon
close #44
2012-11-11convert x.toString() to ""+x instead of x+""Dan Wolff
In some places this can save one byte in whitespace, e.g. after return. Example: function f(arg) { // return""+arg - no space between return and "" return arg.toString(); }
2012-11-08AST_LabelRef no longer inherits from AST_SymbolRefMihai Bazon
2012-11-08fix API breakageMihai Bazon
close #36, #38
2012-11-08optimization for if/break as first statement in a loop bodyMihai Bazon
for(...; x; ...) if (y) break; → for(...; x&&!y; ...); similarly for `while` and some combinations (i.e. the `break` appears in the `else` clause, etc.)
2012-11-07fix another small regressionMihai Bazon
we do need parens here: `new (foo.bar().baz)`, but not here: `new foo.bar.baz`
2012-11-07fix regression from 5346fb94 (shouldn't parenthesize i++ in x[i++])Mihai Bazon
2012-11-07add AST_Accessor and AST_SymbolAccessor node typesMihai Bazon
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
2012-11-07parenthesize property access when it's the expression in NewMihai Bazon
refs #35
2012-11-07further fix for parens around New (refs #35)Mihai Bazon
2012-11-07parenthesize a Call expression when its parent is NewMihai Bazon
fix #35
2012-11-07add proper parens around unary expressionsMihai Bazon
fix #34
2012-11-06add option to mangle names even if eval/with is in useMihai Bazon
(for more fair comparison to Closure compiler)
2012-11-05convert `while` into `for`Mihai Bazon