57 Shield<SEXP> identity(Rf_findFun(::Rf_install(
"identity"), R_BaseNamespace));
60 Shield<SEXP> evalqCall(Rf_lang3(::Rf_install(
"evalq"), expr, env));
63 Shield<SEXP> call(Rf_lang4(::Rf_install(
"tryCatch"), evalqCall, identity, identity));
64 SET_TAG(CDDR(call), ::Rf_install(
"error"));
65 SET_TAG(CDDR(CDR(call)), ::Rf_install(
"interrupt"));
70 if (Rf_inherits(res,
"condition")) {
72 if (Rf_inherits(res,
"error")) {
74 Shield<SEXP> conditionMessageCall(::Rf_lang2(::Rf_install(
"conditionMessage"), res));
77 throw eval_error(CHAR(STRING_ELT(conditionMessage, 0)));
81 if (Rf_inherits(res,
"interrupt")) {