A difference between tidyeval and substitute() when the promise is already evaluated

A forced promise can no longer be captured correctly because it no longer carries an environment. enexpr() does not need the environment but we chose to make all capture functions consistent with enquo().

For the use-case of labelling (which seems relevant here), we are thinking about new capture operators: https://github.com/r-lib/rlang/issues/303.

In the meantime I would just use substitute().

1 Like