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 b59153173da7e361a83bbbca7f01c7750d4849fc..deeae0c09029ec750993a289b9287b4ad2ccd391 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();
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/S4/TestS4.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/S4/TestS4.java
index c67c5169556fe3b15f489216c410db35215c98e1..841483337f558eeba372a8617c6242cd8830c321 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/S4/TestS4.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/S4/TestS4.java
@@ -74,7 +74,7 @@ public class TestS4 extends TestBase {
     @Test
     public void testAllocation() {
         assertEval("{ new(\"numeric\") }");
-        assertEval(Ignored.Unknown, "{ setClass(\"foo\", representation(j=\"numeric\")); new(\"foo\", j=42) }");
+        assertEval("{ setClass(\"foo\", representation(j=\"numeric\")); new(\"foo\", j=42) }");
     }
 
     @Test
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_eval.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_eval.java
index 9be490b6c1c4c9b67ac56c5d628597f10fb521c6..02b466ede4ef00055977bbcd27c6cf9e5be61ac0 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_eval.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_eval.java
@@ -27,8 +27,8 @@ public class TestBuiltin_eval extends TestBase {
         assertEval("{ f <- function(x) { eval(x) }; f(1) }");
         assertEval("{ eval(x <- 1); ls() }");
         assertEval("{ ne <- new.env(); eval(x <- 1, ne); ls() }");
-        assertEval(Ignored.Unknown, "{ ne <- new.env(); evalq(x <- 1, ne); ls(ne) }");
-        assertEval(Ignored.Unknown, "{ ne <- new.env(); evalq(envir=ne, expr=x <- 1); ls(ne) }");
+        assertEval("{ ne <- new.env(); evalq(x <- 1, ne); ls(ne) }");
+        assertEval("{ ne <- new.env(); evalq(envir=ne, expr=x <- 1); ls(ne) }");
         assertEval("{ e1 <- new.env(); assign(\"x\", 100, e1); e2 <- new.env(parent = e1); evalq(x, e2) }");
 
         assertEval("{ f <- function(z) {z}; e<-as.call(c(expression(f), 7)); eval(e) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_identical.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_identical.java
index fd95b5d695f19e87b43daf2cf408c4ec8fcd6da6..2bd330ee3a553c0db7772fa0fd83b4259113ccbd 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_identical.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_identical.java
@@ -220,8 +220,8 @@ public class TestBuiltin_identical extends TestBase {
         assertEval("{ identical(quote(if(x) 42), quote(if(x) 42)) }");
         assertEval("{ identical(function() 42, function() 42) }");
 
-        assertEval(Ignored.Unknown, "{ setClass(\"foo\", representation(j=\"numeric\")); x<-new(\"foo\", j=42); y<-new(\"foo\", j=42); identical(x,y) }");
-        assertEval(Ignored.Unknown, "{ setClass(\"foo\", representation(j=\"numeric\")); x<-new(\"foo\", j=42); y<-new(\"foo\", j=7); identical(x,y) }");
+        assertEval("{ setClass(\"foo\", representation(j=\"numeric\")); x<-new(\"foo\", j=42); y<-new(\"foo\", j=42); identical(x,y) }");
+        assertEval("{ setClass(\"foo\", representation(j=\"numeric\")); x<-new(\"foo\", j=42); y<-new(\"foo\", j=7); identical(x,y) }");
 
         assertEval("{ x<-list(7); y<-list(7); identical(x,y) }");
         assertEval("{ x<-list(7); y<-list(42); identical(x,y) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unclass.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unclass.java
index cd4bc19bf0e9a8ba2df2109f6fcb7ac78b807edc..d4e06608d87ddd335aaf0b9bf40dfbcae9aaeef9 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unclass.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unclass.java
@@ -208,6 +208,6 @@ public class TestBuiltin_unclass extends TestBase {
 
     @Test
     public void testOther() {
-        assertEval(Ignored.Unknown, "{ setClass(\"foo\", representation(j=\"numeric\")); x<-new(\"foo\", j=42); unclass(x) }");
+        assertEval("{ setClass(\"foo\", representation(j=\"numeric\")); x<-new(\"foo\", j=42); unclass(x) }");
     }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestMiscBuiltins.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestMiscBuiltins.java
index c78e92777cf4bb6a2b6d7e6a1ff3eaa2f3cbf020..a38e884ae6168311fdfc985e12e849ad2c4ce89a 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestMiscBuiltins.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestMiscBuiltins.java
@@ -236,7 +236,7 @@ public class TestMiscBuiltins extends TestBase {
     @Test
     public void testLocal() {
         assertEval("{ kk <- local({k <- function(x) {x*2}}); kk(8)}");
-        assertEval(Ignored.Unknown, "{ ne <- new.env(); local(a <- 1, ne); ls(ne) }");
+        assertEval("{ ne <- new.env(); local(a <- 1, ne); ls(ne) }");
     }
 
     @Test