Madhu <madhu@cs.unm.edu> writes:
|From: Stas Boukarev <stassats@gmail.com> |Cc: Raymond Toy <rtoy@common-lisp.net>, cmucl-imp@cons.org |Date: Sun, 26 Dec 2010 17:32:07 +0300 | |Madhu <madhu@cs.unm.edu> writes: | |> |From: Raymond Toy <rtoy@common-lisp.net> |> |Date: Sun, 26 Dec 2010 09:03:48 -0500 |> |MIME-Version: 1.0 |> |Content-Type: text/plain; charset="us-ascii" |> | |> | Date: Sunday, December 26, 2010 @ 09:03:48 |> | Author: rtoy |> | Path: /project/cmucl/cvsroot/src/code |> | |> |Modified: package.lisp |> | |> |Unintern removes the wrong symbol. See |> |https://bugs.launchpad.net/sbcl/+bug/693796. |> |> [It would be nice to have the whole relevant description in the |> repository, as part of the commit, instead of citing some website |> which may or may not be offline] |> |> I believe this patch would break the following use case which used to |> work earlier |> |> $ cat test.l |> (in-package "CL-USER") |> (eval-when (load eval compile) |> (when (find-package "FOO-PACKAGE") (delete-package "FOO-PACKAGE")) |> (when (find-package "BAR-PACKAGE") (delete-package "BAR-PACKAGE"))) |> (defpackage "FOO-PACKAGE" (:export "BAR-SYMBOL")) |> (defpackage "BAR-PACKAGE") |> (eval-when (load eval compile) |> (unintern 'foo-package:bar-symbol "FOO-PACKAGE")) |> |> (assert (not (find-symbol "BAR-SYMBOL" "FOO-PACKAGE"))) |> |> * (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.
-- With Best Regards, Stas.