(let ((op1 (car args))
(op2 (cadr args)))
(case op
+ (code
+ (js-format "~a" (apply #'code args)))
;; Function call
(call
(js-expr (car args))
(destructuring-bind (&body body) (cdr form)
(cond
((null body) '(empty))
- ((null (cdr body)) (car body))
+ ((null (cdr body)) (js-expand-stmt (car body)))
(t `(group ,@(cdr form))))))
(t
form)))
(js-expr form)
(js-format ";"))
(case (car form)
+ (code
+ (js-format "~a" (apply #'code (cdr form))))
(empty
(unless (and (consp parent) (eq (car parent) 'group))
(js-format ";")))
(js-format " else ")
(js-stmt false))))
(group
- (let ((in-group-p (and (consp parent) (eq (car parent) 'group))))
+ (let ((in-group-p
+ (or (null parent)
+ (and (consp parent) (eq (car parent) 'group)))))
(unless in-group-p (js-format "{"))
(mapc #'js-stmt (cdr form))
(unless in-group-p (js-format "}"))))