[Rd] [External] DOCS: Exactly when, in the signaling process, is option 'warn' applied?

iuke-tier@ey m@iii@g oii uiow@@edu iuke-tier@ey m@iii@g oii uiow@@edu
Thu Nov 18 19:22:34 CET 2021


On Thu, 18 Nov 2021, Henrik Bengtsson wrote:

> Hi,
>
> the following question sprung out of a package settings option warn=-1
> to silence warnings, but those warnings were still caught by
> withCallingHandlers(..., warning), which the package author did not
> anticipate. The package has been updated to use suppressWarnings()
> instead, but as I see a lot of packages on CRAN [1] use
> options(warn=-1) to temporarily silence warnings, I wanted to bring
> this one up. Even base R itself [2] does this, e.g.
> utils::assignInMyNamespace().
>
> Exactly when is the value of 'warn' options used when calling warning("boom")?
>

In the default handler; it doesn't affect signaling.

Much of the documentation pre-dates the condition system; happy to
consider patches.

Best,

luke

> I think the docs, including ?options, would benefit from clarifying
> that. To the best of my understanding, it should also mention that
> options 'warn' is meant to be used by end-users, and not in package
> code where suppressWarnings() should be used.
>
> To clarify, if we do:
>
>> options(warn = -1)
>> tryCatch(warning("boom"), warning = function(w) stop("Caught warning: ", conditionMessage(w), call. = FALSE))
> Error: Caught warning: boom
>
> we see that the warning is indeed signaled.  However, in Section '8.2
> warning' of the 'R Language Definition' [3], we can read:
>
> "The function `warning` takes a single argument that is a character
> string. The behaviour of a call to `warning` depends on the value of
> the option `"warn"`. If `"warn"` is negative warnings are ignored.
> [...]"
>
> The way this is written, it may suggest that warnings are
> ignored/silences already early on when calling warning(), but the
> above example shows that that is not the case.
>
> From the same section, we can also read:
>
> "[...] If it is zero, they are stored and printed after the top-level
> function has completed. [...]"
>
> which may hint at the 'warn' option is applied only when a warning
> condition is allowed to "bubble up" all the way to the top level.
> (FWIW, this is how always though it worked, but it's only now I looked
> into the docs and see it's ambiguous on this).
>
> /Henrik
>
> [1] https://github.com/search?q=org%3Acran+language%3Ar+R%2F+in%3Afile%2Cpath+options+warn+%22-1%22&type=Code
> [2] https://github.com/wch/r-source/blob/0a31ab2d1df247a4289efca5a235dc45b511d04a/src/library/utils/R/objects.R#L402-L405
> [3] https://cran.r-project.org/doc/manuals/R-lang.html#warning
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
    Actuarial Science
241 Schaeffer Hall                  email:   luke-tierney using uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu



More information about the R-devel mailing list