0.8.10.39:
authorNikodemus Siivola <nikodemus@random-state.net>
Thu, 20 May 2004 14:34:17 +0000 (14:34 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Thu, 20 May 2004 14:34:17 +0000 (14:34 +0000)
         Merged patch by Zach Beane (sbcl-devel 2004-05-19) that fixes
         a format-error during reporting of invalid slot specification
         errors.
         ... And a regression test.

NEWS
src/pcl/defclass.lisp
tests/clos.pure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index ef155ee..e0e20f7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2403,6 +2403,8 @@ changes in sbcl-0.8.11 relative to sbcl-0.8.10:
     SB-EXT:INHIBIT-WARNINGS OPTIMIZE quality.  See the manual for
     documentation on this feature.  The SB-EXT:INHIBIT-WARNINGS
     quality should be considered deprecated.
     SB-EXT:INHIBIT-WARNINGS OPTIMIZE quality.  See the manual for
     documentation on this feature.  The SB-EXT:INHIBIT-WARNINGS
     quality should be considered deprecated.
+  * fixed bug: Invalid slot specification errors now print correctly. 
+    (thanks to Zach Beane)
   * fixed bug 320: Shared to local slot value transfers in class 
     redefinitions now happen corrently from superclasses as
     well. (reported by Bruno Haible)
   * fixed bug 320: Shared to local slot value transfers in class 
     redefinitions now happen corrently from superclasses as
     well. (reported by Bruno Haible)
index ddd3f0a..87b2c1e 100644 (file)
                  :format-control
                  "~@<in DEFCLASS ~S, the slot specification ~S is invalid; ~
                    the probable intended meaning may be achieved by ~
                  :format-control
                  "~@<in DEFCLASS ~S, the slot specification ~S is invalid; ~
                    the probable intended meaning may be achieved by ~
-                   specifiying ~S instead."
+                   specifiying ~S instead.~>"
                  :format-arguments
                  (list class-name spec
                        `(,(car spec) :initform ,(cadr spec)))))
                  :format-arguments
                  (list class-name spec
                        `(,(car spec) :initform ,(cadr spec)))))
index a6a032d..b110f27 100644 (file)
                          :no-lambda-list)
                  (push gf collect)))))
           (print (nreverse collect)))))
                          :no-lambda-list)
                  (push gf collect)))))
           (print (nreverse collect)))))
+
+;;; Regressing test for invalid slot specification error printing
+(multiple-value-bind (value err)    
+    (ignore-errors (macroexpand '(defclass foo () (frob (frob bar)))))
+  (declare (ignore value))
+  (assert (typep err 'simple-condition))
+  (multiple-value-bind (value format-err)
+      (ignore-errors (apply #'format nil 
+                            (simple-condition-format-control err)
+                            (simple-condition-format-arguments err)))
+    (declare (ignore value))
+    (assert (not format-err))))
index e899881..806d61a 100644 (file)
@@ -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".)
 ;;; 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.10.38"
+"0.8.10.39"