[Rd] Internal function isUME() in findGeneric() is wrong (PR#7320)

From: <jhallman_at_frb.gov>
Date: Fri 29 Oct 2004 - 01:01:31 EST


Full_Name: Jeff Hallman
Version: 2.0
OS: Linux
Submission from: (NULL) (132.200.32.34)

The function findGeneric() in the utils namespace contains this internal function:

  isUME <- function(e) {

        if (is.call(e) && (is.name(e[[1]]) || is.character(e[[1]]))) {
            switch(as.character(e[[1]]), UseMethod = as.character(e[[2]]), 
                "{" = isUMEbrace(e), "if" = isUMEif(e), "")
        }
        else ""

}

This fails if the generic called UseMethod() without an argument, which is perfectly legal. Changing it to this seems to work:

  isUME <- function(e) {
    if(is.call(e) &&(is.name(e[[1]]) || is.character(e[[1]]))) {

      switch(as.character(e[[1]]), 
             UseMethod = ifelse(length(e) == 1, fname, as.character(e[[2]])), 
             "{" = isUMEbrace(e),
             "if" = isUMEif(e),
             "")

}

    else ""
  }

Jeff



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri Oct 29 01:24:08 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:00:58 EST