Thank you Michael for updating the 3.4 branch, the `callNextMethod()` now works for `...` methods as expected. However, I'm still missing your other patch fixing the handling of arguments in `...` methods. It would be really great if this bugfix could be integrated into the 3.4 branch as well, such that the following code doesn't result in an error.
Cheers, Andrzej f = function(x, ..., a = b) { b = "missing 'a'" print(a) } f() ## [1] missing 'a' f(a = 1) ## [1] 1 setGeneric("f", signature = "x") # works as the non-generic version f() ## [1] missing 'a' setGeneric("f", signature = "...") # unexpectedly fails to find 'b' f() ## Error in print(a) : object 'b' not found On Fri, Jul 28, 2017 at 9:15 PM, Michael Lawrence <lawrence.mich...@gene.com > wrote: > I pushed the patch to the 3.4 branch. Feel free to test. > > Michael > > On Wed, Jul 26, 2017 at 4:02 AM, Andrzej Oleś <andrzej.o...@gmail.com> > wrote: > > Hi Michael, > > > > it seems that your patch to S4 generics dispatching on `...` is still > > available only in R-devel, and was not included in the minor R-3.4.1 > > release. I was wondering what is the policy of incorporating bug fixes > from > > the devel branch into release, and whether there is any chance that the > > broken `...` dispatch is fixed before R-3.5.0? > > > > Cheers, > > Andrzej > > > > > > On Tue, Apr 25, 2017 at 4:15 PM, Andrzej Oleś <andrzej.o...@gmail.com> > > wrote: > >> > >> You're right, I must have mixed up my R versions when running the > example, > >> as the problem seems to be resolved in R-devel. > >> > >> Sorry for the noise and thanks again for fixing this. > >> > >> Andrzej > >> > >> On Tue, Apr 25, 2017 at 3:55 PM, Michael Lawrence > >> <lawrence.mich...@gene.com> wrote: > >>> > >>> I attempted to fix it, and that example seems to work for me. It's > >>> also a (passing) regression test in R. Are you sure you're using a new > >>> enough R-devel? > >>> > >>> > >>> On Tue, Apr 25, 2017 at 2:34 AM, Andrzej Oleś <andrzej.o...@gmail.com> > >>> wrote: > >>> > Hi Michael, > >>> > > >>> > thanks again for your patch! I've tested it and I'm happy to confirm > >>> > that > >>> > `callNextMethod()` works with methods dispatching on `...`. > >>> > > >>> > However, the second issue I reported still seems to be unresolved. > >>> > Consider > >>> > the following toy example, where the `f()` calls differ in result > >>> > depending > >>> > on whether the dispatch happens on a formal argument or the `...` > >>> > argument. > >>> > > >>> > > >>> > f = function(x, ..., a = b) { > >>> > b = "missing 'a'" > >>> > print(a) > >>> > } > >>> > > >>> > f() > >>> > ## [1] missing 'a' > >>> > > >>> > f(a = 1) > >>> > ## [1] 1 > >>> > > >>> > setGeneric("f", signature = "x") > >>> > > >>> > # works as the non-generic version > >>> > f() > >>> > ## [1] missing 'a' > >>> > > >>> > setGeneric("f", signature = "...") > >>> > > >>> > # unexpectedly fails to find 'b' > >>> > f() > >>> > ## Error in print(a) : object 'b' not found > >>> > > >>> > > >>> > Any chances of fixing this? > >>> > > >>> > Cheers, > >>> > Andrzej > >>> > > >>> > > >>> > > >>> > On Fri, Apr 21, 2017 at 11:40 AM, Andrzej Oleś < > andrzej.o...@gmail.com> > >>> > wrote: > >>> >> > >>> >> Great, thanks Michael for you quick response! > >>> >> > >>> >> I started off with a question on SO because I was not sure whether > >>> >> this > >>> >> was an actual bug or I was just missing something obvious. I'm > looking > >>> >> forward to the patch. > >>> >> > >>> >> Cheers, > >>> >> Andrzej > >>> >> > >>> >> > >>> >> On Thu, Apr 20, 2017 at 10:28 PM, Michael Lawrence > >>> >> <lawrence.mich...@gene.com> wrote: > >>> >>> > >>> >>> Thanks for pointing out these issues. I have a fix that I will > commit > >>> >>> soon. > >>> >>> > >>> >>> Btw, I would never have seen the post on Stack Overflow. It's best > to > >>> >>> report bugs on the bugzilla. > >>> >>> > >>> >>> Michael > >>> >>> > >>> >>> On Thu, Apr 20, 2017 at 8:30 AM, Andrzej Oleś > >>> >>> <andrzej.o...@gmail.com> > >>> >>> wrote: > >>> >>> > Hi all, > >>> >>> > > >>> >>> > I recently encountered some unexpected behavior with S4 generics > >>> >>> > dispatching on `...`, which I described in > >>> >>> > > >>> >>> > > >>> >>> > http://stackoverflow.com/questions/43499203/use- > callnextmethod-with-dotsmethods > >>> >>> > > >>> >>> > TL;DR: `callNextMethod()` doesn't work in methods dispatching on > >>> >>> > `...`, > >>> >>> > and > >>> >>> > arguments of such methods are resolved differently than the > >>> >>> > arguments > >>> >>> > of > >>> >>> > methods dispatching on formal arguments. > >>> >>> > > >>> >>> > Could this indicate a potential problem with the implementation > of > >>> >>> > the > >>> >>> > `...` dispatch? > >>> >>> > > >>> >>> > Cheers, > >>> >>> > Andrzej > >>> >>> > > >>> >>> > [[alternative HTML version deleted]] > >>> >>> > > >>> >>> > ______________________________________________ > >>> >>> > R-devel@r-project.org mailing list > >>> >>> > https://stat.ethz.ch/mailman/listinfo/r-devel > >>> >> > >>> >> > >>> > > >> > >> > > > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel