Function: js--optimize-arglist

js--optimize-arglist is a byte-compiled function defined in js.el.gz.

Signature

(js--optimize-arglist ARGLIST)

Documentation

Convert immediate js< and js! references to deferred ones.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/js.el.gz
(eval-and-compile
  (defun js--optimize-arglist (arglist)
    "Convert immediate js< and js! references to deferred ones."
    (cl-loop for item in arglist
             if (eq (car-safe item) 'js<)
             collect (append (list 'list ''js--funcall
                                   '(list 'interactor "_getProp"))
                             (js--optimize-arglist (cdr item)))
             else if (eq (car-safe item) 'js>)
             collect (append (list 'list ''js--funcall
                                   '(list 'interactor "_putProp"))

                             (if (atom (cadr item))
                                 (list (cadr item))
                               (list
                                (append
                                 (list 'list ''js--funcall
                                       '(list 'interactor "_mkArray"))
                                 (js--optimize-arglist (cadr item)))))
                             (js--optimize-arglist (cddr item)))
             else if (eq (car-safe item) 'js!)
             collect (pcase-let ((`(,_ ,function . ,body) item))
                       (append (list 'list ''js--funcall
                                     (if (consp function)
                                         (cons 'list
                                               (js--optimize-arglist function))
                                       function))
                               (js--optimize-arglist body)))
             else
             collect item)))