aboutsummaryrefslogtreecommitdiff
path: root/lib/parse.js
AgeCommit message (Collapse)Author
2017-05-17improve `RegExp` handling (#1959)Alex Lam S.L
- remove `options.output.unescape_regexps` - preserve original pattern whenever possible fixes #54 fixes #1929
2017-05-16fix parsing of property access after new line (#1944)Alex Lam S.L
Account for comments when detecting property access in `tokenizer`. fixes #1943
2017-05-15improve keyword-related parser errors (#1941)Alex Lam S.L
fixes #1937
2017-05-15fix & improve coverage of `estree` (#1935)Alex Lam S.L
- fix `estree` conversion of getter/setter - fix non-directive literal in `to_mozilla_ast()` - revamp `test/mozilla-ast.js` - reuse `test/ufuzz.js` for code generation - use `acorn.parse()` for creating `estree` - extend `test/ufuzz.js` for `acorn` workaround - catch variable redefinition - non-trivial literal as directive - adjust options for tolerance Miscellaneous - optional semi-colon when parsing directives fixes #1914 closes #1915
2017-05-14fix bugs with getter/setter (#1926)Alex Lam S.L
- `reduce_vars` - `side_effects` - property access for object - `AST_SymbolAccessor` as key names enhance `test/ufuzz.js` - add object getter & setter - property assignment to setter - avoid infinite recursion in setter - fix & adjust assignment operators - 50% `=` - 25% `+=` - 2.5% each for the rest - avoid "Invalid array length" - fix `console.log()` - bypass getter - curb recursive reference - deprecate `-E`, always report runtime errors
2017-05-12remove support for `const` (#1910)Alex Lam S.L
As this is not part of ES5.
2017-04-23improve parser under "use strict" (#1836)Alex Lam S.L
- `const` without value - `delete` of expression - redefining `arguments` or `eval` extend `test/ufuzz.js` - optionally generate "use strict" - improve handling of test cases with syntax errors - group IIFE generation - generate bare anonymous functions - workaround `console.log()` for `new function()` - generate expressions with `this` fixes #1810
2017-04-19fix parser bugs & CLI reporting (#1827)Alex Lam S.L
fixes #1825
2017-04-15unify CLI & API under `minify()` (#1811)Alex Lam S.L
- rename `screw_ie8` to `ie8` - rename `mangle.except` to `mangle.reserved` - rename `mangle.properties.ignore_quoted` to `mangle.properties.keep_quoted` - compact `sourceMap` options - more stringent verification on input `options` - toplevel shorthands - `ie8` - `keep_fnames` - `toplevel` - `warnings` - support arrays and unquoted string values on CLI - drop `fromString` from `minify()` - `minify()` no longer handles any `fs` operations - unify order of operations for `mangle_properties()` on CLI & API - `bin/uglifyjs` used to `mangle_properties()` before even `Compressor` - `minify()` used to `mangle_properties()` after `Compressor` but before `mangle_names()` - both will now do `Compressor`, `mangle_names()` then `mangle_properties()` - `options.parse` / `--parse` for parser options beyond `bare_returns` - add `mangle.properties.builtins` to disable built-in reserved list - disable with `--mangle-props builtins` on CLI - `warnings` now off by default - add `--warn` and `--verbose` on CLI - drop `--enclose` - drop `--export-all` - drop `--reserved-file` - use `--mangle reserved` instead - drop `--reserve-domprops` - enabled by default, disable with `--mangle-props domprops` - drop `--prefix` - use `--source-map base` instead - drop `--lint` - remove `bin/extract-props.js` - limit exposure of internal APIs - update documentations closes #96 closes #102 closes #136 closes #166 closes #243 closes #254 closes #261 closes #311 closes #700 closes #748 closes #912 closes #1072 closes #1366 fixes #101 fixes #123 fixes #124 fixes #263 fixes #379 fixes #419 fixes #423 fixes #461 fixes #465 fixes #576 fixes #737 fixes #772 fixes #958 fixes #1036 fixes #1142 fixes #1175 fixes #1220 fixes #1223 fixes #1280 fixes #1359 fixes #1368
2017-04-12convert `AST_Seq` from binary tree to array (#1460)Alex Lam S.L
- rename `AST_Seq` to `AST_Sequence` - raise default sequences_limit from 200 to 800
2017-03-31sort options in alphabetical order (#1743)Alex Lam S.L
They started off as functional groups I guess, but given the sheer number of options this is becoming too difficult to read.
2017-03-24improve error marker placement (#1644)Alex Lam S.L
For AST_UnaryPrefix, points to the operator rather than end of expression.
2017-03-24fix regression: CLI options with hyphens like -b ascii-only (#1640)kzc
fixes #1637
2017-03-21throw parse error on invalid assignments (#1627)Alex Lam S.L
fixes #1626
2017-03-10fixup for #1585 (#1589)Alex Lam S.L
As patched on `harmony`, `statement()` is the only user of `embed_tokens()` with a missing error branch. Updated test case and match up with `harmony` to facilitate future merging.
2017-03-10Correctly raise a parse exception with a missing loop body (#1585)Michael Mior
2017-03-05fix handling of shebang and preamble (#1545)Alex Lam S.L
fixes #1332
2017-02-27improve error messages (#1506)Alex Lam S.L
- better inheritance of `Error` sub-classes - mark parse error against source in CLI closes #235 closes #348 closes #524 closes #1356 closes #1405
2017-02-21Fix: AST_Accessor missing start / end tokensOndřej Španěl
fixes #1492 closes #1493
2016-07-21Legacy octal integer strict mode fixesAnthony Van de Gejuchte
2016-07-15Fix error style for regex errorsAnthony Van de Gejuchte
2016-06-30Various LineTerminator changesAnthony Van de Gejuchte
* Escaped newlines should also produce SyntaxError * Fix multiline comment parsing and add tests * Adapt makePredicate to handle \u2028 and \u2029 * Move up nlb check in regex so it's checked before any escape handling * Change error messages to conform ecma standard * Find_eol not recornizing \u2028 and \u2029 as line terminator * Remove \u180e as it is removed in unicode 6.3.0 from the category zs
2016-06-30Move OctalEscapeSequence to read_escape_charAnthony Van de Gejuchte
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.
2016-06-19Normalize error messagesAnthony Van de Gejuchte
2016-06-19Don't mix strings with directives in outputAnthony Van de Gejuchte
* 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
2016-06-12Don't allow with statements in strict modeAnthony Van de Gejuchte
2016-06-12Throw errors in strict mode for octal stringsAnthony Van de Gejuchte
Adds a directive tracker for the parser/tokenizer to allow parsing depending on directive context.
2016-06-05Do not allow newlines in regexAnthony Van de Gejuchte
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.