Running roxygenise with a unmodified code lead to the following.
>library(roxygen3)
> roxygenise('.')
Loading PResiduals
Loading required namespace: Formula
@method is deprecated. S3 methods are now detected automatically.
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'process_family' of mode 'function' was not found
> traceback()
8: get(as.character(FUN), mode = "function", envir = envir)
7: match.fun(process) at bundle.r#24
6: f(...) at memoise.r#28
5: cached_processor(process, input) at bundle.r#7
4: .local(input, ...)
3: process(pkg) at all-generics.r#37
2: process(pkg) at roxygenise.r#31
1: roxygenise(".")
This appears to be an namespace issue with memoise. It can be duplicated using the following code placed in a namespac where foobar, foo, and bar are exported and bob is not exported.
bob <- function(input) {
input + 5
}
foo <- function(process, input) {
a <- match.fun(process)
a(input)
}
bar <- memoise(foo)
foobar <- function() {
cat('Running foo\n')
print(foo('bob', 5))
cat('Running bar\n')
print(bar('bob', 5))
return("done")
}
Then running the following code
You get the following output
> foobar()
Running foo
[1] 10
Running bar
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'bob' of mode 'function' was not found
Calls: foobar -> print -> bar -> f -> match.fun -> get
> traceback()
6: get(as.character(FUN), mode = "function", envir = envir)
5: match.fun(process) at TempTest.R#6
4: f(...) at memoise.r#28
3: bar("bob", 5)
2: print(bar("bob", 5)) at TempTest.R#18
1: foobar()
so foo() runs correctly however the memoise version of foo() bar() does not. As near as I can tell its because match.fun() is looking for 'bob' in the memoise namespace.
Running roxygenise with a unmodified code lead to the following.
This appears to be an namespace issue with memoise. It can be duplicated using the following code placed in a namespac where foobar, foo, and bar are exported and bob is not exported.
Then running the following code
You get the following output
so foo() runs correctly however the memoise version of foo() bar() does not. As near as I can tell its because match.fun() is looking for 'bob' in the memoise namespace.