[Asdf-devel] ASDF does not signal deferred non-style warnings as an error

Faré fahree at gmail.com
Wed Oct 29 23:14:53 UTC 2014

When I try to reproduce compilation of Ilya's system (renaming it
undef-var, to prevent any clash) using
sbcl-, it "works" exactly as expected:

1- if deferred warnings are disabled (the default), then the
compilation succeeds, and I get an undefined variable warning at the
end of the build but that doesn't cause a build failure, because
operate's with-compilation-unit doesn't catch these warnings (and
can't replay those from previous sessions, anyway).

2- if deferred warnings are enabled via
(uiop:enable-deferred-warnings), then the compilation fails while
perform'ing a compile-op on the system, because it replays the
undefined-warnings and checks that the variable still doesn't exist

It could be argued that undefined-variable warnings, unlike
undefined-function warnings, should not be deferrable, and that it's
always a warning to use a special variable that wasn't declared as
such. But that's not what SBCL does.

I can't explain why you have a different result, unless your setup
somehow configures some conditions as uninteresting.

On the other hand, differences between compilers easily explain
variations between condition reported by ASDF, since they depend both
on what conditions the compiler reports, that are not portable, and on
the *compile-file-warnings-behaviour* and
*compile-file-failure-behaviour* values, that are also unportable.
Note that unless you :force t, non-fatal warnings can disappear the
second time around.

NB: Back when I first pre-released ASDF3, I wanted to enable
deferred-warnings by default, but this turned out to be a
community-wide coordination nightmare, and I had to bail out. If
someone wants to make it happen, he'll have to make sure that it
doesn't break quicklisp and then still have to convince the community
and the ASDF maintainer that the change is worth it and that enough
publicity is made that random users don't get badly surprised.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
The meta-Turing test counts a thing as intelligent if it seeks to apply
Turing tests to objects of its own creation.
                — Lew Mammel, Jr.

On Wed, Oct 29, 2014 at 6:27 PM, Ilya Perminov <iperminov at dwavesys.com> wrote:
> "Robert P. Goldman" <rpgoldman at sift.info> writes:
>> 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.
> Very strange. I can reproduce the problem with all the SBCL versions I
> have: 1.1.4, 1.1.18, 1.2.4. SBCL 1.2.4 includes the latest version of
> ASDF. Do you see any difference in behavior between deferred and normal
> warnings, i.e. (defun foo () (+ a b)) vs (defun foo () (foo 3))?
> _______________________________________________
> Asdf-devel mailing list
> Asdf-devel at common-lisp.net
> http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel

More information about the asdf-devel mailing list