On 10/20/06, Duncan Murdoch <[EMAIL PROTECTED]> wrote: > On 10/20/2006 8:32 PM, Michael Toews wrote: > > Hi, > > I have a feature request for 'parse', and possibly the 'R CMD INSTALL' > > command to display more informative error information. Specifically, > > after making several modifications to a package on my system (the > > package name is irrelevant; I'm using R 2.3.1 on Debian): > > $ R CMD INSTALL seas > > * Installing *source* package 'seas' ... > > ** R > > ** data > > ** inst > > ** preparing package for lazy loading > > Error in parse(file, n, text, prompt) : syntax error at > > 1222: ylim <- > > 1223: else > > Execution halted > > ERROR: lazy loading failed for package 'seas' > > ** Removing '/usr/local/lib/R/site-library/seas' > > > > Of the 24 or so *.R source files in the edited package, I'm not sure > > where I had made the syntax error, but it would be very nice to see an > > error message that says something more helpful, such as "Error in > > parse(file, n, text, prompt) : syntax error in function 'foo' at ...". > > Yes, that would be nice, but I don't think it's possible: if the parse > fails, R won't know enough to know that it was in the middle of parsing > function 'foo'. > > What would be possible is to do like other preprocessors do, and put > comments into the source file to indicate the origin of each line: then > the parser could tell you the location in the original file, which would > be a lot more useful. This would slow things down a bit and make the > package bigger so we'd probably want it to be optional, but it would > help a lot in situations like yours. > > > Is it possible for 'parse' to display the parent function name in which > > the error occurred? As for 'R CMD INSTALL' goes, I realize that all the > > *.R files are cat'ed together, then parsed as one file, so it is > > difficult report a file name and line number(s). Is this concatenating > > necessary? Or couldn't the individual files be parsed (and errors/line > > #'s reported for offending files), then combined in an environment for > > the INSTALL'ed package? > > I don't know the reason for putting them in one file. > > > In the mean time, my solution to find the offending file is: > > for(i in dir(pattern=".R$")){ > > print(i) > > parse(i) > > } > > That looks like a good idea; if it doesn't catch the error, then it's > probably something wrong with the last line in one of the files, e.g. > not having a newline at the end of it. >
I try to develop my functions one at a time for this very reason. Of course its not always feasible but if you can do it followed by an install each time it makes it easier to locate problems. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel