[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/js2-mode e6a9059: Support catch without identifier
From: |
ELPA Syncer |
Subject: |
[elpa] externals/js2-mode e6a9059: Support catch without identifier |
Date: |
Mon, 6 Sep 2021 19:57:11 -0400 (EDT) |
branch: externals/js2-mode
commit e6a9059fc823a17496e1a5114652d92a9071a78f
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: Dmitry Gutov <dgutov@yandex.ru>
Support catch without identifier
Fixes #573
---
js2-mode.el | 61 ++++++++++++++++++++++++++++++---------------------------
tests/parser.el | 4 ++++
2 files changed, 36 insertions(+), 29 deletions(-)
diff --git a/js2-mode.el b/js2-mode.el
index daf2dfb..9d8e4f7 100644
--- a/js2-mode.el
+++ b/js2-mode.el
@@ -3017,12 +3017,15 @@ modules metadata itself."
(let ((pad (js2-make-pad i))
(guard-kwd (js2-catch-node-guard-kwd n))
(guard-expr (js2-catch-node-guard-expr n)))
- (insert " catch (")
- (js2-print-ast (js2-catch-node-param n) 0)
- (when guard-kwd
- (insert " if ")
- (js2-print-ast guard-expr 0))
- (insert ") {\n")
+ (insert " catch ")
+ (when (js2-catch-node-lp n)
+ (insert "(")
+ (js2-print-ast (js2-catch-node-param n) 0)
+ (when guard-kwd
+ (insert " if ")
+ (js2-print-ast guard-expr 0))
+ (insert ") "))
+ (insert "{\n")
(js2-print-body n (1+ i))
(insert pad "}")))
@@ -9288,30 +9291,30 @@ Last matched token must be js2-FOR."
lp rp)
(if saw-default-catch
(js2-report-error "msg.catch.unreachable"))
- (if (js2-must-match js2-LP "msg.no.paren.catch")
- (setq lp (- (js2-current-token-beg) catch-pos)))
(js2-push-scope catch-node)
- (let ((tt (js2-peek-token)))
- (cond
- ;; Destructuring pattern:
- ;; catch ({ message, file }) { ... }
- ((or (= tt js2-LB) (= tt js2-LC))
- (js2-get-token)
- (setq param (js2-parse-destruct-primary-expr))
- (js2-define-destruct-symbols param js2-LET nil))
- ;; Simple name.
- (t
- (js2-must-match-name "msg.bad.catchcond")
- (setq param (js2-create-name-node))
- (js2-define-symbol js2-LET (js2-current-token-string) param)
- (js2-check-strict-identifier param))))
- ;; Catch condition.
- (if (js2-match-token js2-IF)
- (setq guard-kwd (- (js2-current-token-beg) catch-pos)
- catch-cond (js2-parse-expr))
- (setq saw-default-catch t))
- (if (js2-must-match js2-RP "msg.bad.catchcond")
- (setq rp (- (js2-current-token-beg) catch-pos)))
+ (when (js2-match-token js2-LP)
+ (setq lp (- (js2-current-token-beg) catch-pos))
+ (let ((tt (js2-peek-token)))
+ (cond
+ ;; Destructuring pattern:
+ ;; catch ({ message, file }) { ... }
+ ((or (= tt js2-LB) (= tt js2-LC))
+ (js2-get-token)
+ (setq param (js2-parse-destruct-primary-expr))
+ (js2-define-destruct-symbols param js2-LET nil))
+ ;; Simple name.
+ (t
+ (js2-must-match-name "msg.bad.catchcond")
+ (setq param (js2-create-name-node))
+ (js2-define-symbol js2-LET (js2-current-token-string) param)
+ (js2-check-strict-identifier param))))
+ ;; Catch condition.
+ (if (js2-match-token js2-IF)
+ (setq guard-kwd (- (js2-current-token-beg) catch-pos)
+ catch-cond (js2-parse-expr))
+ (setq saw-default-catch t))
+ (if (js2-must-match js2-RP "msg.bad.catchcond")
+ (setq rp (- (js2-current-token-beg) catch-pos))))
(js2-must-match js2-LC "msg.no.brace.catchblock")
(js2-parse-statements catch-node)
(if (js2-must-match js2-RC "msg.no.brace.after.body")
diff --git a/tests/parser.el b/tests/parser.el
index e1b821f..d9742a0 100644
--- a/tests/parser.el
+++ b/tests/parser.el
@@ -163,6 +163,10 @@ the test."
(js2-deftest-parse void
"void 0;")
+(js2-deftest-parse catch-without-identifier
+ "try {\n} catch {\n 4 + 4;\n}"
+ :warnings-count 0)
+
;;; Callers of `js2-valid-prop-name-token'
(js2-deftest-parse parse-property-access-when-not-keyword
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/js2-mode e6a9059: Support catch without identifier,
ELPA Syncer <=