aboutsummaryrefslogtreecommitdiff
path: root/lib/output.js
AgeCommit message (Expand)Author
2012-09-16rewrite handle_if_return...optimizations of if/return/continue seem to be even better now Mihai Bazon
2012-09-14adding an imaginary "return undefined" can sometimes help...function f() { if (foo) return x(); if (!bar) return y(); } ==> function f() { return foo ? x() : bar ? void 0 : y(); } Mihai Bazon
2012-09-14more optimizations that v1 does and some cleanups...- a = a + x ==> a+=x - joining consecutive var statements (hoisting is not always desirable) - x == false ==> x == 0, x != true ==> x != 1 - x, x ==> x; x = exp(), x ==> x = exp() - discarding useless break-s Mihai Bazon
2012-09-12fixed run-tests and an issue about reversing the condition in AST_IfMihai Bazon
2012-09-11fixed 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-10more progress on the compressor (WIP)Mihai Bazon
2012-09-08fix output for division followed by regexp...( v1 report: https://github.com/mishoo/UglifyJS/pull/458 ) Mihai Bazon
2012-09-05cleaned 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-04if present, the `else` in an `if` should always be forced statementMihai Bazon
2012-09-03jumps, try and definitions are statements tooMihai Bazon
2012-09-03an AST_If is too a StatementWithBodyMihai Bazon
2012-09-03a LabeledStatement should be in fact a StatementWithBody...This fixes output for: if (foo) { moo: if (bar) { break moo; } } else { baz(); } (the labeled statement must be outputted inside brackets) Mihai Bazon
2012-09-03switch branches must be declared `required` so that the compressor doesn't...replace nodes with a single statement. looks stable for now, though mess begins to sink in. need to review the AST hierarchy. Mihai Bazon
2012-09-02add source mappings for more node types; started CLI utilityMihai Bazon
2012-08-29started support for generating source maps (WIP)...plugged in @fitzgen's source-map library Mihai Bazon
2012-08-28fix output for arrays containing undefined values...[1,,2,] ==> [1,,2] instead of [1,undefined,2] Mihai Bazon
2012-08-28fix code generator for this case:...if (foo) { with (bar) if (baz) x(); } else y(); (the compressor removes the brackets since the consequent consists of a single statement, but the codegen must include the brackets because otherwise the `else` would refer to the inner `if`) Mihai Bazon
2012-08-27update (c) yearsMihai Bazon
2012-08-27added print_to_string helper methodMihai Bazon
2012-08-23fix current_col and force a newline every 32K (support options.max_line_len)Mihai Bazon
2012-08-22added licenseMihai Bazon
2012-08-22fix output for certain edge cases...the statements if, for, do, while and with might have an AST_EmptyStatement as body; if that's the case, we need to make sure that the semicolon gets in the output. Mihai Bazon
2012-08-22declare some properties in the node constructor so that they're copied in cloneMihai Bazon
2012-08-21cleaned up some mess and started the actual compressorMihai Bazon
2012-08-21some reorganization...(moved pretty much everything that relates to scope in scope.js, added a module for NodeJS that can be used with require() and exports everything.) Mihai Bazon
2012-08-21warn about unreferenced symbolsMihai Bazon
2012-08-21more fixes:...- added walker for AST_ObjectProperty - handle redefinitions properly (only mangle one symbol, make them all point to a single definition) DynarchLIB seems to run fine after mangling + compressed output. Mihai Bazon
2012-08-20added mangler and other stuffMihai Bazon
2012-08-19simple visitor API and code to figure out scope and referencesMihai Bazon
2012-08-18some fixes (need testing) in AST_If codegenMihai Bazon
2012-08-17minor whitespace issuesMihai Bazon
2012-08-17big speed improvement (observable when beautify = false)...who would have thought that str.charAt(str.length - 1) is not a constant, instant operation? seems to get slower and slower as the string grows. 0.6s vs. 3s Mihai Bazon
2012-08-17don't output both space and semicolon when beautify=falseMihai Bazon
2012-08-17added some comments about the rules governing parensMihai Bazon
2012-08-17fix one more glitchMihai Bazon
2012-08-17code generator finally seems to work properlyMihai Bazon
2012-08-16lots'o'fixes in the output routines; still a looong way to go.Mihai Bazon
2012-08-16codegen and dropped the useless walkerMihai Bazon
2012-08-15WIPMihai Bazon
2012-06-03WIPMihai Bazon