<div>with latest quicklisp version.</div><div><br></div><div>PS> (ps (with-slots (x y) p</div><div><span style="white-space:pre-wrap">       </span>       (if (< x 0) y x)))</div><div>"if (p.x < 0) {</div>
<div>    p.y;</div><div>} else {</div><div>    p.x;</div><div>};"</div><div><br></div><div><br></div><div>PS> (ps (lambda (p) (with-slots (x y) p</div><div><span style="white-space:pre-wrap">   </span>   (if (< x 0) y x))))</div>

<div>Control stack guard page temporarily disabled: proceed with caution</div><div>; Evaluation aborted on #<SB-KERNEL::CONTROL-STACK-EXHAUSTED {10050DD133}>.</div><div><br></div><div><div>Backtrace:</div><div>  0: (sb-kernel::control-stack-exhausted-error)</div>

<div>  1: ("foreign function: call_into_lisp")</div><div>  2: ("foreign function: post_signal_tramp")</div><div>  3: (sb-impl::gethash3 0 34360628242 0)</div><div>  4: ((flet #:body-fun-224564 :in sb-impl::gethash3))</div>

<div>  5: (lookup-macro-def x (#<hash-table :TEST eq :COUNT 2 {100507F353}> #<hash-table :TEST eq :COUNT 4 {1004118C13}>))</div><div>  6: (ps-macroexpand-1 x)</div><div>  7: (ps-macroexpand x)</div><div>  8: (try-expressionizing-if? 'x 1)</div>

<div>  9: (try-expressionizing-if? (%js-getprop p 'x) 1)</div><div> 10: (try-expressionizing-if? 'x 1)</div><div> 11: (try-expressionizing-if? (%js-getprop p 'x) 1)</div><div> 12: (try-expressionizing-if? 'x 1)</div>

<div> 13: (try-expressionizing-if? (%js-getprop p 'x) 1)</div><div> 14: (try-expressionizing-if? 'x 1)</div><div> 15: (try-expressionizing-if? (%js-getprop p 'x) 1)</div><div> 16: (try-expressionizing-if? 'x 1)</div>

<div> 17: (try-expressionizing-if? (%js-getprop p 'x) 1)</div><div> 18: (try-expressionizing-if? 'x 1)</div><div> 19: (try-expressionizing-if? (%js-getprop p 'x) 1)</div></div><div><br></div><div><br></div><div>

The bug is not a show-stopper because I can do this:</div><div>PS> (ps (lambda (p) (with-slots (x y) p</div><div><span style="white-space:pre-wrap"> </span>   (cond ((< x 0) y) (t x)))))</div><div>
"(function (p) {</div><div>    if (p.x < 0) {</div><div>        return p.y;</div><div>    } else {</div><div>        return p.x;</div><div>    };</div><div>});"</div><div><br></div><div>-- andy</div><div><br>
</div>