X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fpackages.impure.lisp;fp=tests%2Fpackages.impure.lisp;h=ce498d67d5413aac7ca1e72c46f266a5e2d2641a;hb=e59ce23faa19fe7995e59186c114e865ce3bfcd1;hp=82b6e3c4f4721956b7ae1c5a2658857b063f2f5c;hpb=ce2002271034469dc3ccdcaef7d13db76403b90d;p=sbcl.git diff --git a/tests/packages.impure.lisp b/tests/packages.impure.lisp index 82b6e3c..ce498d6 100644 --- a/tests/packages.impure.lisp +++ b/tests/packages.impure.lisp @@ -29,3 +29,36 @@ (defpackage :PACKAGE-DESIGNATOR-2 (:import-from #.(find-package :cl) "+")) + +(defpackage "EXAMPLE-INDIRECT" + (:import-from "CL" "+")) + +(defpackage "EXAMPLE-PACKAGE" + (:shadow "CAR") + (:shadowing-import-from "CL" "CAAR") + (:use) + (:import-from "CL" "CDR") + (:import-from "EXAMPLE-INDIRECT" "+") + (:export "CAR" "CDR" "EXAMPLE")) + +(flet ((check-symbol (name expected-status expected-home-name) + (multiple-value-bind (symbol status) + (find-symbol name "EXAMPLE-PACKAGE") + (let ((home (symbol-package symbol)) + (expected-home (find-package expected-home-name))) + (assert (eql home expected-home)) + (assert (eql status expected-status)))))) + (check-symbol "CAR" :external "EXAMPLE-PACKAGE") + (check-symbol "CDR" :external "CL") + (check-symbol "EXAMPLE" :external "EXAMPLE-PACKAGE") + (check-symbol "CAAR" :internal "CL") + (check-symbol "+" :internal "CL") + (check-symbol "CDDR" nil "CL")) + +(defpackage "TEST-ORIGINAL" (:nicknames "A-NICKNAME")) + +(assert (raises-error? (defpackage "A-NICKNAME"))) + +(assert (eql (find-package "A-NICKNAME") + (find-package "TEST-ORIGINAL"))) +