Raise a continuable error when instantiating an unpatched OPERATION.
The behavior of OPERATION has changed: previously it would act roughly like LOAD-OP, and automatically have dependencies, but now that behavior has been removed in a clean-up. In order to support programmers, we attempt to detect programmer-defined OPERATION subclasses and signal an error if we believe they are unpatched. The new dependency-handling is implemented in the classes DOWNWARD-OPERATION, UPWARD-OPERATION, SIDEWAY-OPERATION, SELFWARD-OPERATION, and the newly-added NON-PROPAGATING-OPERATION. To detect unpatched OPERATION classes, when we are instantiating an OPERATION, we check to make sure it has one of the above classes as a superclass. If it does not, we raise a continuable error. This is done in an INITIALIZE-INSTANCE :BEFORE method on OPERATION. We considered trying to detect the definition of OPERATION subclasses, but because the MOP is not standard, that approach was rejected as infeasible. Add NON-PROPAGATING-OPERATION as superclass where needed. Further checks and some documentation. Thanks to Fare for advice. Check that no OPERATION is both propagating and non-propagating. Thanks to Fare for the suggestion.
Showing with 27 additions and 9 deletions