[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 7abe15e 043/110: Merge pull request #285 from dgreensp/fix
From: |
Dmitry Gutov |
Subject: |
[elpa] master 7abe15e 043/110: Merge pull request #285 from dgreensp/fix-param-destruct |
Date: |
Thu, 23 Jun 2016 01:12:55 +0000 (UTC) |
branch: master
commit 7abe15e5c40086d4c84eae80a098507cac94fdb9
Merge: 0b1704b 13f0ffb
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Merge pull request #285 from dgreensp/fix-param-destruct
Fix parsing of param with destructure and default
---
js2-mode.el | 36 ++++++++++++++++++------------------
tests/parser.el | 5 ++++-
2 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/js2-mode.el b/js2-mode.el
index 43c47cc..ee07edb 100644
--- a/js2-mode.el
+++ b/js2-mode.el
@@ -8088,8 +8088,7 @@ represented by FN-NODE at POS."
new-param-name-nodes (js2-define-destruct-symbols
param js2-LP 'js2-function-param))
(js2-check-strict-function-params param-name-nodes
new-param-name-nodes)
- (setq param-name-nodes (append param-name-nodes
new-param-name-nodes))
- (push param params))
+ (setq param-name-nodes (append param-name-nodes
new-param-name-nodes)))
;; variable name
(t
(when (and (>= js2-language-version 200)
@@ -8103,22 +8102,23 @@ represented by FN-NODE at POS."
(setq param (js2-create-name-node))
(js2-define-symbol js2-LP (js2-current-token-string) param)
(js2-check-strict-function-params param-name-nodes (list
param))
- (setq param-name-nodes (append param-name-nodes (list param)))
- ;; default parameter value
- (when (and (>= js2-language-version 200)
- (js2-match-token js2-ASSIGN))
- (cl-assert (not paren-free-arrow))
- (let* ((pos (js2-node-pos param))
- (tt (js2-current-token-type))
- (op-pos (- (js2-current-token-beg) pos))
- (left param)
- (right (js2-parse-assign-expr))
- (len (- (js2-node-end right) pos)))
- (setq param (make-js2-assign-node
- :type tt :pos pos :len len :op-pos op-pos
- :left left :right right))
- (js2-node-add-children param left right)))
- (push param params)))
+ (setq param-name-nodes (append param-name-nodes (list
param)))))
+ ;; default parameter value
+ (when (and (not rest-param-at)
+ (>= js2-language-version 200)
+ (js2-match-token js2-ASSIGN))
+ (cl-assert (not paren-free-arrow))
+ (let* ((pos (js2-node-pos param))
+ (tt (js2-current-token-type))
+ (op-pos (- (js2-current-token-beg) pos))
+ (left param)
+ (right (js2-parse-assign-expr))
+ (len (- (js2-node-end right) pos)))
+ (setq param (make-js2-assign-node
+ :type tt :pos pos :len len :op-pos op-pos
+ :left left :right right))
+ (js2-node-add-children param left right)))
+ (push param params)
(when (and rest-param-at (> (length params) (1+ rest-param-at)))
(js2-report-error "msg.param.after.rest" nil
(js2-node-pos param) (js2-node-len param)))
diff --git a/tests/parser.el b/tests/parser.el
index 9f8ab81..e97000d 100644
--- a/tests/parser.el
+++ b/tests/parser.el
@@ -187,9 +187,12 @@ the test."
(js2-deftest-parse destruct-non-name-target-is-error
"var {1=1} = {};" :syntax-error "1" :errors-count 1)
-(js2-deftest-parse destruct-with-initializer-in-function-arguments
+(js2-deftest-parse destruct-with-initializer-in-function-params
"function f({a, b = 1, c}, [d, e = 1, f]) {\n}")
+(js2-deftest-parse destruct-with-default-in-function-params
+ "function f({x = 1, y = 2} = {}, [x, y] = [1, 2]) {\n}")
+
(js2-deftest-parse destruct-name-conflict-is-error-in-object
"\"use strict\";\nvar {a=1,a=2} = {};" :syntax-error "a" :errors-count 1)
- [elpa] master f652d17 044/110: Add setImmediate and clearImmediate to js2-node-externs, (continued)
- [elpa] master f652d17 044/110: Add setImmediate and clearImmediate to js2-node-externs, Dmitry Gutov, 2016/06/22
- [elpa] master e0972fb 048/110: s/will/would, Dmitry Gutov, 2016/06/22
- [elpa] master d201a30 027/110: Merge pull request #281 from robbyoconnor/patch-1, Dmitry Gutov, 2016/06/22
- [elpa] master 667d320 034/110: Merge pull request #282 from jacksonrayhamilton/js2-jsx-mode, Dmitry Gutov, 2016/06/22
- [elpa] master 29f74b1 040/110: Allow 0o octals in strict mode, Dmitry Gutov, 2016/06/22
- [elpa] master 2a22635 035/110: Support .jsx file extension too in the example, Dmitry Gutov, 2016/06/22
- [elpa] master 4955584 037/110: Merge pull request #278 from redguardtoo/master, Dmitry Gutov, 2016/06/22
- [elpa] master 7c12f2c 031/110: Copy JSX indentation logic to js2-old-indent.el, Dmitry Gutov, 2016/06/22
- [elpa] master d0e4323 046/110: Add NEWS entry for async/await, Dmitry Gutov, 2016/06/22
- [elpa] master 0b1704b 041/110: Merge pull request #284 from XeCycle/0o-octals, Dmitry Gutov, 2016/06/22
- [elpa] master 7abe15e 043/110: Merge pull request #285 from dgreensp/fix-param-destruct,
Dmitry Gutov <=
- [elpa] master 38aa66b 054/110: Do not print trailing semicolon for export function and class, Dmitry Gutov, 2016/06/22
- [elpa] master 4cd81c7 050/110: Exported decls print a little funny; update tests, Dmitry Gutov, 2016/06/22
- [elpa] master 00a455f 009/110: Merge pull request #266 from jacksonrayhamilton/no-getter-setter-duplicate, Dmitry Gutov, 2016/06/22
- [elpa] master 4894200 056/110: Merge pull request #290 from XeCycle/export-async-fn, Dmitry Gutov, 2016/06/22
- [elpa] master 027d546 051/110: Merge pull request #287 from dgreensp/fix-export-decls, Dmitry Gutov, 2016/06/22
- [elpa] master 13f0ffb 042/110: Fix parsing of param with destructure and default, Dmitry Gutov, 2016/06/22
- [elpa] master e48e862 055/110: Also parse async function statement in export node, Dmitry Gutov, 2016/06/22
- [elpa] master e9227bd 058/110: Fix a byte-compilation warning, Dmitry Gutov, 2016/06/22
- [elpa] master 2a904e0 057/110: Implement object literal rest/spread (...), Dmitry Gutov, 2016/06/22
- [elpa] master 8047d7f 061/110: Recognize for-of and for-in loops with const, Dmitry Gutov, 2016/06/22