Re: [Rd] utils::isS3stdGeneric chokes on primitives and identity

2020-08-30 Thread Gabriel Becker
Submitted to bugzilla here:
https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17901

On Sat, Aug 29, 2020 at 1:57 PM Gabriel Becker 
wrote:

> Hi all,
>
> I have a patch that fixes this and also fixes/improves debugcall so that
> it supports pkg::fun(obj) and pkg:::fun(obj) style calls. I'm going to test
> it a bit more and add a regression test for isS3stdGeneric and then I will
> submit it to bugzilla tonight or tomorrow morning.
>
> Best,
> ~G
>
> On Thu, Aug 27, 2020 at 5:28 PM Gabriel Becker 
> wrote:
>
>> Trace adds something to the body of the function, so it does make sense
>> that it doesn't. Whether traced functions still technically meet the
>> definition of standard s3 generic or not is, I suppose, up for debate, but
>> I would say that they should, I think.
>>
>> As before, if desired I can work on a patch for this if desired, or
>> someone on R-core can just take care of it if that is easier.
>>
>> Best,
>> ~G
>>
>> On Thu, Aug 27, 2020 at 11:22 AM Antoine Fabri 
>> wrote:
>>
>>> Should it work on traced functions ?
>>>
>>> As it is now it doesn't.
>>>
>>> Best,
>>>
>>> Antoine
>>>
>>> Le jeu. 20 août 2020 à 09:58, Kurt Hornik  a
>>> écrit :
>>>
 > Gabriel Becker writes:

 > I added that so I can look at the proposed fix and put it or something
 > similar in bugzilla for review final review.

 > Apologies for the oversight.

 Fixed now with

 -while(as.character(bdexpr[[1L]]) == "{")
 +while(is.call(bdexpr) && (as.character(bdexpr[[1L]]) == "{"))

 (the suggested fix does not work on things like
 foo <- function(x) {{ x }}
 ...)

 Best
 -k

 > ~G

 > On Wed, Aug 19, 2020 at 3:40 PM Antoine Fabri <
 antoine.fa...@gmail.com>
 > wrote:

 >> Dear R-devel,
 >>
 >> utils::isS3stdGeneric tries to subset the body of the function it's
 fed,
 >> primitives don't like that because they don't have a body, identity
 doesn't
 >> like it either because it's body is a symbol.
 >>
 >> According to the doc, any function is a legal input.
 >>
 >> See below:
 >>
 >> identity
 >> #> function (x)
 >> #> x
 >> #> 
 >> #> 
 >>
 >> max
 >> #> function (..., na.rm = FALSE)  .Primitive("max")
 >>
 >> isS3stdGeneric(identity)
 >> #> Error in bdexpr[[1L]]: objet de type 'symbol' non indiçable
 >>
 >> isS3stdGeneric(max)
 >> #> Error in while (as.character(bdexpr[[1L]]) == "{") bdexpr <-
 >> bdexpr[[2L]]: l'argument est de longueur nulle
 >>
 >> Here is a simple fix :
 >>
 >> isS3stdGeneric <- function(f) {
 >> {
 >> bdexpr <- body(f)
 >> if(is.null(bdexpr) || !is.call(bdexpr)) return(FALSE)
 >> while (as.character(bdexpr[[1L]]) == "{") bdexpr <- bdexpr[[2L]]
 >> ret <- is.call(bdexpr) && identical(bdexpr[[1L]], as.name
 >> ("UseMethod"))
 >> if (ret)
 >> names(ret) <- bdexpr[[2L]]
 >> ret
 >> }
 >> }
 >>
 >> isS3stdGeneric(identity)
 >> #> [1] FALSE
 >> isS3stdGeneric(max)
 >> #> [1] FALSE
 >>
 >> Best,
 >>
 >> Antoine
 >>
 >> [[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

>>>

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


[Rd] make check fails due to NA / NaN mismatch

2020-08-30 Thread Korpela Mikko (MML)
It seems there is a problem in tests/d-p-q-r-tst-2.R (R-devel r79091): NA / NaN 
mismatch is not allowed by a test on lines 590--592, but the comment suggests 
otherwise. A run of "make check" fails there when tested on a Raspberry Pi with 
Raspberry Pi OS (based on Debian Buster): all 'NaN' is expected, but all 'NA' 
is returned when testing the function 'rf()' with 'ia == 1'.

Best regards,
Mikko Korpela
Maanmittauslaitos | National Land Survey of Finland
Opastinsilta 12 C, 00520 Helsinki, Finland

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel