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 0a3cd28..747bdf7 100644 (file)
                                  (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