X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fsetf.impure.lisp;h=b15917360f9042f151268735288b06e0d2cae296;hb=92d16270c6fc672683479f1f4dfe4eb1ca2711b2;hp=bc4f011a81a3a241a47151203cfbd7f1d8a5af53;hpb=9ef5be5321618ef470f17d274c1a64b2b487d54f;p=sbcl.git diff --git a/tests/setf.impure.lisp b/tests/setf.impure.lisp index bc4f011..b159173 100644 --- a/tests/setf.impure.lisp +++ b/tests/setf.impure.lisp @@ -29,5 +29,26 @@ (shiftf (values (car x) (car y)) (values (car y) (car x))) (assert (equal (list x y) '((2) (1))))) +;;; SETF of values with multiple-value place forms +(let ((a t) (b t) (c t) (d t)) + (let ((list (multiple-value-list + (setf (values (values a b) (values c d)) (values 1 2 3 4))))) + (assert (equal list '(1 2))) + (assert (eql a 1)) + (assert (eql c 2)) + (assert (null b)) + (assert (null d)))) + +;;; SETF of THE with VALUES. +(let (x y) + (setf (the (values fixnum fixnum) (values x y)) + (values 1 2)) + (assert (= x 1)) + (assert (= y 2))) + +;;; SETF of MACRO-FUNCTION must accept a NIL environment +(let ((fun (constantly 'ok))) + (setf (macro-function 'nothing-at-all nil) fun) + (assert (eq fun (macro-function 'nothing-at-all nil)))) + ;;; success -(quit :unix-status 104)