[Rd] Problems with S4 methods dispatching on `...` (aka dotsMethods)

Andrzej Oleś andrzej.oles at gmail.com
Wed Jul 26 13:02:22 CEST 2017


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]]



More information about the R-devel mailing list