Comment 7 for bug 1332983

Revision history for this message
Alastair Bridgewater (alastair-bridgewater) wrote :

Okay, good call on the specification of VALIDATE-SUPERCLASS. It is specifically callable by user code, and it is specifically called before storing the direct superclasses in a new metaclass, but it is defined in terms of superclass, not direct superclass. AMOP Initialization of Class Metaobjects specifies that VALIDATE-SUPERCLASS is called only for direct superclasses, but nothing prevents a custom metaclass from defining a BEFORE or AROUND method that does additional validation for whatever reason, and likewise nothing prevents any other code from performing such validation.

The issue that we seem to be trying to dodge around, however, is if AMOP is incorrect to specify that Class T is a BUILT-IN-CLASS, or if CLHS is incorrect to specify that DEFCLASS is not allowed to create ANY subclass of a BUILT-IN-CLASS (rather than merely not being allowed to create DIRECT subclasses of a BUILT-IN-CLASS). My contention here, resting strongly on the issue writup for METACLASS-OF-SYSTEM-CLASS:UNSPECIFIED is that the system is expected to be implementable (though not necessarily implemented) with just the three specified metaclasses, and thus Class T should be able to be one of the three specified metaclasses, and that the only one which makes any kind of sense is BUILT-IN-CLASS.

Actual implementation options for the DEFCLASS restriction can come after we have an agreement as to the correct semantics.