[Rd] Bug in parseNamespaceFile or switch( , ... ) ?
Duncan Murdoch
murdoch.duncan at gmail.com
Sun Nov 28 00:50:55 CET 2010
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.
Duncan Murdoch
>
> Details:
>> # create dummy NAMESPACE file with two bad / one good directives
>> cat("blah( nada )\nblee( nil )\nexport( outDS )\n",file="NAMESPACE")
>> readLines("NAMESPACE")
> [1] "blah( nada )" "blee( nil )" "export( outDS )"
>> parseNamespaceFile("",".") # now parse it
> $imports
> list()
>
> $exports
> [1] "outDS"
>
> $exportPatterns
> character(0)
>
> $importClasses
> list()
>
> $importMethods
> list()
>
> $exportClasses
> character(0)
>
> $exportMethods
> character(0)
>
> $exportClassPatterns
> character(0)
>
> $dynlibs
> character(0)
>
> $nativeRoutines
> list()
>
> $S3methods
> [,1] [,2] [,3]
>
>>
>
> So, it picked up 'export' and ignored the other two lines.
>
>
> Chuck
>
> p.s.
>
>> sessionInfo()
> R version 2.12.0 (2010-10-15)
> Platform: i386-apple-darwin9.8.0/i386 (32-bit)
>
> locale:
> [1] C
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>>
>
>
>
>
>
> Charles C. Berry Dept of Family/Preventive Medicine
> cberry at tajo.ucsd.edu UC San Diego
> http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list