(defun js-macroexpand (js)
(if (and (consp js) (assoc (car js) *js-macros*))
(let ((expander (cdr (assoc (car js) *js-macros*))))
- (multiple-value-bind (expansion expand-more-p)
+ (multiple-value-bind (expansion stop-expand-p)
(funcall expander (cdr js))
- (if expand-more-p
- (js-macroexpand expansion)
- expansion)))
+ (if stop-expand-p
+ expansion
+ (js-macroexpand expansion))))
js))
(let ((op1 (car args))
(op2 (cadr args)))
(case op
- ;; Transactional compatible operator
- (code
- (js-format "~a" (apply #'code args)))
;; Accessors
(property
(js-expr (car args) 0)
(js-format ";")))
(t
(case (car form)
- (code
- (js-format "~a" (apply #'code (cdr form))))
(label
(destructuring-bind (label &body body) (cdr form)
(js-identifier label)