aboutsummaryrefslogtreecommitdiff
path: root/lib/parse.js
AgeCommit message (Collapse)Author
2016-05-04Handle CR line endings in comments.kzc
Fixes #1050
2016-04-16Parse comments without recursion to avoid RangeError.kzc
Fixes #993
2016-03-15Do not produce `let` as a variable name in mangle.kzc
Would previously occur in large generated functions with 21,000+ variables. Fixes #986.
2016-01-19Allow operator names as getters/settersAnthony Van de Gejuchte
Fixes #919 Fix provided by @kzc
2015-12-27Fix ch that could contain other newline charactersAnthony Van de Gejuchte
2015-12-26Do not allow newlines in string literalsAnthony Van de Gejuchte
2015-12-17Semicolon after do...while statement is optionalAnthony Van de Gejuchte
2015-11-12Fix output for "use asm" code from SpiderMonkey ASTMihai Bazon
(will only work properly if the SM tree contains "raw" properties for Literal number nodes)
2015-11-11Rework has_directiveMihai Bazon
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
2015-11-09Fix parsing invalid inputMihai Bazon
i.e. `x = 1.xe` — because parseFloat("1.xe") returns 1, this parsed as `x = 1`. Ref #857
2015-11-09Prevent ReDoS by not using a regexp to verify floating point numbersRichard van Velzen
`parseFloat` will return `NaN` for invalid numbers anyway, which is the check used to throw the parse error. Fixes #857
2015-10-07Fix handling of "use asm" when no command line flags are passed to uglifyjs. ↵kzc
SCOPE_IS_NEEDED is unconditionally true now. Refactored floating point literal parsing to be more in keeping with the AST class design.
2015-10-07Add proper support for "use asm"; blocks. Disable -c optimization within ↵kzc
"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.
2015-10-06Implement shebang supportAnthony Van de Gejuchte
2015-08-27Fix bad parsing of `new new x()()` constructsRichard van Velzen
Fixes #739
2015-07-29Re-use the caught exception's error message in the parse error call.Chris Cowan
2015-07-29Give a good error message if an invalid regular expression is found.Chris Cowan
2015-05-20Treat \uFEFF as whitespace.Mihai Bazon
Fix #714
2015-05-05Only drop the BOM when it's the first character.Mihai Bazon
Close #704
2015-04-23Fix parsing strings with literal DOS newlinesMihai Bazon
(should not set newline_before) Fix #693
2015-03-18Fix parsing for U+2028 / U+2029Mihai Bazon
(they should be treated as whitespace)
2015-02-11Add filename to the JS_Parse_Error exception.Edward Casbon
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.
2015-01-27Add option to preserve/enforce string quote styleMihai Bazon
`-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.
2015-01-20Add unicode digit parsing supportAnthony Van de Gejuchte
2015-01-20Update unicode letterAnthony Van de Gejuchte
2015-01-06Track ending lines/columns; fix end locations in Mozilla AST.Ingvar Stepanyan
2015-01-05Fix handling \r\nMihai Bazon
Close #437
2014-10-20Add option to allow return outside of functions.Mihai Bazon
Close #288
2014-04-18Always quote property names that contain non-ASCII characters.Mihai Bazon
Fix #328
2014-01-21Fix end token for conditionals. Close #404Mihai Bazon
2013-12-22Mark `yield` as reserved word. Close #375.Mihai Bazon
2013-10-30Fix parsing setters/getters (allow keywords for name).Mihai Bazon
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
2013-10-30minorMihai Bazon
2013-10-03Only allow identifier start characters at the beginning of identifiers.David Glasser
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.)
2013-09-06Support HTML5 comment syntax (enabled by default!)Mihai Bazon
See http://javascript.spec.whatwg.org/#comment-syntax https://github.com/mishoo/UglifyJS/issues/503 https://github.com/marijnh/acorn/issues/62
2013-09-02Fix names.Mihai Bazon
2013-09-02Disallow `continue` referring to a non-IterationStatement. Fix #287Mihai Bazon
Simplifies handling of labels (their definition/references can be easily figured out at parse time, no need to do it in `figure_out_scope`).
2013-09-02Better fix for #286Mihai Bazon
2013-09-02Fix parsing `a.case /= 1`Mihai Bazon
Close #286
2013-09-02Fix parsing regexp after unary-prefix operatorMihai Bazon
++/x/.y Fix #284
2013-07-15Revert previous patch, it was no good.Mihai Bazon
2013-07-15Add "position" option to parser, to specify initial pos/line/colMihai Bazon
(for parsing embedded scripts)
2013-07-12Fix typo.Mihai Bazon
Close #239
2013-05-15Add `--expr`, an option to parse a single expression (suitable for JSON)Mihai Bazon
2013-05-14Fix a["1_1"]Mihai Bazon
Close #204
2013-05-09Fix is_assignableMihai Bazon
(not likely to be noticed, it's only used in `strict` parse mode)
2013-05-08Fix property namesMihai Bazon
Close #199
2013-05-07Fixed dot properties not optimizing unicode identifiers. Signed-off-by: ↵Justin Lau
Justin Lau <justin@tclau.com>
2013-03-24Don't print the warning on parse error, just throw a JS_Parse_Error.Mihai Bazon
Fix #159
2013-03-22Keep legit code working even when --screw-ie is not passed.Mihai Bazon
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