Commit 64d01eca authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

Stop warning in define-convenience-methods explain

The convenience methods recursively call explain, which cause a style-warning
if the compiler-macro is already defined, and a different one if it is defined
afterwards. The solution is to declare the function notinline in the body of
the convenience methods.

This fixes test-clean-load on sbcl, and more generally
hushes loading asdf.lisp from source.
parent 734952c7
......@@ -194,6 +194,7 @@ test-clean-load: build/asdf.lisp
# test-glob has been replaced by t, and lisp by l, easier to type
test-lisp: build/asdf.lisp
@cd test; ./run-tests.sh ${l} ${t}
t: test-lisp
test: doc test-lisp test-clean-load test-load-systems
......
......@@ -88,15 +88,18 @@ and a class-name or class designates the canonical instance of the designated cl
`(,function ,@prefix ,o ,c ,@suffix))))
`(progn
(defmethod ,function (,@prefix (,operation string) ,component ,@suffix ,@more-args)
(declare (notinline ,function))
(let ((,component (find-component () ,component))) ;; do it first, for defsystem-depends-on
,(next-method `(safe-read-from-string ,operation :package :asdf/interface) component)))
(defmethod ,function (,@prefix (,operation symbol) ,component ,@suffix ,@more-args)
(declare (notinline ,function))
(if ,operation
,(next-method
`(make-operation ,operation)
`(or (find-component () ,component) ,if-no-component))
,if-no-operation))
(defmethod ,function (,@prefix (,operation operation) ,component ,@suffix ,@more-args)
(declare (notinline ,function))
(if (typep ,component 'component)
(error "No defined method for ~S on ~/asdf-action:format-action/"
',function (make-action ,operation ,component))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment