<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>