I'll use SETF to force PS to interpret the right-hand side as an expression. These are correct:
(ps (setf x (let ((a 1)) a)))
=>
"x = (a6872 = 1, a6872);"
(ps (setf x (unless (null a) (1+ a))))
=>
"x = a != null ? a + 1 : null;"
But this is wrong:
(ps (setf x (let ((a (foo)))
(unless (null a)
(1+ a)))))
=>
"x = (a6874 = foo(), if (a6874 != null) {
a6874 + 1;
});"
Daniel