aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Expand)Author
2012-11-07add 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-07parenthesize property access when it's the expression in New...refs #35 Mihai Bazon
2012-11-07further fix for parens around New (refs #35)Mihai Bazon
2012-11-07parenthesize a Call expression when its parent is New...fix #35 Mihai Bazon
2012-11-07add proper parens around unary expressions...fix #34 Mihai Bazon
2012-11-06add option to mangle names even if eval/with is in use...(for more fair comparison to Closure compiler) Mihai Bazon
2012-11-05convert `while` into `for`Mihai Bazon
2012-11-05minorMihai Bazon
2012-11-05minor optimization...for `==` or `!=` against a constant, prefer to display the constant first. should help a bit after gzip, i.e.: typeof foo=="undefined" ^^^^^^ ^^^^^^^^^^^^^ vs: "undefined"==typeof foo ^^^^^^^^^^^^^^^^^^^ (longer sequence that could repeat) idea stolen from closure. Mihai Bazon
2012-11-05print final semicolon...close #28 Mihai Bazon
2012-11-02use a Dictionary object instead of plain object for hashes...to mitigate the `__proto__` issue related to #30 Mihai Bazon
2012-11-01it's safe to negate expression in !EXP only in boolean context...#kendo Mihai Bazon
2012-11-01added unsafe_comps for negating `<=` with `>`...since it has the potential to break code, let's keep it disabled by default Mihai Bazon
2012-11-01fix compressing UnaryPrefix...only try negating the expression if the operator is `!` #kendo Mihai Bazon
2012-10-30don't move expressions containing the binary `in` operator into the `for` ini......(opera can't parse it) close #25 Mihai Bazon
2012-10-25cripple scope to make IE happy :-(...close #24 Mihai Bazon
2012-10-24fix for `if (...) return; else return ...;`...(it was assumed that the first `return` always contains a value) close #22 Mihai Bazon
2012-10-22more sequence optimizations (lift some sequences above binary/unary expressio...Mihai Bazon
2012-10-19minor fix for dropping unused definitions.... function f(x, y) { var g = function() { return h() }; var h = function() { return g() }; return x + y; } now compresses to `function f(x, y) { return x + y }` Mihai Bazon
2012-10-18more optimizations for some break/continue casesMihai Bazon
2012-10-17more small optimizations...(unlikely to help for hand-written code) Mihai Bazon
2012-10-17define aborts on AST_If: true if both branches abortMihai Bazon
2012-10-17employ a better parser for command-line arguments...to support passing commas in strings in for example: uglifyjs2 -cd TEST="'a,b'" <<EOF console.log(TEST); EOF → console.log("a,b") close #14 Mihai Bazon
2012-10-17the `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-17add `semicolons` option in the code generator (default: `true`)...pass `false` to separate statements with newlines instead of semicolons Mihai Bazon
2012-10-16fix small glitches in source map generationMihai Bazon
2012-10-13drop unused function arguments...also add test for "drop_unused" (the last one fails for now) Mihai Bazon
2012-10-13add parens to AST_Seq whose parent is AST_UnaryMihai Bazon
2012-10-13fix compressing benchmark.js (it tried to evaluate a statement)...the following code in benchmark.js triggered the issue: support.decompilation = Function( 'return (' + (function(x) { return { 'x': '' + (1 + x) + '', 'y': 0 }; }) + ')' )()(0).x === '1'; technically that could be resolved into a constant expression, but seems it's being used here for browser bugs detection :-\ Mihai Bazon
2012-10-13minorMihai Bazon
2012-10-13fix regression from fb5c01c073d06034815d5f3b782fd11cbdf6d6f5...is_digit takes a char code now, not a string Mihai Bazon
2012-10-13fix end tokens in spidermonkey ast importMihai Bazon
2012-10-12minorMihai Bazon
2012-10-12remove the $self hack...operations are destructive anyway, so there's no point to clone the nodes in the transformer. speed++ Mihai Bazon
2012-10-12fix in_boolean_context() (two tests were broken)Mihai Bazon
2012-10-12use AST_Lambda for object setters/getters...so that the optimization that drops the name if unused doesn't apply. close #12 Mihai Bazon
2012-10-11fix pos in syntax error exceptionMihai Bazon
2012-10-11stealing more hacks from acorn in the name of speedMihai Bazon
2012-10-11using makeComparator from acorn to generate functions that tests whether a...string is keyword, reserved etc. speeds up the parser a bit, though not spectacular.. still far from acorn. Mihai Bazon
2012-10-11cleanup...- use prototype-less objects where feasible (minor speed improvement) - get rid of HOP Mihai Bazon
2012-10-11fix propagation of symbol referencesMihai Bazon
2012-10-10fix node nameMihai Bazon
2012-10-10seems cleaner if AST_Label doesn't inherit from AST_SymbolDeclarationMihai Bazon
2012-10-10small improvements in wrap_commonjs:...- use MAP.splice instead of a BlockStatement to inject code (avoids some warnings in the linter) - use the original symbol in exports, so that we get the proper source mapping Mihai Bazon
2012-10-10drop unused variableMihai Bazon
2012-10-10add `--lint` and display {file} in scope_warningsMihai Bazon
2012-10-09minorMihai Bazon
2012-10-09add AST_Infinity nodeMihai Bazon
2012-10-09make `--comments` keep @cc_on tooMihai Bazon
2012-10-09added $propdoc to AST nodes and some cleanups...hopefully we can make the AST documentation self-generating Mihai Bazon