Michael Lawrence
2017-Apr-25 13:55 UTC
[Rd] Problems with S4 methods dispatching on `...` (aka dotsMethods)
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.oles at 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.oles at 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.michael at 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.oles at 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 at r-project.org mailing list >>> > https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >
Andrzej Oleś
2017-Apr-25 14:15 UTC
[Rd] Problems with S4 methods dispatching on `...` (aka dotsMethods)
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.michael at 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.oles at 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.oles at 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.michael at 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.oles at 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 at r-project.org mailing list > >>> > https://stat.ethz.ch/mailman/listinfo/r-devel > >> > >> > > >[[alternative HTML version deleted]]
Andrzej Oleś
2017-Aug-01 12:50 UTC
[Rd] Problems with S4 methods dispatching on `...` (aka dotsMethods)
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.michael at 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.oles at 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.oles at 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.michael at 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.oles at 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.oles at 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.michael at 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.oles at 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 at r-project.org mailing list > >>> >>> > https://stat.ethz.ch/mailman/listinfo/r-devel > >>> >> > >>> >> > >>> > > >> > >> > > >[[alternative HTML version deleted]]
Michael Lawrence
2017-Aug-07 17:27 UTC
[Rd] Problems with S4 methods dispatching on `...` (aka dotsMethods)
I ported that over. On Tue, Aug 1, 2017 at 5:50 AM, Andrzej Ole? <andrzej.oles at gmail.com> wrote:> 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.michael at 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.oles at 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.oles at 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.michael at 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.oles at 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.oles at 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.michael at 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.oles at 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-callnextmeth >> od-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 at r-project.org mailing list >> >>> >>> > https://stat.ethz.ch/mailman/listinfo/r-devel >> >>> >> >> >>> >> >> >>> > >> >> >> >> >> > >> > >[[alternative HTML version deleted]]
Maybe Matching Threads
- Problems with S4 methods dispatching on `...` (aka dotsMethods)
- Problems with S4 methods dispatching on `...` (aka dotsMethods)
- Problems with S4 methods dispatching on `...` (aka dotsMethods)
- Problems with S4 methods dispatching on `...` (aka dotsMethods)
- Problems with S4 methods dispatching on `...` (aka dotsMethods)