Ilya Perminov wrote:
Hi,
ASDF does not raise an error, when the SBCL compiler produces warnings (e.g. "undefined variable", "undefined function"). Example: ======== test.asd ============= (defsystem :test :version "1.0" :components ((:file "test"))) ======== test.lisp ============ (defun foo () (+ a b)) ===============================
(asdf:load-system :test) does not signal an error.
I discovered this problem using SBCL, but I bet it can be reproduced on some other CL implementations that deffer warnings. The cause of the problem is that WITH-COMPILATION-UNIT may affect result values (warnings-p, and failure-p) of COMPILE-FILE. sbcl-help has a discussion of this WITH-COMPILATION-UNIT/COMPILE-FILE interaction: http://sourceforge.net/p/sbcl/mailman/message/32976990/
I cannot replicate this, but this may be a new behavior introduced by recent changes to SBCL, and I'm not on the latest release yet.
However, I *do* see something odd: when I make a system that loads Ilya's example test.lisp, on SBCL (my version), the compilation fails with a COMPILE-FAILED-ERROR, but on ACL 9.0, the compilation fails with a COMPILE-FILE-ERROR.
I suspect that this is because the way ASDF grabs errors in the two lisps is different, but it's a trifle unsettling, since these are both conditions defined by ASDF.
I have pushed a new testlet into test-deferred-warnings.script; please try this out.
thanks! r