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.
(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
* 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
(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)))))
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))
(,',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)
(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)
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
(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)
,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)
;;; 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"