[Rd] S4 NAMESPACE method imports and exports do not include (promoted?) generics
mtmorgan at fhcrc.org
Fri Dec 16 00:34:52 CET 2011
 "R Under development (unstable) (2011-12-15 r57901)"
section 1.6.6 of 'Writing R Extensions' says
Note that exporting methods on a generic in the namespace will
also export the generic, and exporting a generic in the
namespace will also export its methods.
Note that importMethodsFrom will also import any generics defined in
the namespace on those methods
However, if PkgA promotes 'unique' to a generic and exports that
and PkgB creates and exports a method on unique
Imports: methods, PkgA
function(x, incomparables=FALSE, ...) unique(x at b))
and PkgC wants to import PkgB's classes and methods
Imports: methods, PkgB
cunique <- function(x) unique(x)
(a) the 'unique' generic is not available to the user of PkgB
> unique(new("B", b=1:5))
Error in unique.default(new("B", b = 1:5)) :
unique() applies only to vectors
and (b) the generic has not been imported to PkgC's namespace
> cunique(new("B", b=1:5))
Error in unique.default(b) : unique() applies only to vectors
A workaround is for PkgB to also export(unique), and for PkgC to also
importFrom(PkgA, unique), but is this the intention?
This is arising from Bioconductor efforts to place commonly promoted
functions and S3 classes into a single package, to avoid conflicts when
the same function is promoted independently by several packages.
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109
Telephone: 206 667-2793
More information about the R-devel