[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