On 21/02/2021 9:47 a.m., Iñaki Ucar wrote:
Hi,
Let's say that pkgA uses pkgB::function1. Then, version 2 of pkgB
removes function1 and exports function2 for the same functionality. So
pkgA does something along these lines:
if (utils::packageVersion("pkgB") < 2) {
pkgB::function1()
} else {
pkgB::function2()
}
I'd say that there's nothing wrong with this code, and yet checks will
complain about "missing o unexported object" in pkgB, for either
function1 or function2 depending on the version of pkgB that is
available.
Isn't this a false positive? Or is there a better way of doing this?
I'd agree it's a false positive, but I wouldn't expect the check code to
be able to interpret the logic.
A better way could be to handle it in your NAMESPACE file. For example,
this is legal (if nonsense):
if (utils::packageVersion("rgl") < "0.99.0") {
importFrom(rgl, bar = somethingNonexistent)
} else
importFrom(rgl, bar = persp3d)
Now in the package you can refer to bar, and it'll be persp3d for a new
version of rgl, somethingNonexistent for an old one. You won't get a
warning that somethingNonexistent doesn't exist as long as you're not on
the old version of rgl.
Duncan Murdoch
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel