From 7750108aa483da9df1825bb4d5236e1deea98c18 Mon Sep 17 00:00:00 2001
From: Adam Welc <adam.welc@oracle.com>
Date: Thu, 24 Dec 2015 15:35:02 -0800
Subject: [PATCH] During promise evaluation via REngine return exceptions must
 be propagated.

---
 .../oracle/truffle/r/nodes/function/FunctionDefinitionNode.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FunctionDefinitionNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FunctionDefinitionNode.java
index b59153173d..deeae0c090 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FunctionDefinitionNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FunctionDefinitionNode.java
@@ -238,7 +238,7 @@ public final class FunctionDefinitionNode extends RRootNode implements RSyntaxNo
         } catch (ReturnException ex) {
             returnProfile.enter();
             int depth = ex.getDepth();
-            if (depth != -1 && RArguments.getDepth(vf) != depth) {
+            if ((depth != -1 && RArguments.getDepth(vf) != depth) || (substituteFrame && this.description == RPromise.CLOSURE_WRAPPER_NAME)) {
                 throw ex;
             } else {
                 return ex.getResult();
-- 
GitLab