X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/d145f6df86aca5c0b520f300ce8821e762a9707b..05b7480df1a1804bbf3ba3f7ce00f757cf703b1a:/src/class-make-proto.lisp diff --git a/src/class-make-proto.lisp b/src/class-make-proto.lisp index c04727c..8b024bd 100644 --- a/src/class-make-proto.lisp +++ b/src/class-make-proto.lisp @@ -45,8 +45,14 @@ (defun make-sod-class (name superclasses pset &optional location) (with-default-error-location (location) (let* ((pset (property-set pset)) - (class (make-instance (get-property pset :lisp-metaclass :symbol - 'sod-class) + (best-class (or (get-property pset :lisp-metaclass :symbol nil) + (if superclasses + (maximum (mapcar #'class-of superclasses) + #'subtypep + (format nil "Lisp metaclass for ~A" + name)) + 'sod-class))) + (class (make-instance best-class :name name :superclasses superclasses :location (file-location location)