Things have been further simplified so that only three variables
govern printing of compiler messages. The situation is now as follows.
I would be very happy if anyone (Gaby?) gave some feedback on these
changes.
- The compiler now signals compiler-error, compiler-warning and compiler-note
for errors, warnings and notes, respectively.
- Printing of compiler messages is now ruled by *COMPILE-PRINT*,
*COMPILE-VERBOSE*
and *SUPPRESS-COMPILER-MESSAGES*. The latter is either NIL or a
valid lisp type
which denotes which compiler messages are suppressed. If
*SUPPRESS-COMPILER-MESSAGES*
is NIL and *COMPILE-VERBOSE* is NIL, then no messages are shown.
- *SUPPRESS-COMPILER-NOTES* and *SUPPRES-COMPILER-WARNINGS* are deprecated and
will be removed in next release.
- ECL allows the user to set up handlers for different compiler conditions,
including errors, warnings and simple notes. The recommended procedure is to
use HANDLER-BIND and _NOT_ to transfer control out of the compilation
environment, but to defer to the default handlers or use the restarts ABORT
and MUFFLE-WARNING.
(use-package :c)
(let ((warnings nil))
(handler-bind ((compiler-message #'(lambda (c)
(push c warnings))))
(compile-file "foo.lsp" :verbose nil :print nil))
(format t "~&;;; Printing compiler messages")
(loop for m in (nreverse warnings)
for i from 0
do (format t "~&~@<;;; ~@;Message #~D~%~A~:>" i m)))
Juanjo
--
Instituto de Física Fundamental
CSIC, Serrano, 113, Madrid 28040 (Spain)
http://juanjose.garciaripoll.googlepages.com

On Thu, Aug 21, 2008 at 2:47 PM, Juan Jose Garcia-Ripoll
<juanjose.garciaripoll@...> wrote:
> Things have been further simplified so that only three variables
> govern printing of compiler messages. The situation is now as follows.
> I would be very happy if anyone (Gaby?) gave some feedback on these
> changes.
>
> - The compiler now signals compiler-error, compiler-warning and compiler-note
> for errors, warnings and notes, respectively.
This categorization looks good to me.
>
> - Printing of compiler messages is now ruled by *COMPILE-PRINT*,
> *COMPILE-VERBOSE*
> and *SUPPRESS-COMPILER-MESSAGES*. The latter is either NIL or a
> valid lisp type
> which denotes which compiler messages are suppressed. If
> *SUPPRESS-COMPILER-MESSAGES*
> is NIL and *COMPILE-VERBOSE* is NIL, then no messages are shown.
would not it make sense to still print warnings when *COMPILE-VERBOSE* is
nil?
>
> - *SUPPRESS-COMPILER-NOTES* and *SUPPRES-COMPILER-WARNINGS* are deprecated and
> will be removed in next release.
I am fine with that.
>
> - ECL allows the user to set up handlers for different compiler conditions,
> including errors, warnings and simple notes. The recommended procedure is to
> use HANDLER-BIND and _NOT_ to transfer control out of the compilation
> environment, but to defer to the default handlers or use the restarts ABORT
> and MUFFLE-WARNING.
Is the restriction permanent or just temporary?
>
> (use-package :c)
> (let ((warnings nil))
> (handler-bind ((compiler-message #'(lambda (c)
> (push c warnings))))
> (compile-file "foo.lsp" :verbose nil :print nil))
> (format t "~&;;; Printing compiler messages")
> (loop for m in (nreverse warnings)
> for i from 0
> do (format t "~&~@<;;; ~@;Message #~D~%~A~:>" i m)))
>
> Juanjo
Looks good. Many thanks!
-- Gaby