Age | Commit message (Expand) | Author |
2013-03-24 | Don't print the warning on parse error, just throw a JS_Parse_Error....Fix #159
| Mihai Bazon |
2013-03-22 | Keep legit code working even when --screw-ie is not passed....Previously:
Without `--screw-ie`, UglifyJS would always leak names of function
expressions into the containing scope, as if they were function
declarations. That was to emulate IE<9 behavior. Code relying on this
IE bug would continue to work properly after mangling, although it would
only work in IE (since other engines don't share the bug). Sometimes
this broke legitimage code (see #153 and #155).
With `--screw-ie` the names would not be leaked into the current scope,
working properly in legit cases; but still it broke legit code when
running in IE<9 (see #24).
Currently:
Regardless of the `--screw-ie` setting, the names will not be leaked.
Code relying on the IE bug will not work properly after mangling.
<evil laughter here>
Without `--screw-ie`: a hack has been added to the mangler to avoid
using the same name for a function expression and some other variable in
the same scope. This keeps legit code working, at the (negligible,
indeed) cost of one more identifier.
With `--screw-ie` you allow the mangler to name function expressions
with the same identifier as another variable in scope. After mangling
code might break in IE<9.
Oh man, the commit message is longer than the patch.
Fix #153, #155
| Mihai Bazon |
2013-02-01 | Fix end token for Assign nodes | Mihai Bazon |
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-12-22 | Accept string or number as name of an accessor....[not sure I'm happy about this fix]
Reference mishoo/UglifyJS#478
| 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-13 | minor | Mihai Bazon |
2012-10-12 | use AST_Lambda for object setters/getters...so that the optimization that drops the name if unused doesn't apply.
close #12
| Mihai Bazon |
2012-10-11 | fix pos in syntax error exception | Mihai Bazon |
2012-10-11 | stealing more hacks from acorn in the name of speed | Mihai Bazon |
2012-10-11 | using makeComparator from acorn to generate functions that tests whether a...string is keyword, reserved etc.
speeds up the parser a bit, though not spectacular.. still far from acorn.
| Mihai Bazon |
2012-10-11 | cleanup...- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
| Mihai Bazon |
2012-10-09 | make `--comments` keep @cc_on too | 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-04 | removed some unused variables | Mihai Bazon |
2012-10-03 | more cleanup (dropped AST_SwitchBlock) | Mihai Bazon |
2012-10-02 | line numbers start at 1 | Mihai Bazon |
2012-10-02 | "use strict"; | Mihai Bazon |
2012-10-02 | add AST_SymbolConst for names defined with `const` | Mihai Bazon |
2012-09-25 | discard all \uFEFF characters (https://github.com/mishoo/UglifyJS/issues/462) | Mihai Bazon |
2012-09-21 | log filename in parse errors / compressor warnings | 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 | support for directives | 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-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 | 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 | Reverting "minor perf. improvements"...Revert "minor perf. improvements"
This reverts commit 24bfd55a22afd791d4a97694641831cfbd27fb14.
broke the parser somehow; too early to optimize, let's get the other stuff running.
| Mihai Bazon |
2012-09-02 | minor perf. improvements | Mihai Bazon |
2012-08-27 | update (c) years | Mihai Bazon |
2012-08-22 | added license | 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-19 | simple visitor API and code to figure out scope and references | Mihai Bazon |
2012-08-17 | code generator finally seems to work properly | Mihai Bazon |
2012-08-16 | lots'o'fixes in the output routines; still a looong way to go. | Mihai Bazon |
2012-08-16 | codegen and dropped the useless walker | Mihai Bazon |
2012-08-15 | WIP | Mihai Bazon |
2012-06-03 | WIP | Mihai Bazon |
2012-05-27 | Fixes some gotchas....DynarchLIB (660K) now passes parsing in 440ms (about 30% slower than the
parser in UglifyJS v1).
| Mihai Bazon |
2012-05-27 | init repo | Mihai Bazon |