(js-format "~a" (apply #'code args)))
;; Function call
(call
- (js-expr (car args))
+ (if (symbolp (car args))
+ (js-expr (car args))
+ (progn
+ (js-format "(")
+ (js-expr (car args))
+ (js-format ")")))
(js-format "(")
(when (cdr args)
- (with-operator (13 'left)
+ (with-operator (12 'left)
(js-expr (cadr args))
(dolist (operand (cddr args))
(let ((*js-output* t))
(js-expr condition)
(js-format ")")
(js-stmt `(progn ,@body))))
+ (for
+ (destructuring-bind ((start condition step) &body body) (cdr form)
+ (js-format "for (")
+ (js-expr start)
+ (js-format ";")
+ (js-expr condition)
+ (js-format ";")
+ (js-expr step)
+ (js-format ")")
+ (js-stmt `(progn ,@body))))
+ (for-in
+ (destructuring-bind ((x object) &body body) (cdr form)
+ (js-format "for (")
+ (js-identifier x)
+ (js-format " in ")
+ (js-expr object)
+ (js-format ")")
+ (js-stmt `(progn ,@body))))
(try
(destructuring-bind (&rest body) (cdr form)
(js-format "try")