[asdf-devel] About asdf:*compile-file-failure-behaviour* and its value on SBCL
Chun Tian (binghe)
binghe.lisp at gmail.com
Sun Mar 20 00:54:06 UTC 2011
Thanks you for your explanation ... it seems that you're suggesting a general WARN condition should never been signaled on compile-time.
Most of the compile-time warnings in my program comes from cl-yacc , because I'm trying to do LALR parsing for a very ambiguous language called ASN.1 , there're 28 Shift/Reduce, and 1 Reduce/Reduce conflicts in my LALR grammar rules and it produce correct result. Fortunately I used a modified version of cl-yacc and directly include it as vendor code (and changed its package), so I can change all these warnings into style-warnings, to make SBCL happy.
There's another compile-time warning in my CLOS related code, something like this:
(defclass a-class ()
((slot :type 'a-subclass)))
(defclass a-subclass (a-class)
When compiling the first class definition, SBCL warn that the type A-SUBCLASS haven't been defined (this is true, but I defined it immediately in next form). I think, to make SBCL happy, again, I have to reorder above two definitions, putting the definition of A-SUBCLASS before A-CLASS, and CLOS does support this, using a MOP feature called FORWARDED-REFERENCE-CLASS.
I still don't think these coding styles are wrong according ANSI Common Lisp standards, but if ASDF insist to do so, I have to modify my code.
Chun Tian (binghe)
在 2011-3-20，07:53， Faré 写道：
> On 19 March 2011 14:51, Chun Tian (binghe) <binghe.lisp at gmail.com> wrote:
>> Hi, ASDF developers
>> I think asdf:*compile-file-failure-behaviour* should never been set to :error, just :warn is good.
> Well, SBCL is known for its anal attitude towards declaring as an
> error or failure anything that could be possibly interpreted as such
> by the standard, the idea being that a program that works in SBCL
> should work anywhere. Traditionally, a warning in SBCL counts as a
> failure in compilation.
>> I don't know why SBCL here is special, but this definition caused my project (cl-net-snmp 6.0) failed to be compiled by ASDF "only" on SBCL. Just try to put following lines in your ASDF based project and try to build it:
>> (eval-when (:compile-toplevel)
>> (warn "xxx"))
>> you'll find how ludicrous the current setting of asdf:*compile-file-failure-behaviour* are.
> What about using alexandria:simple-style-warning ? Maybe there should
> be a short-hand alexandria:style-warn? Meh. Or if that's what you
> want, just format something to the error-output. In any case, it's a
> long tradition for SBCL to behave that way, and other library authors,
> including I, have accepted that fact. I'm sorry that the answer isn't
> completely satisfactory to you. Been there, done that.
> [ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
> You don't have to like everything about me, but if you don't love me
> the way I am, it's not me you love, only some fantasy of yours.
More information about the asdf-devel