diff --git a/action.lisp b/action.lisp index 67725bd9cd32cc810572975515b2ce57d88f8149..431dc6c8dd617f5a0605f30bdeb772421b860de0 100644 --- a/action.lisp +++ b/action.lisp @@ -377,9 +377,12 @@ in some previous image, or T if it needs to be done.") (defmethod perform ((o operation) (c parent-component)) nil) (defmethod perform ((o operation) (c source-file)) - (sysdef-error - (compatfmt "~@<Required method PERFORM not implemented for operation ~A, component ~A~@:>") - (class-of o) (class-of c))) + ;; For backward compatibility, don't error on operations that don't specify propagation. + (when (typep o '(or downward-operation upward-operation sideway-operation + selfward-operation non-propagating-operation)) + (sysdef-error + (compatfmt "~@<Required method ~S not implemented for ~/asdf-action:format-action/~@:>") + 'perform (cons o c)))) (defmethod perform-with-restarts (operation component) ;; TOO verbose, especially as the default. Add your own :before method diff --git a/test/test-operation-classes.script b/test/test-operation-classes.script index 1d569870265ba39cc622b827a50221e1b799f102..c7599d15ce751d00ec308363ce789abdeb2855b1 100644 --- a/test/test-operation-classes.script +++ b/test/test-operation-classes.script @@ -71,3 +71,5 @@ (trivial-operation "test-asdf/test-module-depend" "quux" "file3mod" "file3") (trivial-operation "test-asdf/test-module-depend" "quux" "file3mod") (trivial-operation "test-asdf/test-module-depend" "quux"))) + +(operate 'trivial-operation 'test-asdf/test-module-depend)