Age | Commit message (Collapse) | Author |
|
This should simplify and improve implementation, make it easier to
implement template strings, and keep master a bit more in sync with
harmony.
Previous implementation wasn't broken, though the loop gave me the
impression it could read infinite numbers and annoyed me a bit. It was
also slightly unnecessary because the lookup involved only 3 characters.
|
|
|
|
* Don't interpret strings with escaped content as directive
* Don't interpret strings after empty statement as directive
* Adapt output to prevent strings being represent as directive
* Introduce UGLIFY_DEBUG to allow internal testing like EXPECT_DIRECTIVE
|
|
|
|
Adds a directive tracker for the parser/tokenizer to
allow parsing depending on directive context.
|
|
|
|
Fixes #1050
|
|
Fixes #993
|
|
Would previously occur in large generated functions with 21,000+ variables.
Fixes #986.
|
|
Fixes #919
Fix provided by @kzc
|
|
|
|
|
|
|
|
(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
|
|
i.e. `x = 1.xe` — because parseFloat("1.xe") returns 1, this parsed as
`x = 1`.
Ref #857
|
|
`parseFloat` will return `NaN` for invalid numbers anyway, which is the check used to throw the parse error.
Fixes #857
|
|
SCOPE_IS_NEEDED is unconditionally true now. Refactored floating point literal parsing to be more in keeping with the AST class design.
|
|
"use asm"; sections and preserve floating point literals in their original form. Non-asm.js sections are optimized as before. Asm.js sections can still be mangled and minified of whitespace. No special command line flags are required.
|
|
|
|
Fixes #739
|
|
|
|
|
|
Fix #714
|
|
Close #704
|
|
(should not set newline_before)
Fix #693
|
|
(they should be treated as whitespace)
|
|
It would be nice to have access to the filename of the file that includes the code that causes a JavaScript error. This is especially handy if uglifying multiple files at once.
Only a small change is needed for this to happen as it's already available in the function that throws the error.
|
|
`-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.
|
|
|
|
|
|
|
|
Close #437
|
|
Close #288
|
|
Fix #328
|
|
|
|
|
|
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
|
|
|
|
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.)
|
|
See http://javascript.spec.whatwg.org/#comment-syntax
https://github.com/mishoo/UglifyJS/issues/503
https://github.com/marijnh/acorn/issues/62
|
|
|
|
Simplifies handling of labels (their definition/references can be easily
figured out at parse time, no need to do it in `figure_out_scope`).
|
|
|
|
Close #286
|
|
++/x/.y
Fix #284
|
|
|
|
(for parsing embedded scripts)
|
|
Close #239
|
|
|