288 Commits

Author SHA1 Message Date
Mathias Bynens
575421b3c2 Make readRegexp more tolerant 2015-03-19 14:48:43 +01:00
Marijn Haverbeke
9673146cc1 Verify that property name can be bound to in short-hand object pattern properties
Issue #221
2015-03-19 14:05:16 +01:00
Marijn Haverbeke
a45172e044 Unify checkLVal and checkFunctionParam 2015-03-19 13:42:26 +01:00
Marijn Haverbeke
0a755156a8 Ignore backslash-escapes in identifiers in ES6 mode 2015-03-19 13:11:17 +01:00
Marijn Haverbeke
5d5b8eb3c8 Don't crash when converting missing array elements to assignable
Closes #220
2015-03-19 12:58:34 +01:00
Marijn Haverbeke
b6e8310848 Require an initalization value when let/var/const-declaring a complex pattern
Closes #222
2015-03-19 12:46:36 +01:00
Marijn Haverbeke
a75a685610 Add a startsExpr property to token types, use it to properly parse yield
Issue #219
2015-03-19 12:34:41 +01:00
Ingvar Stepanyan
0473c368e6 [es6][estree] Add support for sourceType: script|module modes.
+ Fix list of keywords and reserved words in ES6.
2015-03-18 13:42:49 +02:00
Ingvar Stepanyan
024a98431d [estree] Add SuperExpression.
(we're almost there)
2015-03-17 23:01:42 +02:00
Ingvar Stepanyan
876e774bfe [estree] Align method kinds.
[loose] Split parseObj and parseClass.
2015-03-17 22:36:34 +02:00
Marijn Haverbeke
19ef4ef69c Require semicolon after 'import * from ...' 2015-03-17 12:30:12 +01:00
Marijn Haverbeke
57bc9b1b0a Move parsing of yield into parseMaybeAssign
Issue #219
2015-03-12 23:11:33 +01:00
Marijn Haverbeke
16a342082a Allow trailing commas in array patterns
Closes #975
2015-03-12 22:39:00 +01:00
Marijn Haverbeke
811d19ab76 Allow any number of digits when killing \u{} sequences in regexps 2015-03-12 22:26:31 +01:00
Marijn Haverbeke
4735ef53ef Replace the forbidReserved option with an allowReserved option
For consistency with similar options
2015-03-12 22:02:41 +01:00
Marijn Haverbeke
ba750b253b Replace strictSemicolons and allowTrailingCommas with onInsertedSemicolon and onTrailingComma 2015-03-12 22:02:41 +01:00
Ingvar Stepanyan
34050d3917 Support for for (const ...).
Fixes #213.

Also changes API to pass token type to `parseVar` to reduce string comparison ops.
2015-03-10 11:36:15 +02:00
Ingvar Stepanyan
ff60ee4fdb [estree] Align export ... representations. 2015-03-10 10:37:00 +02:00
Ingvar Stepanyan
722bc65e79 [estree] Align Import specifiers. 2015-03-10 02:27:24 +02:00
Marijn Haverbeke
12558821c5 Use an object argument in the TokenType constuctor 2015-03-06 10:37:35 +01:00
Marijn Haverbeke
4e0a7fac71 Linting changes 2015-03-06 10:36:17 +01:00
Marijn Haverbeke
8459481e65 Represent a tokenizer as an instance of the parser
This completely changes the interface, and removes most of the complexity
in the old tokenizer interface (jump-to-position was removed, since it is
all kinds of unreliable given the new tokenizer context system).
2015-03-05 17:30:48 +01:00
Marijn Haverbeke
0df2affdfe Move loose parser to object style
Drop dependency on tokenizer interface
2015-03-05 17:22:06 +01:00
Marijn Haverbeke
3365478645 Add a plugin mechanism to allow JSX parser to be a module
And export a few more things
2015-03-05 16:00:34 +01:00
Marijn Haverbeke
06f3b3c224 Attach context update algorithm to token types
For, theoretically, easier extendability
2015-03-05 15:59:12 +01:00
Marijn Haverbeke
6bd1013f2c Use uniform object type for node types
Speeds things up by about 9% on io.js 1.3
2015-03-05 15:59:12 +01:00
Marijn Haverbeke
141905f9fd Consume whitespace before, rather than after, reading a token
Simplifies several things
2015-03-05 15:59:12 +01:00
Marijn Haverbeke
bc48c02a18 Move the parser state into an object
Makes almost everything in acorn.js a method of this object.

Performance is not significantly affected on a modern V8. Makes the
code reentrant and allows us to more easily expose more methods
externally in the future.

On the other hand, the proliferation of `this.` is unfortunate.
2015-03-05 15:59:12 +01:00
Marijn Haverbeke
33307e789a Update tools/generate-identifier-regex.js
So that it can also spit out the astral maps.
2015-03-05 15:55:38 +01:00
Marijn Haverbeke
d76ea4b3be Make the tokenizer aware of multi-byte characters in ES6 mode
Add a data structure to recognize astral identifier chars. Parse whole
code points when looking for identifiers.

Issue #215
2015-03-05 15:55:38 +01:00
Marijn Haverbeke
891d5d07dd Allow braced \u escapes in identifiers
We still can't properly recognize code points as ES6-style
identifier chars.

Issue #214
2015-03-04 15:37:26 +01:00
Marijn Haverbeke
59dc29f3f0 In ES6-mode, don't treat keywords with escaped characters as regular identifiers
See https://mathiasbynens.be/notes/javascript-identifiers-es6
2015-03-04 15:29:15 +01:00
Marijn Haverbeke
cbd8aa8f06 Bump version number post-0.12 2015-03-02 11:31:27 +01:00
Marijn Haverbeke
99f1989f72 Mark release 0.12 2015-03-02 11:31:11 +01:00
Ingvar Stepanyan
7264bc0178 Fix found V8 deopt.
Increases perf from 230K to 360K lines/sec on std bench on my machine.
2015-02-05 00:02:21 +02:00
Ingvar Stepanyan
c034550215 Disallow line break between arrow function params and =>. 2015-02-04 12:57:18 +02:00
Ingvar Stepanyan
6eb177582d Fix export default declarations.
Closes #184.
2015-01-27 16:21:41 +02:00
Ingvar Stepanyan
6660a21b79 Disallow MemberExpression in bindings; clarify function namings. 2015-01-27 15:23:09 +02:00
Ingvar Stepanyan
3d5964ceed Fix locations for AssignmentPatterns. 2015-01-27 15:10:25 +02:00
Ingvar Stepanyan
5d96bbd781 Simplify & fix rest argument validity checks. 2015-01-24 13:38:14 +02:00
Ingvar Stepanyan
cdd444eff1 Speed-up reading words, strings and templates.
Now identifiers and strings even with escaped chars are read
in optimized way by reading entire chunks delimited by escape
chars (and not bailing to deopt mode on first one).
2015-01-24 12:42:19 +02:00
Ingvar Stepanyan
65d09eac6e Implement shorthand property assignment in ambiguous contexts.
Issue #181.
2015-01-24 12:40:24 +02:00
Ingvar Stepanyan
f0569147e6 Avoid extra call and arg in parseExpression for single-expression case. 2015-01-23 21:48:33 +02:00
Ingvar Stepanyan
41ad304955 Introduce helpers for contextual keywords. 2015-01-23 21:36:16 +02:00
Ingvar Stepanyan
917de714b1 Switch from Function.{rest,defaults} to AssignmentPattern and RestElement.
Closes #182.
2015-01-23 15:29:37 +02:00
Ingvar Stepanyan
38609ae26d Closes #205. 2015-01-23 14:14:02 +02:00
Ingvar Stepanyan
e6f1e1027e Fix dividing function expression.
Fixes #204.
2015-01-23 13:17:03 +02:00
Ingvar Stepanyan
39d752dc6b Make top-level equal to block statement context.
Fixes #203.
2015-01-23 11:48:39 +02:00
Ingvar Stepanyan
555c7898c8 Remove Token::{startLoc,endLoc} so they don't appear in next release. 2015-01-22 18:21:38 +02:00
Ingvar Stepanyan
caa5da6ce1 Improve spread element parsing (fix allowed contexts and error locations). 2015-01-21 23:51:40 +02:00