X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-cltl2%2Ftests.lisp;h=c862c0df548c48de32fc25f9d26bb8e5985c5f71;hb=HEAD;hp=3ae20d2f558dbf66c760e4d085324801c1f946ca;hpb=5d4cadcc92642f2a23743a5458a23aa9dc544db2;p=sbcl.git diff --git a/contrib/sb-cltl2/tests.lisp b/contrib/sb-cltl2/tests.lisp index 3ae20d2..c862c0d 100644 --- a/contrib/sb-cltl2/tests.lisp +++ b/contrib/sb-cltl2/tests.lisp @@ -65,6 +65,8 @@ (macroexpand-all '(symbol-macrolet ((srlt '(nil zool))) (testr))) (symbol-macrolet ((srlt '(nil zool))) 'zool)) +;;;; DECLARATION-INFORMATION + (defmacro dinfo (thing &environment env) `',(declaration-information thing env)) @@ -90,6 +92,27 @@ (def compilation-speed) (def space)) + +(deftest declaration-information.restrict-compiler-policy.1 + (with-compilation-unit (:policy '(optimize) :override t) + (restrict-compiler-policy 'speed 3) + (eval '(cadr (assoc 'speed (dinfo optimize))))) + 3) + +(deftest declaration-information.restrict-compiler-policy.2 + (with-compilation-unit (:policy '(optimize) :override t) + (restrict-compiler-policy 'speed 3) + (locally (declare (optimize (speed 2))) + (cadr (assoc 'speed (dinfo optimize))))) + 2) + +(deftest declaration-information.restrict-compiler-policy.3 + (locally (declare (optimize (speed 2))) + (with-compilation-unit (:policy '(optimize) :override t) + (restrict-compiler-policy 'speed 3) + (cadr (assoc 'speed (dinfo optimize))))) + 2) + (deftest declaration-information.muffle-conditions.default (dinfo sb-ext:muffle-conditions) nil) @@ -226,6 +249,11 @@ (var-info this-is-global-too) (:global nil ((always-bound . t)))) +(sb-alien:define-alien-variable "errno" sb-alien:int) +(deftest alien-variable + (var-info errno) + (:alien nil nil)) + ;;;; FUNCTION-INFORMATION (defmacro fun-info (var &environment env) @@ -666,3 +694,25 @@ 'robot lexenv)))))))) (emotional-state . happy)) + +(deftest macroexpand-all.special-binding + (let ((form '(macrolet ((v (x &environment env) + (sb-cltl2:variable-information x env))) + (let* ((x :foo) + (y (v x))) + (declare (special x)) + (list y (v x)))))) + (list (eval form) + (eval (sb-cltl2:macroexpand-all form)))) + ((:special :special) (:special :special))) + +(deftest macroexpand-all.symbol-macro-shadowed + (let ((form '(macrolet ((v (x &environment env) + (macroexpand x env))) + (symbol-macrolet ((x :bad)) + (let* ((x :good) + (y (v x))) + y))))) + (list (eval form) + (eval (sb-cltl2:macroexpand-all form)))) + (:good :good))