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

Michael Lawrence lawrence.michael at gene.com
Tue Apr 25 15:55:49 CEST 2017


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



More information about the R-devel mailing list