Common Lisp the Language, 2nd Edition


next up previous contents index
Next: Restart Functions Up: Program Interface to Previous: Finding and Manipulating

29.4.9. Warnings

change_begin
Warnings are a subclass of errors that are conventionally regarded as ``mild.''


[Function]
warn datum &rest arguments

[This supersedes the description of warn given in section 24.1.-GLS]

Warns about a situation, by signaling a condition of type warning.

If datum is a condition, then that condition is used directly. In this case, if the condition is not of type warning or arguments is non-nil, an error of type type-error is signaled.

If datum is a condition type (a class or class name), then the condition used is effectively the result of (apply #'make-condition datum arguments). This result must be of type warning or an error of type type-error is signaled.

If datum is a string, then the condition used is effectively the result of

(make-condition 'simple-error 
                :format-string datum 
                :format-arguments arguments)

The precise mechanism for warning is as follows.

  1. The warning condition is signaled.

    While the warning condition is being signaled, the muffle-warning restart is established for use by a handler to bypass further action by warn (that is, to cause warn to immediately return nil).

    As part of the signaling process, if (typep condition *break-on-signals*) is true, then a break will occur prior to beginning the signaling process.

  2. If no handlers for the warning condition are found, or if all such handlers decline, then the condition will be reported to *error-output* by the warn function (with possible implementation-specific extra output such as motion to a fresh line before or after the display of the warning, or supplying some introductory text mentioning the name of the function that called warn or the fact that this is a warning).

  3. The value returned by warn (if it returns) is nil.
change_end



next up previous contents index
Next: Restart Functions Up: Program Interface to Previous: Finding and Manipulating


AI.Repository@cs.cmu.edu