From |g@ut|er @end|ng |rom gm@||@com  Sun Sep 15 21:01:09 2019
From: |g@ut|er @end|ng |rom gm@||@com (Laurent Gautier)
Date: Sun, 15 Sep 2019 15:01:09 -0400
Subject: [Rd] =?utf-8?q?Error=3A_package_or_namespace_load_failed_for_?=
	=?utf-8?b?4oCYdXRpbHM=?=
In-Reply-To: <CA+JCgN39_YGcPH7xgc+O8qbRaXZcc6=kqBVDcgQyGyBGJmgoCQ@mail.gmail.com>
References: <CA+JCgN39_YGcPH7xgc+O8qbRaXZcc6=kqBVDcgQyGyBGJmgoCQ@mail.gmail.com>
Message-ID: <CA+JCgN3VBrqXLc+Y=wikf19zkoCRNct2Pof0sVxF82RWN-+T1g@mail.gmail.com>

In case a search engine leads someone with the same issue here, I am
documenting the point I reached:

I can reproduce the issue with a small example when forcing R to not load
any package at startup time (using an Renviron file):
```
package <- "utils"
lib.loc <- "<fill this according to your R install>"
ns <- loadNamespace(package, lib.loc)
```

The code path goes through `registerS3methods(nsInfo$S3methods, package,
env)` and there to:

```
if (methods::is(genfun, "genericFunction"))
```

The evaluation of `methods::is` reaches the line triggering the error as
`.identC(class1, class2)` and `.identC(class2, "ANY")` both return `NA` and
`NA || NA` is not defined:

```
> if (NA || NA) { cat("here\n") }
Error in if (NA || NA) { : missing value where TRUE/FALSE needed
```

As I understand it `.identC()` should never return `NA`, and if the case
this would mean that R itself is an unstable state (something at the C
level that should not have happened has happened) but this was not caught
earlier.

	[[alternative HTML version deleted]]



[Rd] =?utf-8?q?Error=3A_package_or_namespace_load_failed_for_?= =?utf-8?b?4oCYdXRpbHM=?=
Laurent Gautier