[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master b1f7e6c 11/45: Simplify parsing of destructuring literals
From: |
Dmitry Gutov |
Subject: |
[elpa] master b1f7e6c 11/45: Simplify parsing of destructuring literals |
Date: |
Mon, 02 Feb 2015 03:18:36 +0000 |
branch: master
commit b1f7e6cc1e2a9462652703039bcd79eadd7a7003
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Simplify parsing of destructuring literals
js2-parse-named-prop: Drop the "in destructuring" case, parse as
abbreviated props.
js2-define-destruct-symbols: Don't expect js2-name nodes directly in
js2-object-node.
js2-object-prop-node: Document `SHORTHAND'.
---
js2-mode.el | 27 ++++++---------------------
1 files changed, 6 insertions(+), 21 deletions(-)
diff --git a/js2-mode.el b/js2-mode.el
index 9f9cba8..715c24a 100644
--- a/js2-mode.el
+++ b/js2-mode.el
@@ -3575,8 +3575,7 @@ optional `js2-expr-node'"
len
elems)))
"AST node for an object literal expression.
-`elems' is a list of either `js2-object-prop-node' or `js2-name-node'.
-The latter represents abbreviation in destructuring expressions."
+`elems' is a list of `js2-object-prop-node'."
elems)
(put 'cl-struct-js2-object-node 'js2-visitor 'js2-visit-object-node)
@@ -3600,7 +3599,9 @@ The latter represents abbreviation in destructuring
expressions."
right op-pos)))
"AST node for an object literal prop:value entry.
The `left' field is the property: a name node, string node or number node.
-The `right' field is a `js2-node' representing the initializer value.")
+The `right' field is a `js2-node' representing the initializer value.
+If the property is abbreviated, the node's `SHORTHAND' property is non-nil
+and both fields have the same value.")
(put 'cl-struct-js2-object-prop-node 'js2-visitor 'js2-visit-infix-node)
(put 'cl-struct-js2-object-prop-node 'js2-printer 'js2-print-object-prop-node)
@@ -7465,10 +7466,8 @@ NODE is either `js2-array-node', `js2-object-node', or
`js2-name-node'."
((js2-object-node-p node)
(dolist (elem (js2-object-node-elems node))
(js2-define-destruct-symbols
- (if (js2-object-prop-node-p elem)
- (js2-object-prop-node-right elem)
- ;; abbreviated destructuring {a, b}
- elem)
+ ;; In abbreviated destructuring {a, b}, right == left.
+ (js2-object-prop-node-right elem)
decl-type face ignore-not-in-block)))
((js2-array-node-p node)
(dolist (elem (js2-array-node-elems node))
@@ -9763,20 +9762,6 @@ When `js2-is-in-destructuring' is t, forms like {a, b,
c} will be permitted."
(>= js2-language-version 200))
(js2-set-face ppos pend 'font-lock-keyword-face 'record) ; name
(js2-parse-getter-setter-prop ppos name ""))
- ;; Abbreviated destructuring binding, e.g. {a, b} = c;
- ;; XXX: To be honest, the value of `js2-is-in-destructuring' becomes t
only
- ;; when patterns are used in variable declarations, function parameters,
- ;; catch-clause, and iterators.
- ;; We have to set `js2-is-in-destructuring' to t when the current
- ;; expressions are on the left side of any assignment, but it's difficult
- ;; because it requires looking ahead of expression.
- ((and js2-is-in-destructuring
- (= tt js2-NAME)
- (let ((ctk (js2-peek-token)))
- (or (= ctk js2-COMMA)
- (= ctk js2-RC)
- (js2-valid-prop-name-token ctk))))
- name)
;; regular prop
(t
(prog1
- [elpa] master updated (d47c872 -> a1ac1e0), Dmitry Gutov, 2015/02/01
- [elpa] master 6037c0f 04/45: Add support for 'u' and 'y' RegExp flags in ES6 mode., Dmitry Gutov, 2015/02/01
- [elpa] master dad2f12 03/45: Support method definitions in object literals., Dmitry Gutov, 2015/02/01
- [elpa] master 926cb45 05/45: Support ES6 computed property names., Dmitry Gutov, 2015/02/01
- [elpa] master 30249fa 07/45: Support parsing the ES6 'static' keyword., Dmitry Gutov, 2015/02/01
- [elpa] master c79d426 06/45: Support ES6 class statements/expressions., Dmitry Gutov, 2015/02/01
- [elpa] master 2b0f5ba 08/45: Support parsing the ES6 'super' keyword., Dmitry Gutov, 2015/02/01
- [elpa] master dd344ff 01/45: Support short-hand object literals {foo, bar} everywhere., Dmitry Gutov, 2015/02/01
- [elpa] master b1f7e6c 11/45: Simplify parsing of destructuring literals,
Dmitry Gutov <=
- [elpa] master 68b4abd 02/45: Add ES6 class externs, Dmitry Gutov, 2015/02/01
- [elpa] master ee17084 13/45: js2-parse-plain-property: Disallow numbers as abbreviated props, Dmitry Gutov, 2015/02/01
- [elpa] master b19ea52 12/45: js2-parse-named-prop: Highlight externals in abbreviated props, Dmitry Gutov, 2015/02/01
- [elpa] master 31c49e0 14/45: js2-imenu-extension-styles: Turn into defvar, Dmitry Gutov, 2015/02/01
- [elpa] master 9b77d64 15/45: Implement template strings, ignoring substitutions, Dmitry Gutov, 2015/02/01
- [elpa] master 7b3d590 17/45: No need to explicitly apply face to string nodes, Dmitry Gutov, 2015/02/01
- [elpa] master 3f09ff3 09/45: Fix string literals in parser.el test harness., Dmitry Gutov, 2015/02/01
- [elpa] master d0c6bf3 18/45: Comment the new token types, Dmitry Gutov, 2015/02/01
- [elpa] master 9525eb3 10/45: Merge branch 'master' of github.com:shicks/js2-mode into shicks-master, Dmitry Gutov, 2015/02/01
- [elpa] master c910d1b 19/45: Parse tagged templates, Dmitry Gutov, 2015/02/01