Raymond Toy <toy.raymond@gmail.com> writes:
On 12/26/10 9:40 AM, Stas Boukarev wrote:
Madhu <madhu@cs.unm.edu> writes:
|From: Stas Boukarev <stassats@gmail.com>
|> * (load (compile-file "test.l")) |It breaks non-standard code, that is right.
The point of my example was to show that it breaks more than just non-stanadard code. It would be nice to keep misguided SBCL patches off the CMUCL codebase. The behaviour you expect from the code you showed is non-standard. And it behaves the same way in every implementation, except for CMUCL and SBCL.
I'm getting confused now. (I would claim too much holiday cheer, but I didn't really drink anything much.)
FIND-SYMBOL (before uninterning) says BAR-SYMBOL is an external symbol and not inherited. An external symbol is present in the package, according to the phrasing in the clhs entry for find-symbol.
I do see that ccl and clisp fail the test. cmucl passes. The problem is that the symbol is uninterned twice, and the second time it's uninterned it's passing a symbol with no home-package to unintern, which it surely can't find in that package anymore.
A better test-case: (progn (intern "SYM") (unintern (print 'sym)) (intern "SYM") (unintern (print 'sym)) (find-symbol "SYM")) => SYM #:SYM SYM :INTERNAL -- With Best Regards, Stas.