Is there a way to suppress warnings that the compiler spits out? In
particular in LispWorks, I'm getting:
"Multi form multi-value-call is inefficient"
I already know this, but I use this in a macro and so I'm getting quite
a few warnings when I compile -- sorting through them to find any real
errors is not fun. I'm hoping there is a simple DELCARE I can do to
ignore it.
Thanks!
Jeff
Jeff M. wrote:
> Is there a way to suppress warnings that the compiler spits out? In
> particular in LispWorks, I'm getting:
>
> "Multi form multi-value-call is inefficient"
This was aked not too long ago on the lisp-hug mailing list.
Unfortunately, the answer is "No". (It bothers me too from
time to time. It's the only warning message that I usually
want to ignore.)
Arthur
Arthur Lemmens <········@xs4all.nl> writes:
> Jeff M. wrote:
>
>> Is there a way to suppress warnings that the compiler spits out? In
>> particular in LispWorks, I'm getting:
>>
>> "Multi form multi-value-call is inefficient"
>
> This was aked not too long ago on the lisp-hug mailing list.
> Unfortunately, the answer is "No". (It bothers me too from
> time to time. It's the only warning message that I usually
> want to ignore.)
Not that this helps you with your immediate problem, but perhaps it's
worth discussing the mechanism I implemented in SBCL for doing exactly
this. The meat of the work was to make sure that all of these
diagnostics were actually implemented using the condition system, with
a documented class hierarchy. At present that hierarchy is fairly
bare, being
SB-EXT:COMPILER-NOTE
SB-EXT:CODE-DELETION-NOTE
but it is of course open to backwards-compatible extension. (So there
is reason to be fairly conservative in adding new condition classes.)
Once that is done, then half of the battle is won: the user can
silence a particular class of notes, style-warnings, or the like
simply by wrapping the compiling form with a handler, as in
(handler-bind ((sb-ext:code-deletion-note #'muffle-warning))
(compile-file "complex.lisp")).
However, this is only half; it is also necessary to provide a
mechanism for inhibiting conditions emitted from a block of code.
The user can do this with a declaration, as in for example
(defun foo ()
(declare (sb-ext:muffle-conditions sb-ext:code-deletion-note))
(if #.(possibly-constant-computation)
(frob)
(quux)))
where the compiler will muffle conditions of the given class during
compilation of the associated body.
I hope that gives some ideas.
Christophe