• 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
Name
Last commit
Last update
bin Loading commit data...
contrib Loading commit data...
debian Loading commit data...
doc Loading commit data...
test Loading commit data...
uiop Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
Makefile Loading commit data...
README Loading commit data...
TODO Loading commit data...
action.lisp Loading commit data...
asdf.asd Loading commit data...
backward-interface.lisp Loading commit data...
backward-internals.lisp Loading commit data...
build.xcvb Loading commit data...
bundle.lisp Loading commit data...
cache.lisp Loading commit data...
component.lisp Loading commit data...
concatenate-source.lisp Loading commit data...
find-component.lisp Loading commit data...
find-system.lisp Loading commit data...
footer.lisp Loading commit data...
header.lisp Loading commit data...
interface.lisp Loading commit data...
lisp-action.lisp Loading commit data...
operate.lisp Loading commit data...
operation.lisp Loading commit data...
output-translations.lisp Loading commit data...
package-system.lisp Loading commit data...
parse-defsystem.lisp Loading commit data...
plan.lisp Loading commit data...
source-registry.lisp Loading commit data...
system.lisp Loading commit data...
upgrade.lisp Loading commit data...
user.lisp Loading commit data...
version.lisp-expr Loading commit data...