   "Parser for throw-statement.  Last matched token must be js2-THROW."
   (let ((pos js2-token-beg)
         expr
-        node)
+        pn)
     (js2-consume-token)
-    (if (eq (js2-peek-token-or-eol) js2-EOL)
+    (if (= (js2-peek-token-or-eol) js2-EOL)
         ;; ECMAScript does not allow new lines before throw expression,
         ;; see bug 256617
         (js2-report-error "msg.bad.throw.eol"))
     (setq expr (js2-parse-expr)
-          node (make-js2-throw-node :pos pos
-                                    :len (- (js2-node-end expr) pos)
-                                    :expr expr))
-    (js2-node-add-children node expr)
-    node))
-
-(defsubst js2-match-jump-label-name ()
-  "If we match a js2-NAME, return the labeled statement for that label.
-If the name does not match an existing label, reports an error and returns nil.
-Returns the `js2-labeled-stmt-node', or nil if the token was not a name.
-Side effect:  sets token information for the label identifier."
-  (let ((tt (js2-peek-token-or-eol))
-        label
-        name)
-    (when (eq tt js2-NAME)
-      (js2-consume-token)
-      (setq name js2-ts-string
-            label (assoc name js2-label-set))
-      (if (null label)
-          (progn
-            (js2-report-error "msg.undef.label")
-            nil)
-        label))))
+          pn (make-js2-throw-node :pos pos
+                                  :len (- (js2-node-end expr) pos)
+                                  :expr expr))
+    (js2-node-add-children pn expr)
+    pn))
+
+(defsubst js2-match-jump-label-name (label-name)
+  "If break/continue specified a label, return that label's labeled stmt.
+Returns the corresponding `js2-labeled-stmt-node', or if LABEL-NAME
+does not match an existing label, reports an error and returns nil."
+  (let ((bundle (cdr (assoc label-name js2-label-set))))
+    (if (null bundle)
+        (js2-report-error "msg.undef.label"))
+    bundle))
 
 (defun js2-parse-break ()
   "Parser for break-statement.  Last matched token must be js2-BREAK."

  :type 'boolean
  :group 'js2-mode)

(defvar js2-mode-version 20080521
  "Release number for `js2-mode'.")

;; scanner variables

              (insert ", ")))))

(defstruct (js2-var-init-node
            (:include js2-node)
            (:constructor nil)
            (:constructor make-js2-var-init-node (&key (type js2-VAR)
                                                       (pos js2-ts-cursor)
                                                       len
                                                       target
                                                       initializer)))
  "AST node for a variable declaration.
The type field will be js2-CONST for a const decl."
  target        ; `js2-name-node', `js2-object-node', or `js2-array-node'
  initializer)  ; initializer expression, a `js2-node'

(put 'cl-struct-js2-var-init-node 'js2-visitor 'js2-visit-var-init-node)
(put 'cl-struct-js2-var-init-node 'js2-printer 'js2-print-var-init-node)

(defun js2-visit-var-init-node (n v)
  (js2-visit-ast (js2-var-init-node-target n) v)
  (if (js2-var-init-node-initializer n)
      (js2-visit-ast (js2-var-init-node-initializer n) v)))

(defun js2-print-var-init-node (n i)
  (let ((pad (js2-make-pad i))
        (name (js2-var-init-node-target n))
        (init (js2-var-init-node-initializer n)))
    (insert pad)
    (js2-print-ast name 0)
