X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fwalk.impure.lisp;h=8642df777c0076f45f43f9aeb5400d33a88002ad;hb=89eb73c035f05ae53b1148ef8a83e1d4030b2dd8;hp=aaa714bb01ce6f0422ab6c5c25505ebd044d74fc;hpb=7c07a6f965c51828d8f452b47e0620d8e6cf2959;p=sbcl.git diff --git a/tests/walk.impure.lisp b/tests/walk.impure.lisp index aaa714b..8642df7 100644 --- a/tests/walk.impure.lisp +++ b/tests/walk.impure.lisp @@ -37,8 +37,8 @@ #'(lambda (x y env) (format t "~&Form: ~S ~3T Context: ~A" x y) (when (symbolp x) - (let ((lexical (variable-lexical-p x env)) - (special (variable-special-p x env))) + (let ((lexical (var-lexical-p x env)) + (special (var-special-p x env))) (when lexical (format t ";~3T") (format t "lexically bound")) @@ -153,12 +153,24 @@ Form: 'INNER Context: EVAL (FOO 1))")) -;;; A slightly more complex MACROLET case. In the body of the macro X -;;; should not be lexically bound. In the body of the macrolet form itself -;;; X should be bound. Note that THIS CASE WILL CAUSE AN ERROR when it -;;; tries to macroexpand the call to FOO. - -#+nil ; FIXME: broken under 0.pre7.15 +;;; The original PCL documentation for this test said +;;; A slightly more complex MACROLET case. In the body of the macro +;;; X should not be lexically bound. In the body of the macrolet +;;; form itself X should be bound. Note that THIS CASE WILL CAUSE AN +;;; ERROR when it tries to macroexpand the call to FOO. +;;; +;;; This test is commented out in SBCL because ANSI says, in the +;;; definition of the special operator MACROLET, +;;; The macro-expansion functions defined by MACROLET are defined +;;; in the lexical environment in which the MACROLET form appears. +;;; Declarations and MACROLET and SYMBOL-MACROLET definitions affect +;;; the local macro definitions in a MACROLET, but the consequences +;;; are undefined if the local macro definitions reference any +;;; local variable or function bindings that are visible in that +;;; lexical environment. +;;; Since the behavior is undefined, anything we do conforms.:-| +;;; This is of course less than ideal; see bug 124. +#+nil (multiple-value-bind (res cond) (ignore-errors (take-it-out-for-a-test-walk @@ -928,7 +940,7 @@ Form: NIL Context: EVAL; bound: NIL #'(lambda (form context env) (declare (ignore context)) (when (and (symbolp form) - (variable-lexical-p form env)) + (var-lexical-p form env)) (push form the-lexical-variables)) form)) (or (and (= (length the-lexical-variables) 3)