[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