I find that ACL 8.2 gets 4 failed tests on the latest iterate from darcs:
4 out of 261 total tests failed: ITERATE.TEST::CODE-MOVEMENT.ELSE, ITERATE.TEST::CODE-MOVEMENT.FINALLY, ITERATE.TEST::CODE-MOVEMENT.FINALLY-PROTECTED, ITERATE.TEST::BUG/WALK.2.
where SBCL seems to get only 1. I say "seems to," since the call to ASDF:TEST-SYSTEM does not print gracefully in SBCL, probably because of the compiler being chatty:
1 out of 261 total tests failed: ITERATE.TEST::BUG/WALK.2.
For CODE-MOVEMENT.ELSE, I see a problem on ACL -- the function local-binding-check does not raise an error on ACL, although it *IS* invoked.
The bug seems to further be localized to the fact that the following returns NIL on ACL:
(free-variables form)
looking further, this suggests that something goes wrong in the code-walker in FREE-VARS.
Looking further, I think I have identified the divergence --- in ACL, CL:RETURN is a special-operator, and in SBCL, it is not:
Allegro: CL-USER> (special-operator-p 'return) #<special operator RETURN @ #x1000054c32>
SBCL: CL-USER> (special-operator-p 'return) NIL
I believe the appropriate fix is to include RETURN in the first list of special symbols in the case statement. This will be benign for SBCL (it won't visit that, since RETURN is not a special-operator), but should fix things for ACL.
Making that change, I see that now both ACL and SBCL have only one test failure.
Best, r
On 1/4/12 Jan 4 -8:22 PM, Robert Goldman wrote:
I find that ACL 8.2 gets 4 failed tests on the latest iterate from darcs:
...snip...
Looking further, I think I have identified the divergence --- in ACL, CL:RETURN is a special-operator, and in SBCL, it is not:
Allegro: CL-USER> (special-operator-p 'return) #<special operator RETURN @ #x1000054c32>
SBCL: CL-USER> (special-operator-p 'return) NIL
I believe the appropriate fix is to include RETURN in the first list of special symbols in the case statement. This will be benign for SBCL (it won't visit that, since RETURN is not a special-operator), but should fix things for ACL.
Making that change, I see that now both ACL and SBCL have only one test failure.
Oh, dear. Looking further into the hyperspec, I see that this seems to be a case where ACL collides with the ANSI spec....
I will report this to Franz as a bug.
Best, r