From murdoch.duncan at gmail.com  Sun Nov 28 01:09:28 2010
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Sat, 27 Nov 2010 19:09:28 -0500
Subject: [Rd] Bug in parseNamespaceFile or switch( , ... ) ?
In-Reply-To: <4CF1995F.9020006@gmail.com>
References: <Pine.LNX.4.64.1011271448140.23931@tajo.ucsd.edu>
	<4CF1995F.9020006@gmail.com>
Message-ID: <4CF19DB8.5060706@gmail.com>

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...

Duncan Murdoch


> 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
>



[Rd] Bug in parseNamespaceFile or switch( , ... ) ?
Duncan Murdoch