See also .isMethodsDispatchOn, which is what trace uses to decide if the methods package needs to be loaded.
~G On Tue, Apr 19, 2016 at 5:34 AM, Michael Lawrence <lawrence.mich...@gene.com > wrote: > Not sure why R_has_methods_attached() exists. Maybe Martin could shed > some light on that. > > On Mon, Apr 18, 2016 at 11:50 PM, Kirill Müller > <kirill.muel...@ivt.baug.ethz.ch> wrote: > > Thanks for looking into it, your approach sounds good to me. See also > > R_has_methods_attached() > > ( > https://github.com/wch/r-source/blob/42ecf5f492a005f5398cbb4c9becd4aa5af9d05c/src/main/objects.c#L258-L265 > ). > > > > I'm fine with Rscript not loading "methods", as long as everything works > > properly with "methods" loaded but not attached. > > > > > > -Kirill > > > > > > > > On 19.04.2016 04:10, Michael Lawrence wrote: > >> > >> Right, the methods package is not attached by default when running R > >> with Rscript. We should probably remove that special case, as it > >> mostly just leads to confusion, but that won't happen immediately. > >> > >> For now, the S4_extends() should probably throw an error when the > >> methods namespace is not loaded. And the check should be changed to > >> directly check whether R_MethodsNamespace has been set to something > >> other than the default (R_GlobalEnv). Agreed? > >> > >> On Mon, Apr 18, 2016 at 4:35 PM, Kirill Müller > >> <kirill.muel...@ivt.baug.ethz.ch> wrote: > >>> > >>> Scenario: An S3 method is declared for an S4 base class but called for > an > >>> instance of a derived class. > >>> > >>> Steps to reproduce: > >>> > >>>> Rscript -e "test <- function(x) UseMethod('test', x); test.Matrix <- > >>>> function(x) 'Hi'; MatrixDispatchTest::test(Matrix::Matrix())" > >>> > >>> Error in UseMethod("test", x) : > >>> no applicable method for 'test' applied to an object of class > >>> "lsyMatrix" > >>> Calls: <Anonymous> > >>> 1: MatrixDispatchTest::test(Matrix::Matrix()) > >>> > >>>> Rscript -e "extends <- 42; test <- function(x) UseMethod('test', x); > >>>> test.Matrix <- function(x) 'Hi'; > >>>> MatrixDispatchTest::test(Matrix::Matrix())" > >>> > >>> [1] "Hi" > >>> > >>> To me, it looks like a sanity check in line 655 of src/main/attrib.c is > >>> making wrong assumptions, but there might be other reasons. > >>> > >>> ( > https://github.com/wch/r-source/blob/780021752eb83a71e2198019acf069ba8741103b/src/main/attrib.c#L655-L656 > ) > >>> > >>> Same behavior in R 3.2.4, R 3.2.5 and R-devel r70420. > >>> > >>> > >>> Best regards > >>> > >>> Kirill > >>> > >>> ______________________________________________ > >>> R-devel@r-project.org mailing list > >>> https://stat.ethz.ch/mailman/listinfo/r-devel > >>> > > > > > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Gabriel Becker, PhD Associate Scientist (Bioinformatics) Genentech Research [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel