chiark / gitweb /
src/module-parse.lisp (parse-class-body): Check for duplicate superclasses.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 9 Jul 2018 12:04:38 +0000 (13:04 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 9 Jul 2018 12:09:58 +0000 (13:09 +0100)
It turns out that this is a thing that can happen.  Catch it early
rather than waiting for a less helpful message during CPL construction.

src/module-parse.lisp

index 0a3cd28296adcfbb129cbf61cc5a8641bf584d9e..747bdf75157c2905b1906b9857ab73a8525dcb4d 100644 (file)
@@ -267,7 +267,14 @@ (defun parse-class-body (scanner pset name supers)
                                  (continue ()
                                    (setf duff t)
                                    (list (find-sod-class "SodObject"))))))
-             superclasses))
+             (find-duplicates (lambda (first second)
+                                (declare (ignore second))
+                                (setf duff t)
+                                (cerror* "Class `~A' has duplicate ~
+                                          direct superclass `~A'"
+                                         name first))
+                              superclasses)
+             (delete-duplicates superclasses)))
           (synthetic-name (or name
                               (let ((var (synthetic-name)))
                                 (unless pset