src/final.lisp (test-module): Make it useful for testing error reporting.
[sod] / src / module-parse.lisp
index d64e22e..bccc37b 100644 (file)
   ;; class-item ::= property-set raw-class-item
   (with-parser-context (token-scanner-context :scanner scanner)
     (make-class-type name)
-    (let* ((class (make-sod-class name (mapcar #'find-sod-class supers)
+    (let* ((duff nil)
+          (class (make-sod-class name
+                                 (restart-case
+                                     (mapcar #'find-sod-class supers)
+                                   (continue ()
+                                     (setf duff t)
+                                     (list (find-sod-class "SodObject"))))
                                  pset scanner))
           (nick (sod-class-nickname class)))
 
                              (check-unused-properties sub-pset))))
                     (nil (error () #\})))
                 (finalize-sod-class class)
-                (add-to-module *module* class)))))))
+                (unless duff
+                  (add-to-module *module* class))))))))
 
 (define-pluggable-parser module class (scanner pset)
   ;; `class' id `:' id-list class-body