Commit Graph

1765 Commits

Author SHA1 Message Date
Mihai Bazon 50b8d7272c Fix faulty compression
`String(x + 5)` is not always the same as `x + "5"`.  Overlooked that. :-(

Close #350
2013-11-20 21:13:16 +02:00
Mihai Bazon 7d11b96f48 Only descend twice after drop_unused if it's the same node type.
Fix #345
2013-11-08 11:57:17 +02:00
Mihai Bazon eab99a1c3d Better fix for #343
We can in fact lift sequences, but only if the operation is assignment and
the left-hand side has no side effects nor property access -- that should
guarantee that whatever we place before it cannot affect the sense of the
assignment.

Dropped contrived test case (too hard to support it now), added a more
meaningful one.
v2.4.3
2013-11-06 10:48:48 +02:00
Mihai Bazon 19e2fb134d v2.4.3 2013-11-06 10:21:29 +02:00
Mihai Bazon f4919e3a25 Do not lift sequence from right-hand side of binary operation. Fix #343 2013-11-06 10:18:28 +02:00
Mihai Bazon bb700daa4c v2.4.2 v2.4.2 2013-11-03 23:41:07 +02:00
Mihai Bazon 263577d5eb [README] Fix #278 2013-10-30 14:13:30 +02:00
Mihai Bazon 63287c0e68 Workaround for Safari bug
Close #313
2013-10-30 13:59:59 +02:00
Mihai Bazon c5ed2292bf Fix 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
2013-10-30 11:50:22 +02:00
Mihai Bazon b70670b69f Fix regression after e4c5302406
`x * (y * z)` ==> `x * y * z` -- the better place to do this is in the
compressor rather than codegen.
2013-10-30 10:45:58 +02:00
Mihai Bazon 9dd97605bc indentation 2013-10-30 10:44:50 +02:00
Mihai Bazon e4c5302406 Fix output for x = 2 * (a % b / b * c)
(issue #337)
2013-10-30 09:11:55 +02:00
Mihai Bazon bea3d90771 minor 2013-10-30 09:10:56 +02:00
Richard van Velzen 785c6064cc Disallow reversal where lhs has higher or equal precedence
Fixes #267
2013-10-29 21:37:36 +01:00
Mihai Bazon b214d3786f Fix typo 2013-10-29 15:53:54 +02:00
Mihai Bazon 7cf79c302b Fix reading arguments
i.e. read `-c unsafe,unsafe-comps` as `-c unsafe=true,unsafe_comps=true`
2013-10-29 14:01:26 +02:00
Mihai Bazon a14c6b6574 Avoid shadowing name of function expression with function argument
Close #179, #326, #327
2013-10-29 13:18:09 +02:00
Mihai Bazon f1b7094a57 Add "preamble" output option
Close #335
2013-10-29 11:09:18 +02:00
Mihai Bazon 0358e376f0 Fix codegen for when comments_before is undefined.
Fix #333
2013-10-28 09:39:29 +02:00
Mihai Bazon b47f7b76b9 Merge branch 'master' of github.com:mishoo/UglifyJS2 2013-10-27 10:03:01 +02:00
Mihai Bazon 582cc55cff Display number of failed tests and corresponding files 2013-10-27 10:02:44 +02:00
Mihai Bazon 8979579e55 Merge pull request #330 from markjaquith/master
Unit test to detect issue in 8d14efe for #126 that causes aggressive parenthesis removal, functional differences
2013-10-27 01:01:57 -07:00
Mihai Bazon 0d6e08c541 Merge pull request #331 from rvanvelzen/rhs-strings-fix
Fix RHS concat (raised in #330)
2013-10-27 01:01:11 -07:00
Richard van Velzen e2daee9a65 Fix RHS concat (raised in #330)
When attempting to concat the left-side of the rhs, make sure the rhs is
a string.
2013-10-26 18:44:52 +02:00
Mark Jaquith 9cd118ca3d Add a unit test for issue-126
Add a unit test to test to test for aggressive parenthesis removal that causes functional changes.
2013-10-25 16:28:15 -04:00
Mihai Bazon cfd5c6155c Merge pull request #325 from rvanvelzen/fix-269
Fix #269
2013-10-24 02:39:07 -07:00
Richard van Velzen 1a5a4bd631 Fix #269
Shorten most primitives where possible. Also optimize some edge cases.
2013-10-24 11:08:33 +02:00
Mihai Bazon 63e1a8e1fd Merge pull request #323 from rvanvelzen/undefined-drop-vars-fix
Fix #280
2013-10-23 13:58:09 -07:00
Richard van Velzen 7055af8221 Fix #280
The `init` of the `ForStatement` is not a `BlockStatement` before it was
descended. The descend has to happen first, and *then* the actual
checks.
2013-10-23 22:26:04 +02:00
Mihai Bazon aafe2e1db3 Merge pull request #322 from rvanvelzen/test-exit-code-1
Add an exit code to the test suite
2013-10-23 11:37:36 -07:00
Richard van Velzen 118105db43 Add an exit code to the test suite
By adding the exit code 1 (or any other non-zero exit code) `npm test`
will know the tests didn't perform correctly. This way it's easier to
know if pull requests are good or bad.
2013-10-23 20:24:58 +02:00
Mihai Bazon 63d04fff69 Revert #3a81f60 for now
(with it some tests break and it can generate invalid output, see issue #44)
v2.4.1
2013-10-22 21:50:55 +03:00
Mihai Bazon 8c9cc920fb v2.4.1 2013-10-22 21:31:01 +03:00
Mihai Bazon d09f0adae3 arguments outside of a function is an ordinary variable.
Fix #501
2013-10-17 18:20:33 +03:00
Mihai Bazon 3fa9265ce4 wrap up 2013-10-09 22:15:43 +03:00
Mihai Bazon 3a81f60982 Don't drop_unused before compression.
Fix #280, #282
2013-10-09 19:15:09 +03:00
Mihai Bazon f2348dd98b Rename clean_getters to pure_getters; add pure_funcs. 2013-10-04 13:17:25 +03:00
Mihai Bazon 253c7c2325 Merge pull request #308 from meteor/fix-unicode-keys
Only allow identifier start characters at the beginning of identifiers.
2013-10-04 00:13:52 -07:00
David Glasser bb0a762d12 Only allow identifier start characters at the beginning of identifiers.
Without this fix, the following source:

   x = {"\u200c": 42};

would incorrectly be converted into a quoteless key. But while \u200c is allowed
to be in identifiers, it cannot be at the beginning, as per ES5.

(For example, the SockJS client library doesn't work under uglify starting with
d9ad3c7c.)
2013-10-03 17:02:19 -07:00
Mihai Bazon 8cc86fee60 add clean_getters compressor option (default false)
allows one to specify if `foo.bar` is considered to have side effects.
2013-10-02 19:38:01 +03:00
Mihai Bazon 88fb83aa81 minor optimization
unlikely to help in hand-written code:

    (something() ? foo : bar) == foo  ==>  something()
2013-10-02 15:31:31 +03:00
Mihai Bazon 95b4507c02 Fix error in the output minifying Function("return this")() 2013-09-30 11:49:29 +03:00
Mihai Bazon afdaeba37d More attempts to determine when addition is associative
Somebody hit me with bug reports on this. :)

Refs #300
2013-09-22 15:26:10 +03:00
Mihai Bazon 037199bfe2 Actually let's move away those monsters from the evaluate function
ev() should do a single thing — evaluate constant expressions.  if that's
not possible, just return the original node.  it's not the best place for
partial evaluation there, instead doing it in the compress functions.
2013-09-22 15:00:42 +03:00
Mihai Bazon 583fac0a0f More dirty handling of [ ... ].join() in unsafe mode
Close #300
2013-09-22 13:14:42 +03:00
Dan Wolff e8158279ff Evaluate [...].join() if possible: minor bugfix
Follow-up to 78e98d2.
2013-09-22 11:34:30 +03:00
Mihai Bazon 78e98d2611 When unsafe is set, evaluate [...].join() if possible
Close #298
2013-09-19 18:20:45 +03:00
Dan Wolff 8d14efe818 Concatenate strings also on the right-hand side of an expression that cannot be evaluated. Fix #126
E.g. converts:
  a+'Hello'+'World'
to
  a+'HelloWorld'
2013-09-19 13:03:03 +03:00
Mihai Bazon 83ba338bd0 Avoid printing <!-- in the output (HTML5 comment) 2013-09-06 10:10:45 +03:00
Mihai Bazon 7c10b25346 Support HTML5 comment syntax (enabled by default!)
See http://javascript.spec.whatwg.org/#comment-syntax
    https://github.com/mishoo/UglifyJS/issues/503
    https://github.com/marijnh/acorn/issues/62
2013-09-06 09:54:30 +03:00