(js2-get-token)
t))
-;; Matching "async" is performed in two parts, because in the functions' one use
-;; case, it isn't known whether an arrow function is actually being parsed (and
-;; thus whether `js2-get-token' should be called) until later. If
-;; `js2-get-token' were called eccentrically, `js2-current-token' would be
-;; off-by-one, causing `js2-parse-unary-expr' to potentially fail when "async"
-;; is used in a non-keyword context.
-
-(defun js2-match-async-arrow-function-1 ()
+(defun js2-match-async-arrow-function ()
(and (js2-contextual-kwd-p (js2-current-token) "async")
(/= (js2-peek-token) js2-FUNCTION)))
-(defun js2-match-async-arrow-function-2 ()
- (js2-record-face 'font-lock-keyword-face)
- (js2-get-token))
-
(defun js2-parse-await-maybe (tt)
"Parse \"await\" as an AwaitExpression, if it is one."
(let (pn post-parse-ts-state)
;; `js2-parse-function-stmt' nor `js2-parse-function-expr' that
;; interpret `async` token, we trash `async` and just remember
;; we met `async` keyword to `async-p'.
- (when (js2-match-async-arrow-function-1)
+ (when (js2-match-async-arrow-function)
(setq async-p t))
;; Save the tokenizer state in case we find an arrow function
;; and have to rewind.
(>= js2-language-version 200))
(js2-ts-seek ts-state)
(when async-p
- (js2-match-async-arrow-function-2))
+ (js2-record-face 'font-lock-keyword-face)
+ (js2-get-token))
(setq js2-recorded-identifiers recorded-identifiers
js2-parsed-errors parsed-errors)
(setq pn (js2-parse-function 'FUNCTION_ARROW (js2-current-token-beg) nil async-p)))