I've set up a repo with a reproducible example of the issue described in my last email:
https://github.com/Enchufa2/dispatchS3dots Iñaki 2018-02-20 19:33 GMT+01:00 Iñaki Úcar <i.uca...@gmail.com>: > Hi all, > > Not sure if this belongs to R-devel or R-package-devel. Anyways... > > Suppose we have objects of class c("foo", "bar"), and there are two S3 > methods c.foo, c.bar. In c.foo, I'm trying to modify the dots and > forward the dispatch using NextMethod without any success. This is > what I've tried so far: > > c.foo <- function(..., recursive=FALSE) { > dots <- list(...) > # inspect and modify dots > # ... > do.call( > function(..., recursive=FALSE) structure(NextMethod("c"), class="foo"), > c(dots, recursive=recursive) > ) > } > > foobar <- 1 > class(foobar) <- c("foo", "bar") > c(foobar, foobar) > Error: C stack usage 7970788 is too close to the limit > > There's recursion (!). But the funniest thing is that if c.foo is > exported by one package and c.bar is exported by another one, there's > no recursion, but c.bar is never called (!!). Why is the same code > behaving in a different way depending on whether these functions are > defined in the .GlobalEnv or in two attached packages? (BTW, > isS3method() is TRUE, for c.foo and c.bar in both cases). > > I'm blocked here. Am I missing something? Is there a way of doing > this? Thanks in advance. > > Regards, > Iñaki -- Iñaki Úcar http://www.enchufa2.es @Enchufa2 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel