Age | Commit message (Expand) | Author |
2013-01-17 | Fix 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-24 | fix #55 | Mihai Bazon |
2012-11-08 | AST_LabelRef no longer inherits from AST_SymbolRef | Mihai Bazon |
2012-11-07 | add 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-22 | more sequence optimizations (lift some sequences above binary/unary expressio... | Mihai Bazon |
2012-10-18 | more optimizations for some break/continue cases | Mihai Bazon |
2012-10-12 | remove the $self hack...operations are destructive anyway, so there's no point to clone the nodes in
the transformer. speed++
| Mihai Bazon |
2012-10-12 | fix in_boolean_context() (two tests were broken) | Mihai Bazon |
2012-10-11 | cleanup...- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
| Mihai Bazon |
2012-10-10 | fix node name | Mihai Bazon |
2012-10-10 | seems cleaner if AST_Label doesn't inherit from AST_SymbolDeclaration | Mihai Bazon |
2012-10-10 | small 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-09 | add AST_Infinity node | Mihai Bazon |
2012-10-09 | added $propdoc to AST nodes and some cleanups...hopefully we can make the AST documentation self-generating
| Mihai Bazon |
2012-10-09 | minor AST cleanup (AST_BlockStatement may inherit from AST_Block) | Mihai Bazon |
2012-10-09 | add `--ast-help`...displays a rather cruel description of the AST classes, derived
directly from the node definitions.
| Mihai Bazon |
2012-10-08 | added --self to easily get a browser-runnable version of UglifyJS | Mihai Bazon |
2012-10-03 | more cleanup (dropped AST_SwitchBlock) | Mihai Bazon |
2012-10-03 | AST cleanup (dropped AST_StatementBase) | Mihai Bazon |
2012-10-02 | "use strict"; | Mihai Bazon |
2012-10-02 | add AST_SymbolConst for names defined with `const` | Mihai Bazon |
2012-09-28 | minor | Mihai Bazon |
2012-09-26 | checkpoint (refactoring, WIP) | Mihai Bazon |
2012-09-23 | properly drop mutually-referring declarations that are not otherwise...referenced and have no side effects
| Mihai Bazon |
2012-09-21 | better 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-18 | fixed label scope/mangling | Mihai Bazon |
2012-09-18 | support for directives | Mihai Bazon |
2012-09-18 | added AST_NaN (output as 0/0) | Mihai Bazon |
2012-09-15 | figure out label targets | Mihai Bazon |
2012-09-14 | more 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-11 | fixed 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-07 | checkpoint | Mihai Bazon |
2012-09-07 | fixed tests (need to drop the toplevel block in "expected" if it's a single s... | Mihai Bazon |
2012-09-05 | cleaned 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-03 | jumps, try and definitions are statements too | Mihai Bazon |
2012-09-03 | an AST_If is too a StatementWithBody | Mihai Bazon |
2012-09-03 | a 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-03 | switch 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-08-28 | docstring for AST_StatementWithBody | Mihai Bazon |
2012-08-28 | fix 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-27 | update (c) years | Mihai Bazon |
2012-08-22 | added license | Mihai Bazon |
2012-08-22 | wrote more of the compressor and added some tests | Mihai Bazon |
2012-08-22 | declare some properties in the node constructor so that they're copied in clone | Mihai Bazon |
2012-08-21 | hint that brackets may be required in AST_BlockStatement | Mihai Bazon |
2012-08-21 | cleaned up some mess and started the actual compressor | Mihai Bazon |
2012-08-21 | some 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-21 | handle labels properly...(they can't be handled the same way as variables in a scope)
| Mihai Bazon |
2012-08-21 | more 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-20 | added mangler and other stuff | Mihai Bazon |