Commit Graph

1481 Commits

Author SHA1 Message Date
Mihai Bazon 2bd8a118c2 define AST_Node.from_mozilla_ast(ast)
returns an UglifyJS2 AST given a Mozilla AST.  Still needs some work to do
(need to create specific nodes like AST_SymbolRef, AST_SymbolLambda
etc. instead of base AST_Symbol, in order for the mangler/compressor to work
properly)
2012-10-03 20:03:17 +03:00
Mihai Bazon 11863d6f9a more cleanup (dropped AST_SwitchBlock) 2012-10-03 15:52:31 +03:00
Mihai Bazon 3412498795 AST cleanup (dropped AST_StatementBase) 2012-10-03 15:41:11 +03:00
Mihai Bazon c11de17e99 added option for side-effect-free statements, fix test 2012-10-03 13:08:03 +03:00
Mihai Bazon e0f5075e45 fix endless loop in tests 2012-10-03 12:49:47 +03:00
Mihai Bazon 0678ae2076 fix for a = !b && !c && !d && !e → a=!(b||c||d||e) 2012-10-03 11:34:05 +03:00
Mihai Bazon 378ed17809 disable hoist_vars by default and change comparations to comparisons 2012-10-03 11:27:05 +03:00
Mihai Bazon 815abcfe18 support for --comments option to keep comments containing @license or @preserve 2012-10-02 16:40:42 +03:00
Mihai Bazon 075f93ec0d line numbers start at 1 2012-10-02 16:39:53 +03:00
Mihai Bazon 2a5456260e added option to keep some comments in the output 2012-10-02 14:32:30 +03:00
Mihai Bazon 36be211e99 option to exclude certain names from mangling 2012-10-02 14:02:33 +03:00
Mihai Bazon dde5b22b5e support defines 2012-10-02 13:20:07 +03:00
Mihai Bazon e1098b04a7 "use strict"; 2012-10-02 12:45:58 +03:00
Mihai Bazon 211792757c more constant folding (for names defined with const) 2012-10-02 12:45:17 +03:00
Mihai Bazon 347160c631 add AST_SymbolConst for names defined with const 2012-10-02 12:22:39 +03:00
Mihai Bazon ff696cd7bc drop more unused names 2012-10-02 12:02:33 +03:00
Mihai Bazon 9e5dd81f1e a shy attempt to obey width in the beautifier; added bracketize option to always print brackets around if/do/while/for statements; export more options via the CLI 2012-10-02 11:22:38 +03:00
Mihai Bazon 896444482a minor 2012-09-28 11:12:47 +03:00
Mihai Bazon 05e15b1c0c fix mangling
(bug in our code prevented the mangler from using a name that was in use
prior to mangling but not after it)
2012-09-27 00:01:16 +03:00
Mihai Bazon 13278c6649 removed the "squeeze" method (it's now effectively "transform") 2012-09-26 19:52:32 +03:00
Mihai Bazon 15d58f5917 some speedup and more savings from unused vars that have side effects in initialization 2012-09-26 19:05:49 +03:00
Mihai Bazon 78be8f5296 compressor successfully moved to TreeTransformer 2012-09-26 14:27:01 +03:00
Mihai Bazon a24e7ee976 checkpoint (refactoring, WIP) 2012-09-26 12:16:16 +03:00
Mihai Bazon 242dd10131 more cleanups 2012-09-25 20:39:15 +03:00
Mihai Bazon 9321d418bc moving code around (refactoring, WIP) 2012-09-25 15:59:27 +03:00
Mihai Bazon 10c7f52074 discard all \uFEFF characters (https://github.com/mishoo/UglifyJS/issues/462) 2012-09-25 15:30:59 +03:00
Mihai Bazon 4201577dd7 started some refactoring (WIP) -- moving squeezer to TreeTransformer 2012-09-25 15:15:47 +03:00
Mihai Bazon e836e2ae5f minor 2012-09-25 12:48:36 +03:00
Mihai Bazon ea6d1ea701 it's not safe to assume that property access is side-effect-free
(getters/setters + various browser bugs will trigger side effects; also, an
exception is thrown when the expression is undefined)
2012-09-25 10:32:14 +03:00
Mihai Bazon 368ac8f93c some boolean cleanup 2012-09-25 10:31:03 +03:00
Mihai Bazon 42038fd67f Support input source map
This is useful while compressing generated code; for example compressing JS
compiled by CoffeeScript (assuming you got a source map):

    uglifyjs2 --in-source-map generated.js.map \
              --source-map uglified.js.map \
              -o uglified.js

The above assumes you have a "generated.js.map" file which is the source
mapping between your CoffeeScript and the generated.js (compiled output from
CoffeeScript).  The name of the input file is not present in this example;
it will be fetched from the source map (but it can be passed manually too).

The output will be in "uglified.js" and the output map "uglified.js.map"
will actually map to the original CoffeeScript code, rather than to
generated.js.
2012-09-24 17:02:18 +03:00
Mihai Bazon a83b28503f properly drop mutually-referring declarations that are not otherwise
referenced and have no side effects
2012-09-23 12:47:34 +03:00
Mihai Bazon 76d88b59dc tree transformer api (WIP) 2012-09-22 19:41:09 +03:00
Mihai Bazon ec7f895b54 log filename in parse errors / compressor warnings 2012-09-21 14:44:25 +03:00
Mihai Bazon 5491e1d7b1 better support for multiple input files:
- use a single AST_Toplevel node for all files
- keep original source filename in the tokens
2012-09-21 14:19:05 +03:00
Mihai Bazon c4f8c2103f more on detecting side effects 2012-09-21 11:23:44 +03:00
Mihai Bazon e8da72d304 drop unused variables 2012-09-19 12:27:38 +03:00
Mihai Bazon a4d2340c73 fixed label scope/mangling 2012-09-18 19:26:46 +03:00
Mihai Bazon 669874d46b minor 2012-09-18 14:17:23 +03:00
Mihai Bazon 3da0ac4897 support for directives 2012-09-18 13:21:09 +03:00
Mihai Bazon 21968285e8 added AST_NaN (output as 0/0) 2012-09-18 10:53:46 +03:00
Mihai Bazon d91613b4a8 only do the typeof x == "undefined" optimization if x is a symbol reference and it's declared in scope, or x is not a symbol reference. 2012-09-17 20:02:57 +03:00
Mihai Bazon ee669ba878 moved typeof foo == "undefined" ==> foo === undefined under --unsafe
because https://github.com/mishoo/UglifyJS2/commit/43fd45154bac89b89330e13bd1f167e2a927a23c#commitcomment-1864505
2012-09-17 18:49:52 +03:00
Mihai Bazon e370e3b5a4 fix .undeclared (it's now a function) 2012-09-17 15:06:06 +03:00
Mihai Bazon 6ad414ef28 minor 2012-09-17 14:33:36 +03:00
Mihai Bazon 92e22c460d possible optimization for AST_Undefined
if undefined is defined, ;-), we replace AST_Undefined nodes to a reference
to the "undefined" variable; in turn the mangler will compress it to a
single letter; this helps at least on jQuery.
2012-09-17 12:27:32 +03:00
Mihai Bazon 14481de0e9 empty block to empty statement: {} ==> ; 2012-09-17 12:03:02 +03:00
Mihai Bazon 07f1d56f69 more smallish optimizations 2012-09-17 11:50:35 +03:00
Mihai Bazon 5e60a60b3b try negating AST_Binary 2012-09-17 11:16:44 +03:00
Mihai Bazon 5d781ec6f8 some cleanup 2012-09-16 18:10:54 +03:00