Martin Maechler
2023-Oct-31 11:00 UTC
[Rd] warnings() in R-devel: inherits from "warnings" - summary(warnings())
A few minutes ago, I have committed (svn rev 85445) to R-devel {R's development source code, https://svn.r-project.org/R/trunk/} a change with NEWS entry * warnings() now always inherits from "warnings" as documented, newly also in the case of no warnings, where it previously returned NULL. In addition to changing the R code to follow the help page, another plus is that now summary(warnings()) in the case of *no* warnings, correctly does R> summary(warnings()) no warnings instead of in current (released) R R> summary(warnings()) Length Class Mode 0 NULL NULL In a few CRAN / Bioc packages authors had used checks if( is.null(warnings()) ) which will no longer do what was intended, as the condition will always be FALSEm so we strongly recommend you replace all is.null(warnings()) by length(warnings()) == 0 (which works the same in current *and* future R versions). One package maintainer has already been alerted, as he had stopifnot(is.null(warnings())) at the end of his test script and needs to replace it. Something like summary(warnings()) stopifnot(length(warnings()) == 0) maybe a good way to end *such* test R scripts (where you treat warnings as errors in the end): Show (a summary of) the warnings if there are, and still stop. Otherwise, we now *can* recommend using summary(warnings()) more generally, and particularly useful sometimes after options(nwarnings = 1e5) # to get practically all warnings Best regards, Martin -- Martin Maechler ETH Zurich and R Core team