0.8.10.60:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 28 May 2004 13:39:20 +0000 (13:39 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 28 May 2004 13:39:20 +0000 (13:39 +0000)
Give BUG a proper cross-compiler definition as a condition
... this means the xc and target definitions of the BUG function
can now be the same.
Log a bug discovered by looking at Show Class Subclasses CONDITION
in the clim listener

BUGS
src/code/condition.lisp
src/code/cross-condition.lisp
src/code/early-extensions.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index b8f261c..6ec74ab 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1432,3 +1432,19 @@ WORKAROUND:
   up the special variable binding semantics using UNWIND-PROTECT and
   (2) it might be sort of a pain to test that no other bugs had been
   introduced. 
+
+327: "Lazy construction of CLOS classes from system classoids"
+  In a fresh SBCL,
+    (sb-mop:class-direct-subclasses (find-class 'pathname))
+  returns NIL, despite the LOGICAL-PATHNAME class existing.  However,
+  if we then do (find-class 'logical-pathname) and repeat the request
+  for direct subclasses, a list of the logical pathname class is
+  returned.  (Though this particular example revealed the problem to
+  CSR, others have found that this gave consistent results for
+  PATHNAME, but not for SIMPLE-CONDITION.)
+
+  Presumably the CLOS bootstrap process needs to iterate over
+  classoids (both structure- and condition-) to create CLOS classes
+  for them, so that this internal inconsistency does not arise?  How
+  does this interact with the classoid hierarchy not perfectly
+  mirroring the class hierarchy?  (e.g. INSTANCE?)
index 0534bc0..43e034d 100644 (file)
               mailing lists, which you can find at ~
               <http://sbcl.sourceforge.net/>.~:@>"
             '((fmakunbound 'compile))))))
-(defun bug (format-control &rest format-arguments)
-  (error 'bug
-        :format-control format-control
-        :format-arguments format-arguments))
 
 ;;; a condition for use in stubs for operations which aren't supported
 ;;; on some platforms
index a9a89ff..6867cb4 100644 (file)
 ;;; in the cross-compiler, this is a full warning.  In the target
 ;;; compiler, it will only be a style-warning.
 (define-condition format-too-many-args-warning (simple-warning) ())
+
+(define-condition bug (simple-error)
+  ()
+  (:report
+   (lambda (condition stream)
+     (format stream
+            "~@<  ~? ~:@_~?~:>"
+            (simple-condition-format-control condition)
+            (simple-condition-format-arguments condition)
+            "~@<If you see this and are an SBCL ~
+developer, then it is probable that you have made a change to the ~
+system that has broken the ability for SBCL to compile, usually by ~
+removing an assumed invariant of the system, but sometimes by making ~
+an averrance that is violated (check your code!). If you are a user, ~
+please submit a bug report to the developers' mailing list, details of ~
+which can be found at <http://sbcl.sourceforge.net/>.~:@>"
+            ()))))
index 5fb2c0f..6a95f38 100644 (file)
 (defun %failed-aver (expr-as-string)
   (bug "~@<failed AVER: ~2I~_~S~:>" expr-as-string))
 
-;;; We need a definition of BUG here for the host compiler to be able
-;;; to deal with BUGs in sbcl. This should never affect an end-user,
-;;; who will pick up the definition that signals a CONDITION of
-;;; condition-class BUG; however, this is not defined on the host
-;;; lisp, but for the target. SBCL developers sometimes trigger BUGs
-;;; in their efforts, and it is useful to get the details of the BUG
-;;; rather than an undefined function error. - CSR, 2002-04-12
-#+sb-xc-host
 (defun bug (format-control &rest format-arguments)
-  (error 'simple-error
-        :format-control "~@<  ~? ~:@_~?~:>"
-        :format-arguments `(,format-control
-                            ,format-arguments
-                            "~@<If you see this and are an SBCL ~
-developer, then it is probable that you have made a change to the ~
-system that has broken the ability for SBCL to compile, usually by ~
-removing an assumed invariant of the system, but sometimes by making ~
-an averrance that is violated (check your code!). If you are a user, ~
-please submit a bug report to the developers' mailing list, details of ~
-which can be found at <http://sbcl.sourceforge.net/>.~:@>"
-                            ())))
+  (error 'bug
+        :format-control format-control
+        :format-arguments format-arguments))
 
 (defmacro enforce-type (value type)
   (once-only ((value value))
index a0b1ef3..0bbc9b4 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".)
-"0.8.10.59"
+"0.8.10.60"