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