[Rd] Inconsistency between eval and withVisible (with patch)

Gabriel Becker
2013-08-14T23:46:31Z

R-team,

The $value element of the return value of *withVisible* does not agree with
the return value of *eval* when *withVisible* is passed a variable (symbol)
containing an expression object or anonymous code/expressions which
generates an expression object when evaluated (such as calls to *parse* or *
expression*).

I have attached a patch against the svn trunk which addresses this.

Example (under devel r63577):

> withVisible(parse(text="5+pi"))
$value
*expression(5+pi)*

$visible
[1] TRUE

> eval(parse(text="5+pi"))
*[1] 8.141593*



With the attached patch this is no longer the case:


> withVisible(parse(text="5+pi"))
$value
*[1] 8.141593*

$visible
[1] TRUE

The patch changes only the withVisible function in eval.c. I'm happy to
work with / at the direction of an R-core member to get the patch into an
different form/coding style/fix strategy/etc if its current form is not
acceptable.

Thanks,
~G

> sessionInfo()
R Under development (unstable) (2013-08-14 r63577)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base



--
Gabriel Becker
Graduate Student
Statistics Department
University of California, Davis