11#define R_NO_REMAP
22#include <Rinternals.h>
3+ #include <Rversion.h>
34
45
56SEXP r_unbound_sym = NULL ;
6- SEXP syms_delayed_assign = NULL ;
77
88void r_env_bind_lazy (SEXP env ,
99 SEXP sym ,
1010 SEXP expr ,
1111 SEXP eval_env ) {
12+
13+ #if (R_VERSION >= R_Version (4 , 6 , 0 ))
14+ R_MakeDelayedBinding (sym , expr , eval_env , env );
15+ #else
1216 SEXP prom = PROTECT (Rf_allocSExp (PROMSXP ));
1317 SET_PRENV (prom , eval_env );
1418 SET_PRCODE (prom , expr );
@@ -17,11 +21,7 @@ void r_env_bind_lazy(SEXP env,
1721 Rf_defineVar (sym , prom , env );
1822
1923 UNPROTECT (1 );
20- return ;
21-
22- SEXP call = PROTECT (Rf_lang5 (syms_delayed_assign , sym , expr , eval_env , env ));
23- Rf_eval (call , R_BaseEnv );
24- UNPROTECT (1 );
24+ #endif
2525}
2626
2727
@@ -31,8 +31,6 @@ SEXP syms_inherits = NULL;
3131SEXP syms_list = NULL ;
3232SEXP syms_rm = NULL ;
3333
34- #include <Rversion.h>
35-
3634#if (R_VERSION < R_Version (4 , 0 , 0 ))
3735void r__env_unbind (SEXP env , SEXP sym ) {
3836 // Check if binding exists to avoid `rm()` warning
@@ -116,7 +114,6 @@ SEXP r_new_environment(SEXP parent, R_len_t size) {
116114
117115void magrittr_init_utils (SEXP ns ) {
118116 r_unbound_sym = Rf_install (".__magrittr_unbound_value__." );
119- syms_delayed_assign = Rf_install ("delayedAssign" );
120117 syms_envir = Rf_install ("envir" );
121118 syms_inherits = Rf_install ("inherits" );
122119 syms_list = Rf_install ("list" );
0 commit comments