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