aboutsummaryrefslogtreecommitdiff
path: root/lib/ast.js
AgeCommit message (Expand)Author
2016-04-12Actually limit sequence length....Fix #1038 Mihai Bazon
2016-04-07Avoid using inherited hasOwnProperty...Fix #1031 Mihai Bazon
2015-11-12Fix output for "use asm" code from SpiderMonkey AST...(will only work properly if the SM tree contains "raw" properties for Literal number nodes) Mihai Bazon
2015-11-11Rework has_directive...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 Mihai Bazon
2015-10-07Fix handling of "use asm" when no command line flags are passed to uglifyjs. ...kzc
2015-09-24No longer use `vm` to load code....Improves performance 2x on node > 0.10. Ref #636 Mihai Bazon
2015-09-24Fix wrap_commonjs to include code first...(code could have directives, i.e. "use strict") Mihai Bazon
2015-01-27Add option to preserve/enforce string quote style...`-q 0` (default) use single or double quotes such as to minimize the number of bytes (prefers double quotes when both will do); this is the previous behavior. `-q 1` -- always use single quotes `-q 2` -- always use double quotes `-q 3` or just `-q` -- always use the original quotes. Related codegen option: `quote_style`. Close #495 Close #460 Some `yargs` guru please tell me why `uglifyjs --help` doesn't display the help string for `-q` / `--quotes`, and why it doesn't output the expected argument types anymore, like good old `optimist` did. Mihai Bazon
2015-01-06Track ending lines/columns; fix end locations in Mozilla AST.Ingvar Stepanyan
2015-01-06AST_Do nodes: walk body before conditionMihai Bazon
2014-03-22Allow colons in the pairs passed to AST_Toplevel.wrap_encloseArnavion
2013-12-05AST_Catch shouldn't really inherit from AST_Scope. Fix #363...I hereby acknowledge that figure_out_scope has become a mess. Mihai Bazon
2013-11-28Properly scope `catch` identifier when --screw-ie8...Fix #344 Mihai Bazon
2013-10-30Fix parsing setters/getters (allow keywords for name)....The "key" property was always "set" or "get", which didn't make much sense. Now it'll be the actual name of the setter/getter (AST_Node), and the AST_Accessor object itself, which represents the function, won't store any name. Close #319 Mihai Bazon
2013-09-06minorMihai Bazon
2013-09-02Fix names.Mihai Bazon
2013-09-02Disallow `continue` referring to a non-IterationStatement. Fix #287...Simplifies handling of labels (their definition/references can be easily figured out at parse time, no need to do it in `figure_out_scope`). Mihai Bazon
2013-06-07Don't swap binary ops when "use asm" is in effect....Refs #167 Mihai Bazon
2013-03-24Add support for enclose option. Closes #139.Jake Harding
2013-01-17Fix output for arrays containing undefined values....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. David Glasser
2012-11-24fix #55Mihai Bazon
2012-11-08AST_LabelRef no longer inherits from AST_SymbolRefMihai Bazon
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-10-22more sequence optimizations (lift some sequences above binary/unary expressio...Mihai Bazon
2012-10-18more optimizations for some break/continue casesMihai 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-11cleanup...- use prototype-less objects where feasible (minor speed improvement) - get rid of HOP Mihai 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-09add AST_Infinity nodeMihai Bazon
2012-10-09added $propdoc to AST nodes and some cleanups...hopefully we can make the AST documentation self-generating Mihai Bazon
2012-10-09minor AST cleanup (AST_BlockStatement may inherit from AST_Block)Mihai Bazon
2012-10-09add `--ast-help`...displays a rather cruel description of the AST classes, derived directly from the node definitions. Mihai Bazon
2012-10-08added --self to easily get a browser-runnable version of UglifyJSMihai Bazon
2012-10-03more cleanup (dropped AST_SwitchBlock)Mihai Bazon
2012-10-03AST cleanup (dropped AST_StatementBase)Mihai Bazon
2012-10-02"use strict";Mihai Bazon
2012-10-02add AST_SymbolConst for names defined with `const`Mihai Bazon
2012-09-28minorMihai Bazon
2012-09-26checkpoint (refactoring, WIP)Mihai Bazon
2012-09-23properly drop mutually-referring declarations that are not otherwise...referenced and have no side effects Mihai Bazon
2012-09-21better 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-18fixed label scope/manglingMihai Bazon
2012-09-18support for directivesMihai Bazon
2012-09-18added AST_NaN (output as 0/0)Mihai Bazon
2012-09-15figure out label targetsMihai 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-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