On Fri, Mar 1, 2024 at 1:00 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
> ... > I was thinking more of you doing something like > > parse(text = "A -> B", keep.source = TRUE) > > I forget what the exact rules are for attaching srcrefs to arguments of > functions, but I do remember they are a little strange, because not > every possible argument can accept a srcref attribute. For example, you > can't attach one to NULL, or to a name. > > Srcrefs are also fairly big and building them is slow, so I think we > tried to limit them to where they were needed, we didn't try to attach > them to every subexpression, just one per statement. Each expression > within {} is a separate statement, so we get srcrefs attached to the {. > But in "foo(A -> B)" probably you only get one on the foo call. > > In some circumstances you could get the srcref on that call by looking > at sys.call(). But then things are complicated again, because R doesn't > attach srcrefs to things typed at the console, only to things that are > sourced from files or text strings (and parsed with keep.source=TRUE). > > So I think you should probably require input from a string or a file, or > not expect foo(A -> B) to work without some decoration. > Indeed, the more challenging task is to identify "->" at the console (from a script or a string, seems trivial now). I would be willing to decorate as much as it takes to make this work, I am just empty on more ideas how to persuade the parser. Dmitri [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel