branch: externals/js2-mode commit dd7abb28844f745f7520db87695b7aa579cbe683 Author: Dmitry Gutov <dgu...@yandex.ru> Commit: Dmitry Gutov <dgu...@yandex.ru>
Recognize static initialization blocks Closes #594 --- NEWS.md | 5 +++++ js2-mode.el | 6 +++++- tests/parser.el | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index f237758d68..92cd99732f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,10 @@ # History of user-visible changes +## Next + +* Support for static initialization blocks + ([#594](https://github.com/mooz/js2-mode/issues/594)). + ## 2023-04-08 * Support top-level await diff --git a/js2-mode.el b/js2-mode.el index e8f34cd78e..11ebb37340 100644 --- a/js2-mode.el +++ b/js2-mode.el @@ -2339,7 +2339,7 @@ If any given node in NODES is nil, doesn't record that link." top) ; top-level `js2-scope' (script/function) (js2--struct-put 'js2-scope 'js2-visitor 'js2-visit-block) -(js2--struct-put 'js2-scope 'js2-printer 'js2-print-none) +(js2--struct-put 'js2-scope 'js2-printer 'js2-print-block) (defun js2-node-get-enclosing-scope (node) "Return the innermost `js2-scope' node surrounding NODE. @@ -11146,6 +11146,10 @@ expression)." ((and class-p (= tt js2-SEMI)) nil) + ((and class-p + (eq tt js2-LC)) + (setq after-comma nil + elem (js2-parse-block))) (t (js2-report-error "msg.bad.prop") (unless js2-recover-from-parse-errors diff --git a/tests/parser.el b/tests/parser.el index 8c2c7d04dd..32c33e55d7 100644 --- a/tests/parser.el +++ b/tests/parser.el @@ -1058,6 +1058,9 @@ the test." (js2-deftest-parse parse-class-static-fields-no-semi "class C {\n static a\n static b = 42\n}") +(js2-deftest-parse parse-class-static-block + "class Foo {\n static {\n a = 4;\n}\n}") + ;;; Private names (js2-deftest-parse parse-class-private-field-with-init