• Robert P. Goldman's avatar
    Raise a continuable error when instantiating an unpatched OPERATION. · 8fa22cd5
    Robert P. Goldman authored
    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.
    8fa22cd5
action.lisp 18.3 KB