[Rd] trace creates object in base namespace if called on function argument
Antoine Fabri
@nto|ne@|@br| @end|ng |rom gm@||@com
Tue Aug 25 22:02:22 CEST 2020
Dear R-devel,
I don't think this is expected :
foo <- function() "hello"
trace2 <- function(fun) trace(fun, quote(print("!!!")))
base::fun
# Object with tracing code, class "functionWithTrace"
# Original definition:
# function() "hello"
#
# ## (to see the tracing code, look at body(object))
`untrace()` has the same behavior.
This is inconsistent with how debug works :
foo <- function() "hello"
debug2 <- function(fun) debug(fun)
debug2(foo)
isdebugged(foo)
# [1] TRUE
This can be worked around by defining :
trace2 <- function(fun) eval.parent(substitute(trace(fun,
quote(print("!!!")))
but I believe the current behavior is undesired and it'd be better to make
it behave as `debug()`, or to throw an error.
Best,
Antoine
[[alternative HTML version deleted]]
More information about the R-devel
mailing list