DEFSETF.7A fails on CCL with unbound function error
CCL fails test DEFSETF.7A:
? (setf *default-pathname-defaults* #p"/home/phoe/Projects/ansi-test/")
#P"/home/emiherd/Projects/ansi-test/"
? (progn (load "gclload1.lsp") (load "gclload2.lsp") (in-package :rt))
;; compilation output omitted
#<Package "REGRESSION-TEST">
? (do-test 'cl-test::defsetf.7a)
Test CL-TEST::DEFSETF.7A failed
Form: (PROGN (DEFSETF CL-TEST::ACCESS-FN (CL-TEST::X) (CL-TEST::VAL-1 CL-TEST::VAL-2) (LIST* 'LIST (LIST* CL-TEST::X (LIST* CL-TEST::VAL-1 (LIST CL-TEST::VAL-2))))) (EVAL (READ-FROM-STRING "(setf (access-fn 1) (values 2 3))")))
Expected value:
(1 2 3)
Actual value:
#<CCL::UNDEFINED-FUNCTION-CALL #x302001F0DA5D> [Undefined function (SETF ACCESS-FN) called with arguments (2 1) .]
NIL
The error happens even though the related ANSI CL functionality works.
? (progn (eval '(defsetf access-fn (x) (val-1 val-2) `(list ,x ,val-1 ,val-2)))
(eval (read-from-string "(setf (access-fn 1) (values 2 3))")))
(1 2 3)
? ((lambda () (progn (eval '(defsetf access-fn (x) (val-1 val-2) `(list ,x ,val-1 ,val-2)))
(eval (read-from-string "(setf (access-fn 1) (values 2 3))")))))
(1 2 3)
This happens likely due to package mismatch during READ-FROM-STRING
- see the following macroexpansions:
? *package*
#<Package "REGRESSION-TEST">
? (macroexpand-1 '(setf (access-fn 1) (values 2 3)))
(LET ((#:G8882 1)) (DECLARE (TYPE (MEMBER 1) #:G8882)) (FUNCALL #'(SETF ACCESS-FN) (VALUES 2 3) #:G8882))
T
? (macroexpand-1 '(setf (cl-test::access-fn 1) (values 2 3)))
(LET* ((#:G8885 1)) (DECLARE (IGNORABLE #:G8885)) (MULTIPLE-VALUE-BIND (#:G8883 #:G8884) (VALUES 2 3) ((LAMBDA (#:X) (DECLARE (IGNORABLE #:X)) (LIST #:X #:G8883 #:G8884)) #:G8885)))
T