X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fpackages.impure.lisp;h=ce498d67d5413aac7ca1e72c46f266a5e2d2641a;hb=6bbc22725d3bf663726ed9adca544e39316364a6;hp=ddfdf1858a19e29546d27eab1b32a4a62a3c04bc;hpb=175c318c892b0627b36fa3c4db66f59680242204;p=sbcl.git diff --git a/tests/packages.impure.lisp b/tests/packages.impure.lisp index ddfdf18..ce498d6 100644 --- a/tests/packages.impure.lisp +++ b/tests/packages.impure.lisp @@ -22,3 +22,43 @@ (package-error (c) (princ c)) (:no-error (&rest args) (error "(EXPORT :FOO) returned ~S" args))) +(make-package "FOO") +(assert (shadow #\a :foo)) + +(defpackage :PACKAGE-DESIGNATOR-1 (:use #.(find-package :cl))) + +(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"))) +