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