]> code.delx.au - gnu-emacs-elpa/commitdiff
Parse generator methods better
authorDmitry Gutov <dgutov@yandex.ru>
Tue, 21 Jun 2016 01:22:44 +0000 (04:22 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Tue, 21 Jun 2016 01:22:44 +0000 (04:22 +0300)
Fixes #340

js2-mode.el
tests/parser.el

index ba492d7c26b41bc9247e784e0813a79fbe19b70d..527c639d6a665736f10c8a0a87878ed7e917851a 100644 (file)
@@ -10986,15 +10986,13 @@ TYPE-STRING is a string `get', `set', `*', or nil, indicating a found keyword."
                                              ("async" . ASYNC))))
                    'FUNCTION))
          result end
-         (fn (js2-parse-function-expr (eq type 'ASYNC))))
-    ;; it has to be an anonymous function, as we already parsed the name
-    (if (/= (js2-node-type fn) js2-FUNCTION)
-        (js2-report-error "msg.bad.prop")
-      (if (cl-plusp (length (js2-function-name fn)))
-          (js2-report-error "msg.bad.prop")))
+         (pos (js2-current-token-beg))
+         (_ (js2-must-match js2-LP "msg.no.paren.parms"))
+         (fn (js2-parse-function 'FUNCTION_EXPRESSION pos
+                                 (string= type-string "*")
+                                 (eq type 'ASYNC)
+                                 nil)))
     (js2-node-set-prop fn 'METHOD_TYPE type)  ; for codegen
-    (when (string= type-string "*")
-      (setf (js2-function-node-generator-type fn) 'STAR))
     (unless pos (setq pos (js2-node-pos prop)))
     (setq end (js2-node-end fn)
           result (make-js2-method-node :pos pos
index 69222b89b1cad1ff3b95cfff4c243925d3e4ea17..145bcbd10613b7e3ee0266c28d15f597539be211 100644 (file)
@@ -260,7 +260,7 @@ the test."
   "var x = {get [foo + bar]() {  return 42;\n}};")
 
 (js2-deftest-parse object-literal-generator
-  "var x = {*foo() {  yield 42;\n}};")
+  "var x = {*foo() {  yield* 42;\n}};")
 
 (js2-deftest-parse object-literal-computed-generator-key
   "var x = {*[foo + bar]() {  yield 42;\n}};")