[Rd] sys.call() 's srcref doesn't match the language
Lionel Henry
||one| @end|ng |rom r@tud|o@com
Thu Sep 3 00:19:02 CEST 2020
Hello,
The source references are useful for debugging tools because they
allow linking to call sites in the source files.
I agree the output can be confusing. Perhaps this could be fixed by
tweaking the print method for calls. If the deparsed call doesn't
match the srcref, both could be displayed along with file:line:column.
```
#> f()
#> <srcref:file.R:2:3>
#> 1 + f()
```
Best,
Lionel
On 9/2/20, Antoine Fabri <antoine.fabri using gmail.com> wrote:
> Dear R-devel,
>
> I found this behavior disturbing, if `1 + f()` is called, `sys.call()`
> called inside of `f` will return a quoted `f()` with a "srcref" that prints
> "1 + f()".
>
> I don't know which one is good but I don't think they can be correct at the
> same time.
>
> Here's a reproducible example:
>
> f <- function(){
> sc <- sys.call()
> print(sc)
> attr(sc, "srcref") <- NULL
> print(sc)
> 1
> }
> f2 <- function() {
> 1 + f()
> }
> f()
> #> f()
> #> f()
> #> [1] 1
> f2()
> #> 1 + f()
> #> f()
> #> [1] 2
>
> Best,
>
> Antoine
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list