[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 027d546 051/110: Merge pull request #287 from dgreensp/fix
From: |
Dmitry Gutov |
Subject: |
[elpa] master 027d546 051/110: Merge pull request #287 from dgreensp/fix-export-decls |
Date: |
Thu, 23 Jun 2016 01:12:56 +0000 (UTC) |
branch: master
commit 027d5467943acb7a262bcf7ccb6212178bac5cc3
Merge: e0972fb 4cd81c7
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Merge pull request #287 from dgreensp/fix-export-decls
Fix semicolons and scoping in exported decls
---
js2-mode.el | 16 +++++++++++++---
tests/parser.el | 10 +++++-----
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/js2-mode.el b/js2-mode.el
index c7af462..c98c00d 100644
--- a/js2-mode.el
+++ b/js2-mode.el
@@ -8842,20 +8842,30 @@ invalid export statements."
(setq from-clause (js2-parse-from-clause)))
(js2-unget-token))))
((js2-match-token js2-DEFAULT)
- (setq default (js2-parse-expr)))
+ (setq default (cond ((js2-match-token js2-CLASS)
+ (js2-parse-class-stmt))
+ ((js2-match-token js2-FUNCTION)
+ (js2-parse-function-stmt))
+ (t (js2-parse-expr)))))
((or (js2-match-token js2-VAR) (js2-match-token js2-CONST)
(js2-match-token js2-LET))
(setq declaration (js2-parse-variables (js2-current-token-type)
(js2-current-token-beg))))
+ ((js2-match-token js2-CLASS)
+ (setq declaration (js2-parse-class-stmt)))
+ ((js2-match-token js2-FUNCTION)
+ (setq declaration (js2-parse-function-stmt)))
(t
(setq declaration (js2-parse-expr))))
(when from-clause
(push from-clause children))
(when declaration
(push declaration children)
- (when (not (js2-function-node-p declaration))
+ (when (not (or (js2-function-node-p declaration)
+ (js2-class-node-p declaration)))
(js2-auto-insert-semicolon declaration)))
(when default
(push default children)
- (when (not (js2-function-node-p default))
+ (when (not (or (js2-function-node-p default)
+ (js2-class-node-p default)))
(js2-auto-insert-semicolon default)))
(let ((node (make-js2-export-node
:pos beg
diff --git a/tests/parser.el b/tests/parser.el
index 7c4daa8..ece263d 100644
--- a/tests/parser.el
+++ b/tests/parser.el
@@ -748,7 +748,7 @@ the test."
(should export-node)
(should (js2-var-decl-node-p (js2-export-node-declaration export-node)))))
-(js2-deftest export-class-declaration "export class Foo {};"
+(js2-deftest export-class-declaration "export class Foo {}"
(js2-init-scanner)
(js2-push-scope (make-js2-scope :pos 0))
(should (js2-match-token js2-EXPORT))
@@ -756,7 +756,7 @@ the test."
(should export-node)
(should (js2-class-node-p (js2-export-node-declaration export-node)))))
-(js2-deftest export-function-declaration "export default function doStuff()
{};"
+(js2-deftest export-function-declaration "export default function doStuff() {}"
(js2-init-scanner)
(js2-push-scope (make-js2-scope :pos 0))
(should (js2-match-token js2-EXPORT))
@@ -764,7 +764,7 @@ the test."
(should export-node)
(should (js2-export-node-default export-node))))
-(js2-deftest export-generator-declaration "export default function* one() {};"
+(js2-deftest export-generator-declaration "export default function* one() {}"
(js2-init-scanner)
(js2-push-scope (make-js2-scope :pos 0))
(should (js2-match-token js2-EXPORT))
@@ -795,8 +795,8 @@ the test."
(js2-deftest-parse parse-re-export-named-list "export {foo, bar as bang} from
'other/lib';")
(js2-deftest-parse parse-export-const-declaration "export const PI = Math.PI;")
(js2-deftest-parse parse-export-let-declaration "export let foo = [1];")
-(js2-deftest-parse parse-export-function-declaration "export default function
doStuff() {};")
-(js2-deftest-parse parse-export-generator-declaration "export default
function* one() {};")
+(js2-deftest-parse parse-export-function-declaration "export default function
doStuff() {\n}\n;")
+(js2-deftest-parse parse-export-generator-declaration "export default
function* one() {\n}\n;")
(js2-deftest-parse parse-export-assignment-expression "export default a = b;")
;;; Strings
- [elpa] master 2a22635 035/110: Support .jsx file extension too in the example, (continued)
- [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, 2016/06/22
- [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 <=
- [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
- [elpa] master 983f20a 072/110: Fix typo, Dmitry Gutov, 2016/06/22
- [elpa] master f8248df 066/110: Record class declarations for IMenu, Dmitry Gutov, 2016/06/22
- [elpa] master d92e772 069/110: Fix async parsing, Dmitry Gutov, 2016/06/22
- [elpa] master 5c97dce 002/110: Fix typo; Refs #185, Dmitry Gutov, 2016/06/22
- [elpa] master 97065c8 075/110: Fix compiler warning, Dmitry Gutov, 2016/06/22