From: William Harold Newman Date: Fri, 24 Nov 2000 14:26:52 +0000 (+0000) Subject: 0.6.8.24: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=a158430a67a8df5a86fe834fc7427bcd256c7cb0;p=sbcl.git 0.6.8.24: fixed bug 8 by replacing (ERROR 'PROGRAM-ERROR ..) by (ERROR 'SIMPLE-PROGRAM-ERROR ..) everywhere tweaked MNAME-SYM in DEFMETHOD to avoid dependence on *PACKAGE* --- diff --git a/BUGS b/BUGS index b50388f..4fc5e0f 100644 --- 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 --- 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 diff --git a/src/code/defpackage.lisp b/src/code/defpackage.lisp index 31a9e7d..ec8763c 100644 --- a/src/code/defpackage.lisp +++ b/src/code/defpackage.lisp @@ -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) @@ -45,14 +45,14 @@ (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 @@ -86,11 +86,11 @@ (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)) @@ -113,7 +113,7 @@ 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))))) diff --git a/src/code/defstruct.lisp b/src/code/defstruct.lisp index 221cdd6..52880e8 100644 --- a/src/code/defstruct.lisp +++ b/src/code/defstruct.lisp @@ -590,7 +590,7 @@ 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)) diff --git a/src/code/package.lisp b/src/code/package.lisp index fa1c1da..276633d 100644 --- a/src/code/package.lisp +++ b/src/code/package.lisp @@ -279,15 +279,15 @@ (,',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) diff --git a/src/pcl/boot.lisp b/src/pcl/boot.lisp index 5ad7908..ced791c 100644 --- a/src/pcl/boot.lisp +++ b/src/pcl/boot.lisp @@ -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 )). Returns +;;; Take a name which is either a generic function name or a list specifying +;;; a SETF generic function (like: (SETF )). 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) diff --git a/version.lisp-expr b/version.lisp-expr index e6291a0..bfa3517 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"