Thanks that seems to work. It looks like other packages explicitly change this 
to FALSE, so I have to set this to TRUE for each function call. Is there any 
particular policy for packages that update this option? Should I restore the 
original value upon function exit?

Warm Regards,
Brian


On Jan 14, 2013, at 9:34 AM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote:

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

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

Reply via email to