Age | Commit message (Collapse) | Author |
|
accounts for IE8- scoping
|
|
- convert `[].forEach()` to for-loops
|
|
Makes direct usage within web browser easier, even if officially unsupported.
|
|
Fix #1038
|
|
Fix #1031
|
|
(will only work properly if the SM tree contains "raw" properties for
Literal number nodes)
|
|
It's now available during tree walking, i.e. walker.has_directive("use
asm"), rather than as part of the scope. It's thus no longer necessary
to call `figure_out_scope` before codegen. Added special bits in the
code generator to overcome the fact that it doesn't inherit from
TreeWalker.
Fix #861
|
|
SCOPE_IS_NEEDED is unconditionally true now. Refactored floating point literal parsing to be more in keeping with the AST class design.
|
|
Improves performance 2x on node > 0.10.
Ref #636
|
|
(code could have directives, i.e. "use strict")
|
|
`-q 0` (default) use single or double quotes such as to minimize the number of
bytes (prefers double quotes when both will do); this is the previous
behavior.
`-q 1` -- always use single quotes
`-q 2` -- always use double quotes
`-q 3` or just `-q` -- always use the original quotes.
Related codegen option: `quote_style`.
Close #495
Close #460
Some `yargs` guru please tell me why `uglifyjs --help` doesn't display the
help string for `-q` / `--quotes`, and why it doesn't output the expected
argument types anymore, like good old `optimist` did.
|
|
|
|
|
|
|
|
I hereby acknowledge that figure_out_scope has become a mess.
|
|
Fix #344
|
|
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
|
|
|
|
|
|
Simplifies handling of labels (their definition/references can be easily
figured out at parse time, no need to do it in `figure_out_scope`).
|
|
Refs #167
|
|
|
|
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.
|
|
|
|
|
|
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
|
|
expressions so that we can avoid parens)
|
|
|
|
operations are destructive anyway, so there's no point to clone the nodes in
the transformer. speed++
|
|
|
|
- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
|
|
|
|
|
|
- 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
|
|
|
|
hopefully we can make the AST documentation self-generating
|
|
|
|
displays a rather cruel description of the AST classes, derived
directly from the node definitions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
referenced and have no side effects
|
|
- use a single AST_Toplevel node for all files
- keep original source filename in the tokens
|
|
|
|
|
|
|