src/module-parse.lisp (parse-class-body): Refactor superclass list.
[sod] / src / module-parse.lisp
index c5b28a6..0a3cd28 100644 (file)
   (with-parser-context (token-scanner-context :scanner scanner)
     (when name (make-class-type name))
     (let* ((duff (null name))
+          (superclasses
+           (let ((superclasses (restart-case
+                                   (mapcar #'find-sod-class
+                                           (or supers (list "SodObject")))
+                                 (continue ()
+                                   (setf duff t)
+                                   (list (find-sod-class "SodObject"))))))
+             superclasses))
           (synthetic-name (or name
                               (let ((var (synthetic-name)))
                                 (unless pset
                                 (unless (pset-get pset "nick")
                                   (add-property pset "nick" var :type :id))
                                 var)))
-          (class (make-sod-class synthetic-name
-                                 (restart-case
-                                     (mapcar #'find-sod-class
-                                             (or supers (list "SodObject")))
-                                   (continue ()
-                                     (setf duff t)
-                                     (list (find-sod-class "SodObject"))))
-                                 pset scanner))
+          (class (make-sod-class synthetic-name superclasses pset scanner))
           (nick (sod-class-nickname class)))
 
       (labels ((must-id ()