On 27/11/2010 7:09 PM, Duncan Murdoch wrote:
On 27/11/2010 6:50 PM, Duncan Murdoch wrote:
On 27/11/2010 5:58 PM, Charles C. Berry wrote:

parseNamespaceFile() doesn't seem to detect misspelled directives. Looking
at its code I see

        switch(as.character(e[[1L]]),

        <lots of args omitted here>,

        stop(gettextf("unknown namespace directive: %s",
                    deparse(e)), call. = FALSE, domain = NA))

but this doesn't seem to function as I expect, viz. to stop with an error
if I type a wrong directive.

You're right, there was a typo in parseNamespaceFile.  (The typo was in
this line:

                  "=", "<-" = {

This should have been

                  "=" =, "<-" = {

Without the extra = sign, the "=" was taken as the default value of the
switch, and the stop() was never reached.

Conceivably switch() should complain if it is called with more than one
default.

I suspect when I fix this it's going to flush out some typos in packages
on CRAN...

The first fix (to parseNamespaceFile) seems to have caught around 54 CRAN packages and 13 Bioconductor ones. Hopefully fixing these typos will make the NAMESPACE function more as it was intended.

Fewer packages have been caught so far by the switch() change, but that one requires the switch() to actually be executed, so more will show up as the packages are used if their tests don't cover all of their code.

Thanks to Brian Ripley for running the tests. I'll email the maintainers to let them know what's going on.

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to