source("incl/start.R")
options(future.debug = FALSE)
plan(sequential)
message("Overriding reserved keyword functions ...")
## Identify globals used by the expanded future expression
...names <- globals::findGlobals(getExpression(future(NULL)))
...names <- ...names[sapply(...names, FUN = exists, mode = "function")]
## Skip test with '<-' because it causes issues for at least R 3.2.0 & 3.3.0
if (getRversion() < "3.4.0") ...names <- setdiff(...names, "<-")
print(...names)
boom <- function(...) stop("Boom!")
base_sprintf <- base::sprintf
base_tryCatch <- base::tryCatch
base_rm <- base::rm
fails <- logical(length(...names))
names(fails) <- ...names
for (kk in seq_along(...names)) {
name <- ...names[kk]
message(base_sprintf(" - %d/%d %s: ", kk, length(...names), sQuote(name)), appendLF = FALSE)
assign(name, boom)
res <- base_tryCatch(suppressWarnings({
future(NULL)
}), error = identity)
base_rm(list = name)
if (inherits(res, "error")) {
fails[kk] <- TRUE
message("FAIL")
} else {
message("OK")
}
}
message("Reserved keyword functions that must not be overridden:")
print(names(fails)[fails])
## future 1.15.1:
## [1] "{" "<-" "Sys.time"
## [4] "options" "requireNamespace" "if"
## [7] "packageVersion" "||" "!"
## [10] "<" "::" "is.na"
## [13] "rawConnection" "raw" "sink"
## [16] "on.exit" "is.null" "close"
## [19] "sys.nframe" "list" "tryCatch"
## [22] "$<-" "rawToChar" "rawConnectionValue"
message("Overriding reserved keyword functions ... done")
source("incl/end.R")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.