0.6.8.24:
authorWilliam Harold Newman <william.newman@airmail.net>
Fri, 24 Nov 2000 14:26:52 +0000 (14:26 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Fri, 24 Nov 2000 14:26:52 +0000 (14:26 +0000)
fixed bug 8 by replacing (ERROR 'PROGRAM-ERROR ..) by
(ERROR 'SIMPLE-PROGRAM-ERROR ..) everywhere
tweaked MNAME-SYM in DEFMETHOD to avoid dependence on *PACKAGE*

BUGS
NEWS
src/code/defpackage.lisp
src/code/defstruct.lisp
src/code/package.lisp
src/pcl/boot.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index b50388f..4fc5e0f 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -92,21 +92,6 @@ WORKAROUND:
   Perhaps any number of such consecutive lines ought to turn into a
   single "byte compiling top-level forms:" line.
 
-8:
-  Compiling a file containing the erroneous program
-       (DEFSTRUCT FOO
-         A
-         B)
-       (DEFSTRUCT (BAR (:INCLUDE FOO))
-         A
-         B)
-  gives only the not-very-useful message
-       caught ERROR:
-         (during macroexpansion)
-       Condition PROGRAM-ERROR was signalled.
-  (The specific message which says that the problem was duplicate
-  slot names gets lost.)
-
 9:
   The handling of IGNORE declarations on lambda list arguments of
   DEFMETHOD is at least weird, and in fact seems broken and useless.
@@ -875,13 +860,33 @@ Error in function C::GET-LAMBDA-TO-COMPILE:
     (DEFTYPE BAR () 'SIMPLE-VECTOR)
     (CONCATENATE 'BAR #(1 2) '(3)) => #(1 2 3)
 
-
 67:
   As reported by Winton Davies on a CMU CL mailing list 2000-01-10,
   and reported for SBCL by Martin Atzmueller 2000-10-20: (TRACE GETHASH)
   crashes SBCL. In general tracing anything which is used in the 
   implementation of TRACE is likely to have the same problem.
 
+68: 
+  As reported by Daniel Solaz on cmucl-help@cons.org 2000-11-23,
+  SXHASH returns the same value for all non-STRUCTURE-OBJECT instances,
+  notably including all PCL instances. There's a limit to how much
+  SXHASH can do to return unique values for instances, but at least
+  it should probably look at the class name, the way that it does
+  for STRUCTURE-OBJECTs.
+
+69:
+  As reported by Martin Atzmueller on the sbcl-devel list 2000-11-22,
+  > There remains one issue, that is a bug in SBCL:
+  > According to my interpretation of the spec, the ":" and "@" modifiers
+  > should appear _after_ the comma-seperated arguments.
+  > Well, SBCL (and CMUCL for that matter) accept 
+  > (ASSERT (STRING= (FORMAT NIL "~:8D" 1) "   1"))
+  > where the correct way (IMHO) should be
+  > (ASSERT (STRING= (FORMAT NIL "~8:D" 1) "   1"))
+  Probably SBCL should stop accepting the "~:8D"-style format arguments,
+  or at least issue a warning.
+
+
 KNOWN BUGS RELATED TO THE IR1 INTERPRETER
 
 (Note: At some point, the pure interpreter (actually a semi-pure
diff --git a/NEWS b/NEWS
index e2a01ea..ac16da9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -602,6 +602,9 @@ changes in sbcl-0.6.9 relative to sbcl-0.6.8:
 * fixed bug 5: added stubs for various Gray stream functions called
   in the not-a-CL:STREAM case, so that even when Gray streams aren't
   installed, at least appropriate type errors are generated
+* fixed bug 8: better reporting of various PROGRAM-ERRORs
+?? fixed bug 9: IGNORE and IGNORABLE now work reasonably in DEFMETHOD
+  forms. 
 * removed bug 21 from BUGS, since Martin Atzmueller points out that 
   it doesn't seem to affect SBCL after all
 
index 31a9e7d..ec8763c 100644 (file)
@@ -37,7 +37,7 @@
        (doc nil))
     (dolist (option options)
       (unless (consp option)
-       (error 'program-error
+       (error 'simple-program-error
               :format-control "bogus DEFPACKAGE option: ~S"
               :format-arguments (list option)))
       (case (car option)
         (setf nicknames (stringify-names (cdr option) "package")))
        (:size
         (cond (size
-               (error 'program-error
+               (error 'simple-program-error
                       :format-control "can't specify :SIZE twice."))
               ((and (consp (cdr option))
                     (typep (second option) 'unsigned-byte))
                (setf size (second option)))
               (t
                (error
-                'program-error
+                'simple-program-error
                 :format-control ":SIZE is not a positive integer: ~S"
                 :format-arguments (list (second option))))))
        (:shadow
           (setf exports (append exports new))))
        (:documentation
         (when doc
-          (error 'program-error
+          (error 'simple-program-error
                  :format-control "multiple :DOCUMENTATION options"))
         (setf doc (coerce (second option) 'simple-string)))
        (t
-        (error 'program-error
+        (error 'simple-program-error
                :format-control "bogus DEFPACKAGE option: ~S"
                :format-arguments (list option)))))
     (check-disjoint `(:intern ,@interns) `(:export  ,@exports))
       with x = (car list)
       for y in (rest list)
       for z = (remove-duplicates (intersection (cdr x)(cdr y) :test #'string=))
-      when z do (error 'program-error
+      when z do (error 'simple-program-error
                       :format-control "Parameters ~S and ~S must be disjoint ~
                                        but have common elements ~%   ~S"
                       :format-arguments (list (car x)(car y) z)))))
index 221cdd6..52880e8 100644 (file)
        spec))
 
     (when (find name (dd-slots defstruct) :test #'string= :key #'dsd-%name)
-      (error 'program-error
+      (error 'simple-program-error
             :format-control "duplicate slot name ~S"
             :format-arguments (list name)))
     (setf (dsd-%name islot) (string name))
index fa1c1da..276633d 100644 (file)
                                  (,',init-macro ,(car ',ordered-types)))))))
         (when ,packages
           ,(when (null symbol-types)
-             (error 'program-error
+             (error 'simple-program-error
                     :format-control
-                    "Must supply at least one of :internal, :external, or ~
-                     :inherited."))
+                    "At least one of :INTERNAL, :EXTERNAL, or ~
+                     :INHERITED must be supplied."))
           ,(dolist (symbol symbol-types)
              (unless (member symbol '(:internal :external :inherited))
                (error 'program-error
                       :format-control
-                      "~S is not one of :internal, :external, or :inherited."
+                      "~S is not one of :INTERNAL, :EXTERNAL, or :INHERITED."
                       :format-argument symbol)))
           (,init-macro ,(car ordered-types))
           (flet ((,real-symbol-p (number)
index 5ad7908..ced791c 100644 (file)
@@ -270,15 +270,15 @@ bootstrapping.
                    (class-prototype (or (generic-function-method-class gf?)
                                         (find-class 'standard-method))))))))
 
-;;; takes a name which is either a generic function name or a list specifying
-;;; a setf generic function (like: (SETF <generic-function-name>)). Returns
+;;; Take a name which is either a generic function name or a list specifying
+;;; a SETF generic function (like: (SETF <generic-function-name>)). Return
 ;;; the prototype instance of the method-class for that generic function.
 ;;;
-;;; If there is no generic function by that name, this returns the default
-;;; value, the prototype instance of the class STANDARD-METHOD. This default
-;;; value is also returned if the spec names an ordinary function or even a
-;;; macro. In effect, this leaves the signalling of the appropriate error
-;;; until load time.
+;;; If there is no generic function by that name, this returns the
+;;; default value, the prototype instance of the class
+;;; STANDARD-METHOD. This default value is also returned if the spec
+;;; names an ordinary function or even a macro. In effect, this leaves
+;;; the signalling of the appropriate error until load time.
 ;;;
 ;;; Note: During bootstrapping, this function is allowed to return NIL.
 (defun method-prototype-for-gf (name)
@@ -321,7 +321,7 @@ bootstrapping.
                                                        initargs
                                                        env)))
          `(progn
-            ;; Note: We could DECLAIM the type of the generic
+            ;; Note: We could DECLAIM the ftype of the generic
             ;; function here, since ANSI specifies that we create it
             ;; if it does not exist. However, I chose not to, because
             ;; I think it's more useful to support a style of
@@ -391,7 +391,13 @@ bootstrapping.
               (mname `(,(if (eq (cadr initargs-form) ':function)
                             'method 'fast-method)
                        ,name ,@qualifiers ,specls))
-              (mname-sym (intern (let ((*print-pretty* nil))
+              (mname-sym (intern (let ((*print-pretty* nil)
+                                       ;; (We bind *PACKAGE* to
+                                       ;; KEYWORD here as a way to
+                                       ;; force symbols to be printed
+                                       ;; with explicit package
+                                       ;; prefixes.)
+                                       (*package* sb-int:*keyword-package*))
                                    (format nil "~S" mname)))))
          `(eval-when ,*defmethod-times*
            (defun ,mname-sym ,(cadr fn-lambda)
@@ -428,8 +434,10 @@ bootstrapping.
     ,specializers-form
     ',unspecialized-lambda-list
     ,initargs-form
-    ;; Paper over a bug in KCL by passing the cache-symbol here in addition to
-    ;; in the list. FIXME: We should no longer need to do this.
+    ;; Paper over a bug in KCL by passing the cache-symbol here in
+    ;; addition to in the list. FIXME: We should no longer need to do
+    ;; this, since the CLOS code is now SBCL-specific, and doesn't
+    ;; need to be ported to every buggy compiler in existence.
     ',pv-table-symbol))
 
 (defmacro make-method-function (method-lambda &environment env)
index e6291a0..bfa3517 100644 (file)
@@ -15,4 +15,4 @@
 ;;; versions, and a string like "0.6.5.12" is used for versions which
 ;;; aren't released but correspond only to CVS tags or snapshots.
 
-"0.6.8.23"
+"0.6.8.24"