chiark / gitweb /
src/class-utilities.lisp: Improve reporting of multiple root classes.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 26 Mar 2017 14:16:18 +0000 (15:16 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 8 Jun 2018 18:58:28 +0000 (19:58 +0100)
src/class-utilities.lisp

index 38cb75ef073f422c82fb26ecb2d89e5433da9e02..5b3021f8e414a927682ba0a078e322a7023714d3 100644 (file)
@@ -212,10 +212,15 @@ (defun find-root-superclass (class)
                                                   (sod-class-chains super)))
                                         supers)))
                    (list class))))
-    (cond ((null roots) (error "Class ~A has no root class!" class))
-         ((cdr roots) (error "Class ~A has multiple root classes ~
-                              ~{~A~#[~; and ~;, ~]~}"
-                             class roots))
+    (cond ((null roots)
+          (error "Class ~A has no root class!" class))
+         ((cdr roots)
+          (cerror* "Class ~A has multiple root classes ~
+                    ~{~#[~;~A~;~A and ~A~:; ~@{~A, ~#[~;and ~A~]~}~]~}"
+                   class roots)
+          (let ((state (make-inheritance-path-reporter-state class)))
+            (dolist (root roots)
+              (report-inheritance-path state root))))
          (t (car roots)))))
 
 (export 'find-root-metaclass)