[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Classes with forward-referenced supers.

What is the official word on making instances when a class has
forward-referenced super-classes?

e.g. (defclass a (b) (...) (...))
     (make-instance 'a)

This worked in the "Can't think of a cute name PCL" (12/7/88), but
caused crashes in Victoria Day PCL.  Mike Thome sent out a patch to
allocate-instance back in August 89 that instead signalled an error
when it noticed it instead of crashing.  I grabbed the 1/1/90 alpha PCL,
to see what it did, and it also signalled an error rather than making
the instance.

I don't see anything in CLOS Document 88-002R (the latest I could find
on arisia.xerox.com's pcl/doc) that mentions this.

It seems to me that making instances of classes with forward-referenced
supers definitely *should* be legal, simply creating an instance that
is minus the features of those forward-referenced classes.  When the
forward-referenced supers are actually defined, of course, PCL 
would then have to update any previously created instances, but this is
no different than when the class itself is redefined.

On the other hand, it seems *quite* important to be able to make instances
when all of the super-classes are not yet defined.  Applying
class-prototypes comes directly to mind, plus defining classes with lists
of possible super-class mixins, which either may or may not be used
depending upon whether a user wants to load them or not.

So, is making an instance of a class with forward-referenced supers going
to be an official error, or will it be considered legal, in which case it
will be fixed in the next version of PCL?

- Trent Lange