(when else (compile-parenscript-form `(progn ,else)))))
(:expression (list 'js-expression-if (compile-parenscript-form test :expecting :expression)
(compile-parenscript-form then :expecting :expression)
- (when else (compile-parenscript-form else :expecting :expression))))))
+ (compile-parenscript-form else :expecting :expression)))))
(define-ps-special-form switch (expecting test-expr &rest clauses)
(let ((clauses (mapcar (lambda (clause)
(parenthesize-print then)
(ps-print then))
(write-string " : ")
- (if else
- (if (>= (expression-precedence else) (op-precedence 'js-expression-if))
- (parenthesize-print else)
- (ps-print else))
- (write-string "undefined")))
+ (if (>= (expression-precedence else) (op-precedence 'js-expression-if))
+ (parenthesize-print else)
+ (ps-print else)))
(defprinter js-assign (lhs rhs)
(ps-print lhs)
'blah';
x * y;
}")
+
+(test-ps-js if-exp-without-else-returns-null
+ (return (if x 1))
+ "return x ? 1 : null")
+
+(test-ps-js progn-expression-single-statement
+ (return (progn (* x y)))
+ "return x * y")