On 13-01-14 7:49 PM, Brian Lee Yung Rowe wrote:
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?

Options belong to the user, not to you. You should definitely save the old value and restore it when you're done.

Duncan Murdoch

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