From: Christophe Rhodes Date: Thu, 27 Nov 2003 22:44:36 +0000 (+0000) Subject: 0.8.6.8: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=ba176faab453c2b5d4d9a6667a84680c8783c957;p=sbcl.git 0.8.6.8: Fix for GET-SETF-EXPANSION problem (Nikodemus Siivola sbcl-devel 2003-11-27) --- diff --git a/NEWS b/NEWS index 6ca7ff3..3568e39 100644 --- a/NEWS +++ b/NEWS @@ -2195,6 +2195,11 @@ changes in sbcl-0.8.6 relative to sbcl-0.8.5: ** HANDLER-CASE failed to accept declarations in handler clauses in some circumstances. +changes in sbcl-0.8.7 relative to sbcl-0.8.6: + * bug fix: GET-SETF-EXPANSION no longer throws an internal type + error when called without an explicit environment argument. + (thanks to Nikodemus Siivola) + planned incompatible changes in 0.8.x: * (not done yet, but planned:) When the profiling interface settles down, it might impact TRACE. They both encapsulate functions, and diff --git a/src/code/early-setf.lisp b/src/code/early-setf.lisp index 6549d41..e4f43ed 100644 --- a/src/code/early-setf.lisp +++ b/src/code/early-setf.lisp @@ -91,7 +91,8 @@ GET-SETF-EXPANSION directly." ;;; If a macro, expand one level and try again. If not, go for the ;;; SETF function. -(declaim (ftype (function (t sb!c::lexenv)) expand-or-get-setf-inverse)) +(declaim (ftype (function (t (or null sb!c::lexenv))) + expand-or-get-setf-inverse)) (defun expand-or-get-setf-inverse (form environment) (multiple-value-bind (expansion expanded) (sb!xc:macroexpand-1 form environment) diff --git a/tests/setf.impure.lisp b/tests/setf.impure.lisp new file mode 100644 index 0000000..77c4ac5 --- /dev/null +++ b/tests/setf.impure.lisp @@ -0,0 +1,27 @@ +;;;; tests related to setf + +;;;; This file is impure because we want to be able to use DEFUN. + +;;;; This software is part of the SBCL system. See the README file for +;;;; more information. +;;;; +;;;; While most of SBCL is derived from the CMU CL system, the test +;;;; files (like this one) were written from scratch after the fork +;;;; from CMU CL. +;;;; +;;;; This software is in the public domain and is provided with +;;;; absolutely no warranty. See the COPYING and CREDITS files for +;;;; more information. + +(in-package :cl-user) + +(defvar *foo* nil) +(defun (setf foo) (bar) + (setf *foo* bar)) + +;;; Regression test for get-setf-expansion without explicit +;;; environment object. +(assert (multiple-value-list (get-setf-expansion '(foo)))) + +;;; success +(quit :unix-status 104) \ No newline at end of file diff --git a/version.lisp-expr b/version.lisp-expr index e8d8df7..1ea7adf 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8.6.7" +"0.8.6.8"