UglifyJS.git
10 years agoOptimize seq,void 0. Close #377.
Mihai Bazon [Sun, 22 Dec 2013 09:36:45 +0000 (11:36 +0200)]
Optimize seq,void 0.  Close #377.

    (x, void 0)    => void x
    (x, undefined) => void x

10 years agoBetter fix for comments in AST_Exit
Mihai Bazon [Wed, 18 Dec 2013 13:54:12 +0000 (15:54 +0200)]
Better fix for comments in AST_Exit

Close #374

10 years agoTake out all comments from an AST_Exit's value
Mihai Bazon [Wed, 18 Dec 2013 11:30:26 +0000 (13:30 +0200)]
Take out all comments from an AST_Exit's value

Fix #372

10 years agov2.4.8
Mihai Bazon [Wed, 18 Dec 2013 10:10:43 +0000 (12:10 +0200)]
v2.4.8

10 years agoAdd option to adjust the src/target line in the source map
Mihai Bazon [Wed, 18 Dec 2013 10:10:02 +0000 (12:10 +0200)]
Add option to adjust the src/target line in the source map

10 years agominor
Mihai Bazon [Mon, 16 Dec 2013 18:37:09 +0000 (20:37 +0200)]
minor

10 years agoMerge pull request #371 from colorhook/master
Mihai Bazon [Mon, 16 Dec 2013 08:21:07 +0000 (00:21 -0800)]
Merge pull request #371 from colorhook/master

bugfix #242

10 years agobugfix #242
colorhook [Mon, 16 Dec 2013 07:53:43 +0000 (15:53 +0800)]
bugfix #242

10 years agosemicolons
Mihai Bazon [Tue, 10 Dec 2013 18:24:27 +0000 (20:24 +0200)]
semicolons

10 years agoMerge pull request #245 from ForbesLindesay/patch-1
Mihai Bazon [Tue, 10 Dec 2013 18:23:29 +0000 (10:23 -0800)]
Merge pull request #245 from ForbesLindesay/patch-1

Make `DefaultsError` a real `Error` object

10 years agoAdd `drop_console` option to the compressor
Mihai Bazon [Tue, 10 Dec 2013 17:44:41 +0000 (19:44 +0200)]
Add `drop_console` option to the compressor

10 years agominor
Mihai Bazon [Tue, 10 Dec 2013 17:39:03 +0000 (19:39 +0200)]
minor

10 years agov2.4.7
Mihai Bazon [Mon, 9 Dec 2013 10:09:31 +0000 (12:09 +0200)]
v2.4.7

10 years agoAST_Catch shouldn't really inherit from AST_Scope. Fix #363
Mihai Bazon [Thu, 5 Dec 2013 11:30:29 +0000 (13:30 +0200)]
AST_Catch shouldn't really inherit from AST_Scope.  Fix #363

I hereby acknowledge that figure_out_scope has become a mess.

10 years agoProperly scope `catch` identifier when --screw-ie8
Mihai Bazon [Thu, 28 Nov 2013 14:43:30 +0000 (16:43 +0200)]
Properly scope `catch` identifier when --screw-ie8

Fix #344

10 years agov2.4.6, because npm is foobar
Mihai Bazon [Thu, 28 Nov 2013 13:05:32 +0000 (15:05 +0200)]
v2.4.6, because npm is foobar

10 years agov2.4.5
Mihai Bazon [Thu, 28 Nov 2013 11:15:27 +0000 (13:15 +0200)]
v2.4.5

10 years agoAdd --noerr to turn off argument name checking
Mihai Bazon [Thu, 28 Nov 2013 11:15:01 +0000 (13:15 +0200)]
Add --noerr to turn off argument name checking

for now only used for keys passed to `-c` or `-b`.

10 years agov2.4.4
Mihai Bazon [Wed, 27 Nov 2013 12:24:26 +0000 (14:24 +0200)]
v2.4.4

10 years agoFix faulty compression
Mihai Bazon [Wed, 20 Nov 2013 19:13:16 +0000 (21:13 +0200)]
Fix faulty compression

`String(x + 5)` is not always the same as `x + "5"`.  Overlooked that. :-(

Close #350

10 years agoOnly descend twice after drop_unused if it's the same node type.
Mihai Bazon [Fri, 8 Nov 2013 09:57:17 +0000 (11:57 +0200)]
Only descend twice after drop_unused if it's the same node type.

Fix #345

10 years agoBetter fix for #343
Mihai Bazon [Wed, 6 Nov 2013 08:47:36 +0000 (10:47 +0200)]
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.

10 years agov2.4.3
Mihai Bazon [Wed, 6 Nov 2013 08:21:29 +0000 (10:21 +0200)]
v2.4.3

10 years agoDo not lift sequence from right-hand side of binary operation. Fix #343
Mihai Bazon [Wed, 6 Nov 2013 08:18:28 +0000 (10:18 +0200)]
Do not lift sequence from right-hand side of binary operation.  Fix #343

10 years agov2.4.2
Mihai Bazon [Sun, 3 Nov 2013 21:41:07 +0000 (23:41 +0200)]
v2.4.2

10 years ago[README] Fix #278
Mihai Bazon [Wed, 30 Oct 2013 12:13:10 +0000 (14:13 +0200)]
[README] Fix #278

10 years agoWorkaround for Safari bug
Mihai Bazon [Wed, 30 Oct 2013 11:59:59 +0000 (13:59 +0200)]
Workaround for Safari bug

Close #313

10 years agoFix parsing setters/getters (allow keywords for name).
Mihai Bazon [Wed, 30 Oct 2013 09:50:22 +0000 (11:50 +0200)]
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

10 years agoFix regression after e4c530240650535d1cb46569dfb013193471af05
Mihai Bazon [Wed, 30 Oct 2013 08:45:58 +0000 (10:45 +0200)]
Fix regression after e4c530240650535d1cb46569dfb013193471af05

`x * (y * z)` ==> `x * y * z` -- the better place to do this is in the
compressor rather than codegen.

10 years agoindentation
Mihai Bazon [Wed, 30 Oct 2013 08:44:50 +0000 (10:44 +0200)]
indentation

10 years agoFix output for `x = 2 * (a % b / b * c)`
Mihai Bazon [Wed, 30 Oct 2013 07:11:55 +0000 (09:11 +0200)]
Fix output for `x = 2 * (a % b / b * c)`

(issue #337)

10 years agominor
Mihai Bazon [Wed, 30 Oct 2013 07:10:56 +0000 (09:10 +0200)]
minor

10 years agoDisallow reversal where lhs has higher or equal precedence
Richard van Velzen [Tue, 29 Oct 2013 20:37:36 +0000 (21:37 +0100)]
Disallow reversal where lhs has higher or equal precedence

Fixes #267

10 years agoFix typo
Mihai Bazon [Tue, 29 Oct 2013 13:53:54 +0000 (15:53 +0200)]
Fix typo

10 years agoFix reading arguments
Mihai Bazon [Tue, 29 Oct 2013 12:01:26 +0000 (14:01 +0200)]
Fix reading arguments

i.e. read `-c unsafe,unsafe-comps` as `-c unsafe=true,unsafe_comps=true`

10 years agoAvoid shadowing name of function expression with function argument
Mihai Bazon [Tue, 29 Oct 2013 11:18:09 +0000 (13:18 +0200)]
Avoid shadowing name of function expression with function argument

Close #179, #326, #327

10 years agoAdd "preamble" output option
Mihai Bazon [Tue, 29 Oct 2013 08:43:43 +0000 (10:43 +0200)]
Add "preamble" output option

Close #335

10 years agoFix codegen for when comments_before is undefined.
Mihai Bazon [Mon, 28 Oct 2013 07:39:29 +0000 (09:39 +0200)]
Fix codegen for when comments_before is undefined.

Fix #333

10 years agoMerge branch 'master' of github.com:mishoo/UglifyJS2
Mihai Bazon [Sun, 27 Oct 2013 08:03:01 +0000 (10:03 +0200)]
Merge branch 'master' of github.com:mishoo/UglifyJS2

10 years agoDisplay number of failed tests and corresponding files
Mihai Bazon [Sun, 27 Oct 2013 08:02:44 +0000 (10:02 +0200)]
Display number of failed tests and corresponding files

10 years agoMerge pull request #330 from markjaquith/master
Mihai Bazon [Sun, 27 Oct 2013 08:01:57 +0000 (01:01 -0700)]
Merge pull request #330 from markjaquith/master

Unit test to detect issue in 8d14efe for #126 that causes aggressive parenthesis removal, functional differences

10 years agoMerge pull request #331 from rvanvelzen/rhs-strings-fix
Mihai Bazon [Sun, 27 Oct 2013 08:01:11 +0000 (01:01 -0700)]
Merge pull request #331 from rvanvelzen/rhs-strings-fix

Fix RHS concat (raised in #330)

10 years agoFix RHS concat (raised in #330)
Richard van Velzen [Sat, 26 Oct 2013 16:44:52 +0000 (18:44 +0200)]
Fix RHS concat (raised in #330)

When attempting to concat the left-side of the rhs, make sure the rhs is
a string.

10 years agoAdd a unit test for issue-126
Mark Jaquith [Fri, 25 Oct 2013 20:28:15 +0000 (16:28 -0400)]
Add a unit test for issue-126

Add a unit test to test to test for aggressive parenthesis removal that causes functional changes.

10 years agoMerge pull request #325 from rvanvelzen/fix-269
Mihai Bazon [Thu, 24 Oct 2013 09:39:07 +0000 (02:39 -0700)]
Merge pull request #325 from rvanvelzen/fix-269

Fix #269

10 years agoFix #269
Richard van Velzen [Thu, 24 Oct 2013 09:08:33 +0000 (11:08 +0200)]
Fix #269

Shorten most primitives where possible. Also optimize some edge cases.

10 years agoMerge pull request #323 from rvanvelzen/undefined-drop-vars-fix
Mihai Bazon [Wed, 23 Oct 2013 20:58:09 +0000 (13:58 -0700)]
Merge pull request #323 from rvanvelzen/undefined-drop-vars-fix

Fix #280

10 years agoFix #280
Richard van Velzen [Wed, 23 Oct 2013 20:26:04 +0000 (22:26 +0200)]
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.

10 years agoMerge pull request #322 from rvanvelzen/test-exit-code-1
Mihai Bazon [Wed, 23 Oct 2013 18:37:36 +0000 (11:37 -0700)]
Merge pull request #322 from rvanvelzen/test-exit-code-1

Add an exit code to the test suite

10 years agoAdd an exit code to the test suite
Richard van Velzen [Wed, 23 Oct 2013 18:24:58 +0000 (20:24 +0200)]
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.

10 years agoRevert #3a81f60 for now
Mihai Bazon [Tue, 22 Oct 2013 18:49:33 +0000 (21:49 +0300)]
Revert #3a81f60 for now

(with it some tests break and it can generate invalid output, see issue #44)

10 years agov2.4.1
Mihai Bazon [Tue, 22 Oct 2013 18:31:01 +0000 (21:31 +0300)]
v2.4.1

10 years ago`arguments` outside of a function is an ordinary variable.
Mihai Bazon [Thu, 17 Oct 2013 15:20:33 +0000 (18:20 +0300)]
`arguments` outside of a function is an ordinary variable.

Fix #501

10 years agowrap up
Mihai Bazon [Wed, 9 Oct 2013 19:15:43 +0000 (22:15 +0300)]
wrap up

10 years agoDon't drop_unused before compression.
Mihai Bazon [Wed, 9 Oct 2013 16:15:09 +0000 (19:15 +0300)]
Don't drop_unused before compression.

Fix #280, #282

10 years agoRename clean_getters to pure_getters; add pure_funcs.
Mihai Bazon [Fri, 4 Oct 2013 10:17:25 +0000 (13:17 +0300)]
Rename clean_getters to pure_getters; add pure_funcs.

10 years agoMerge pull request #308 from meteor/fix-unicode-keys
Mihai Bazon [Fri, 4 Oct 2013 07:13:52 +0000 (00:13 -0700)]
Merge pull request #308 from meteor/fix-unicode-keys

Only allow identifier start characters at the beginning of identifiers.

10 years agoOnly allow identifier start characters at the beginning of identifiers.
David Glasser [Fri, 4 Oct 2013 00:02:19 +0000 (17:02 -0700)]
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.)

10 years agoadd `clean_getters` compressor option (default `false`)
Mihai Bazon [Wed, 2 Oct 2013 16:33:45 +0000 (19:33 +0300)]
add `clean_getters` compressor option (default `false`)

allows one to specify if `foo.bar` is considered to have side effects.

10 years agominor optimization
Mihai Bazon [Wed, 2 Oct 2013 12:31:31 +0000 (15:31 +0300)]
minor optimization

unlikely to help in hand-written code:

    (something() ? foo : bar) == foo  ==>  something()

10 years agoFix error in the output minifying `Function("return this")()`
Mihai Bazon [Mon, 30 Sep 2013 08:49:29 +0000 (11:49 +0300)]
Fix error in the output minifying `Function("return this")()`

11 years agoMore attempts to determine when addition is associative
Mihai Bazon [Sun, 22 Sep 2013 12:26:10 +0000 (15:26 +0300)]
More attempts to determine when addition is associative

Somebody hit me with bug reports on this. :)

Refs #300

11 years agoActually let's move away those monsters from the evaluate function
Mihai Bazon [Sun, 22 Sep 2013 11:54:32 +0000 (14:54 +0300)]
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.

11 years agoMore dirty handling of [ ... ].join() in unsafe mode
Mihai Bazon [Sun, 22 Sep 2013 10:12:34 +0000 (13:12 +0300)]
More dirty handling of [ ... ].join() in unsafe mode

Close #300

11 years agoEvaluate [...].join() if possible: minor bugfix
Dan Wolff [Fri, 20 Sep 2013 04:24:25 +0000 (06:24 +0200)]
Evaluate [...].join() if possible: minor bugfix

Follow-up to 78e98d2.

11 years agoWhen `unsafe` is set, evaluate [...].join() if possible
Mihai Bazon [Thu, 19 Sep 2013 15:20:45 +0000 (18:20 +0300)]
When `unsafe` is set, evaluate [...].join() if possible

Close #298

11 years agoConcatenate strings also on the right-hand side of an expression that cannot be evalu...
Dan Wolff [Thu, 19 Sep 2013 08:58:50 +0000 (10:58 +0200)]
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'

11 years agoAvoid printing <!-- in the output (HTML5 comment)
Mihai Bazon [Fri, 6 Sep 2013 07:10:45 +0000 (10:10 +0300)]
Avoid printing <!-- in the output (HTML5 comment)

11 years agoSupport HTML5 comment syntax (enabled by default!)
Mihai Bazon [Fri, 6 Sep 2013 06:54:30 +0000 (09:54 +0300)]
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

11 years agominor
Mihai Bazon [Fri, 6 Sep 2013 06:52:56 +0000 (09:52 +0300)]
minor

11 years agoFix names.
Mihai Bazon [Mon, 2 Sep 2013 16:38:00 +0000 (19:38 +0300)]
Fix names.

11 years agoDisallow `continue` referring to a non-IterationStatement. Fix #287
Mihai Bazon [Mon, 2 Sep 2013 16:36:16 +0000 (19:36 +0300)]
Disallow `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`).

11 years agoBetter fix for #286
Mihai Bazon [Mon, 2 Sep 2013 08:36:48 +0000 (11:36 +0300)]
Better fix for #286

11 years agoFix parsing `a.case /= 1`
Mihai Bazon [Mon, 2 Sep 2013 08:09:54 +0000 (11:09 +0300)]
Fix parsing `a.case /= 1`

Close #286

11 years agoFix parsing regexp after unary-prefix operator
Mihai Bazon [Mon, 2 Sep 2013 06:56:27 +0000 (09:56 +0300)]
Fix parsing regexp after unary-prefix operator

++/x/.y

Fix #284

11 years agoBetter reporting of parse errors
Mihai Bazon [Mon, 2 Sep 2013 06:55:34 +0000 (09:55 +0300)]
Better reporting of parse errors

11 years agov2.4.0
Mihai Bazon [Thu, 22 Aug 2013 12:06:42 +0000 (15:06 +0300)]
v2.4.0

11 years agoRemove --ie-proof from the readme.
Mihai Bazon [Thu, 22 Aug 2013 07:10:25 +0000 (10:10 +0300)]
Remove --ie-proof from the readme.

Fix #276

11 years agoMove support for `negate_iife` in the compressor, rather than code generator
Mihai Bazon [Tue, 20 Aug 2013 14:45:52 +0000 (17:45 +0300)]
Move support for `negate_iife` in the compressor, rather than code generator

(the code generator doesn't maintain enough context to know whether
the return value is important or discarded)

Fixes #272

11 years agoMerge pull request #270 from michaelficarra/GH-259
Mihai Bazon [Mon, 19 Aug 2013 07:21:08 +0000 (00:21 -0700)]
Merge pull request #270 from michaelficarra/GH-259

fixes #259: don't unnecessarily quote object properties when --screw-ie8

11 years agofixes #259: don't unnecessarily quote object properties when --screw-ie8
Michael Ficarra [Mon, 19 Aug 2013 00:45:06 +0000 (19:45 -0500)]
fixes #259: don't unnecessarily quote object properties when --screw-ie8

11 years agofix usage
Mihai Bazon [Thu, 8 Aug 2013 06:15:13 +0000 (09:15 +0300)]
fix usage

11 years agoDon't drop unused setter argument.
Mihai Bazon [Wed, 7 Aug 2013 09:04:58 +0000 (12:04 +0300)]
Don't drop unused setter argument.

Fix #257

11 years agoSupport `-p relative`. Fix #256
Mihai Bazon [Wed, 7 Aug 2013 08:43:47 +0000 (11:43 +0300)]
Support `-p relative`.  Fix #256

11 years agoAdd support for browserify
Forbes Lindesay [Thu, 1 Aug 2013 04:51:09 +0000 (05:51 +0100)]
Add support for browserify

11 years agoDon't pretend to evaluate lambdas
Mihai Bazon [Sun, 4 Aug 2013 18:44:17 +0000 (21:44 +0300)]
Don't pretend to evaluate lambdas

Fix #255

11 years agoFix #251
Mihai Bazon [Tue, 30 Jul 2013 09:16:29 +0000 (12:16 +0300)]
Fix #251

11 years agoDon't require arguments to --enclose
Mihai Bazon [Sun, 28 Jul 2013 08:11:11 +0000 (11:11 +0300)]
Don't require arguments to --enclose

11 years agoReverting "added option for dropping unused params"
Mihai Bazon [Thu, 25 Jul 2013 15:08:36 +0000 (18:08 +0300)]
Reverting "added option for dropping unused params"
Revert "added option for dropping unused params"

(turns out we already had the `unused` option for this.)

This reverts commit e54df2226f7f3887d2f850cea8caf5c0353dce00.

11 years agoadded option for dropping unused params
Dusan Bartos [Thu, 25 Jul 2013 13:32:21 +0000 (15:32 +0200)]
added option for dropping unused params

11 years agoMake `DefaultsError` a real `Error` object
Forbes Lindesay [Mon, 22 Jul 2013 00:44:03 +0000 (01:44 +0100)]
Make `DefaultsError` a real `Error` object

11 years agoFix output for arrays whose last element is a hole: [1,,]
David Glasser [Wed, 16 Jan 2013 19:59:19 +0000 (14:59 -0500)]
Fix output for arrays whose last element is a hole: [1,,]

1529ab96 started to do this (by considering holes to be separate from
"undefined") but it still converted
   [1,,]    (length 2, last element hole, trailing comma)
to
   [1,]     (length 1, trailing comma)

Unfortunately the test suite doesn't really make this clear: the new test here
passes with or without this patch because run-tests.js beautifys the expected
output (in "make_code"), which does the incorrect transformation! If you make
some manual change to arrays.js to make the test fail and see the INPUT and
OUTPUT, then you can see that without this fix, [1,,] -> [1,], and with this fix
it stays [1,,].

11 years agoRevert previous patch, it was no good.
Mihai Bazon [Mon, 15 Jul 2013 08:59:23 +0000 (11:59 +0300)]
Revert previous patch, it was no good.

11 years agoAdd "position" option to parser, to specify initial pos/line/col
Mihai Bazon [Mon, 15 Jul 2013 08:27:11 +0000 (11:27 +0300)]
Add "position" option to parser, to specify initial pos/line/col

(for parsing embedded scripts)

11 years agoApply transformer to AST_VarDef's name
Mihai Bazon [Sun, 14 Jul 2013 10:24:09 +0000 (13:24 +0300)]
Apply transformer to AST_VarDef's name

Fix #237

11 years agoFix typo.
Mihai Bazon [Fri, 12 Jul 2013 06:56:58 +0000 (09:56 +0300)]
Fix typo.

Close #239

11 years agoReset the base54 counters every time minify is called.
Mihai Bazon [Fri, 28 Jun 2013 07:08:13 +0000 (10:08 +0300)]
Reset the base54 counters every time minify is called.

Close #229

11 years agoDon't swap binary ops when "use asm" is in effect.
Mihai Bazon [Fri, 7 Jun 2013 09:51:23 +0000 (12:51 +0300)]
Don't swap binary ops when "use asm" is in effect.

Refs #167

11 years agoMerge pull request #220 from lautis/escape-null
Mihai Bazon [Mon, 3 Jun 2013 18:10:14 +0000 (11:10 -0700)]
Merge pull request #220 from lautis/escape-null

Escape null characters as \x00

11 years agoEscape null characters as \x00
Ville Lautanala [Mon, 3 Jun 2013 17:18:42 +0000 (20:18 +0300)]
Escape null characters as \x00

Since \0 might be mistakenly interpreted as octal if followed by a
number and using literal null is in some cases interpreted as end of
string, escape null as \x00.