Arrange to be able to do more computation on the direct superclass
list. No functional change for now.
(with-parser-context (token-scanner-context :scanner scanner)
(when name (make-class-type name))
(let* ((duff (null name))
(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
(synthetic-name (or name
(let ((var (synthetic-name)))
(unless pset
(unless (pset-get pset "nick")
(add-property pset "nick" var :type :id))
var)))
(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 ()
(nick (sod-class-nickname class)))
(labels ((must-id ()