[Rd] Issue with getParserData in R3.0.0
Duncan Murdoch
murdoch.duncan at gmail.com
Mon Jan 14 15:34:49 CET 2013
On 13-01-13 8:43 PM, Brian Lee Yung Rowe wrote:> Hello,
>
> I am migrating my package lambda.r to R3.0.0 and am experiencing some
issues with the getParserData function (which replaces the parser
package). Basically the function works in the R shell but fails when
either called from RUnit or from R CMD check.
>
> I've narrowed it down to the function getSrcfile, which is returning
different values depending on the code path. From the command line
(works okay):
>
> debug: srcfile <- getSrcfile(x)
> Browse[2]>
> debug: if (is.null(srcfile)) return(NULL) else data <- srcfile$parseData
> Browse[2]> srcfile
> <text>
>
> When running from the Runit script I get this instead:
> debug: srcfile <- getSrcfile(x)
> Browse[3]>
> debug: if (is.null(srcfile)) return(NULL) else data <- srcfile$parseData
> Browse[3]> srcfile
> NULL
>
>
> Below is an example calling the getParserData from the command line:
>> text <- "abs_max(a, b) %::% numeric:numeric:numeric"
>> parse(text=text)
> expression(abs_max(a, b) %::% numeric:numeric:numeric)
>> getParseData(parse(text=text))
> line1 col1 line2 col2 id parent token terminal text
> 27 1 1 1 42 27 0 expr FALSE
> 14 1 1 1 13 14 27 expr FALSE
> 1 1 1 1 7 1 3 SYMBOL_FUNCTION_CALL TRUE abs_max
> 3 1 1 1 7 3 14 expr FALSE
> 2 1 8 1 8 2 14 '(' TRUE (
> 4 1 9 1 9 4 6 SYMBOL TRUE a
> ...
>
> The RUnit call from the command line is
>
runTestFile('/home/brian/workspace/lambda.r/inst/unitTests/runit.dispatching.4.R')
>
> and fails because of the NULL value of srcfile. The first line of the
runit test file is
> abs_max(a, b) %::% numeric:numeric:numeric
>
> Any insights are appreciated.
I think in the case that is failing you just don't have any source info
in the parse. parse() only installs it if the "keep.source" option is
TRUE, and the default for that is the result of interactive(). So when
you are not interactive you don't get source info.
You can fix it by explicitly setting options(keep.source=TRUE).
Duncan Murdoch
More information about the R-devel
mailing list