FUNCALL and APPLY can return multiple values
authorDavid Vazquez <davazp@gmail.com>
Fri, 25 Jan 2013 16:50:12 +0000 (16:50 +0000)
committerDavid Vazquez <davazp@gmail.com>
Fri, 25 Jan 2013 16:50:12 +0000 (16:50 +0000)
ecmalisp.lisp

index 20a17b1..de2dabb 100644 (file)
 
 (define-raw-builtin funcall (func &rest args)
   (concat "(" (ls-compile func) ")("
-          (join (cons "pv" (mapcar #'ls-compile args))
+          (join (cons (if *multiple-value-p* "values" "pv")
+                      (mapcar #'ls-compile args))
                 ", ")
           ")"))
 
             (last (car (last args))))
         (js!selfcall
           "var f = " (ls-compile func) ";" *newline*
-          "var args = [" (join (cons "pv" (mapcar #'ls-compile args))
+          "var args = [" (join (cons (if *multiple-value-p* "values" "pv")
+                                     (mapcar #'ls-compile args))
                                ", ")
           "];" *newline*
           "var tail = (" (ls-compile last) ");" *newline*