<div>The recent bug fixes seem to have worked (thanks). It seems</div><div>I can't remove my warning-silencing workaround code, though (hacking</div><div>*defined-operators*). I mention this because it's not clear to me if the</div>
<div>intention was to not need that workaround anymore. What should the</div><div>current behavior be - you get a warning if you redefine a built-in operator,</div><div>but not an error?</div><div><br></div><div>I did encounter a new problem while removing other workarounds.</div>
<div>At least I think it's a new problem rather than a failure to fix</div><div>the related earlier bug - I'm not really sure.</div><div><br></div><div>This incorrectly falls through to the 456 case when foo1() returns</div>
<div>true and foo2() does not. The example can probably be pared down</div>
<div>further, but I don't have time to make it shorter.</div>
<div><br></div><div><br></div><div><div>(defun blah (x)</div><div> (case x</div><div> (123</div><div> (cond ((foo1)</div><div>
(when (foo2)</div><div> (when (foo3)</div><div> (return-from blah nil))</div><div> t))))</div><div> (456 (foo7))))</div></div><div><div style="font-family:arial, sans-serif;font-size:13px;border-collapse:collapse">
<br></div><div style="font-family:arial, sans-serif;font-size:13px;border-collapse:collapse"><div>function blah(x) {</div><div> switch (x) {</div><div> case 123:</div><div> if (foo1()) {</div><div> if (foo2()) {</div>
<div> if (foo3()) {</div><div> return null;</div><div> };</div><div> return true;</div><div> };</div><div> };</div><div> case 456:</div>
<div> return foo7();</div><div> };</div><div>};</div></div></div>