Hi, Fare
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 [1], because I'm trying to do LALR parsing for a very ambiguous language called ASN.1 [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.
Regards,
Chun Tian (binghe)
[1] http://www.pps.jussieu.fr/~jch/software/cl-yacc/
在 2011-3-20,07:53, Faré 写道:
On 19 March 2011 14:51, Chun Tian (binghe) binghe.lisp@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.