diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java index 615e63f88989f8d55f11b6456359cf1b2f22ca9f..3fd8a39add8920567661120b2aa93d1a1fece3f8 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java @@ -73,6 +73,9 @@ public abstract class WrapArgumentBaseNode extends RNode { } else if (result instanceof RLanguage) { everSeenLanguage.enter(); return (RLanguage) result; + } else if (result instanceof RFunction) { + everSeenLanguage.enter(); + return (RFunction) result; } else { nonShareable.enter(); return null; diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleAttributes.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleAttributes.java index 3f8f17e223d37780285308bf27ec19ad62d8e6ff..afced370ef6d28427d77bc9e1e3152c0336c1074 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleAttributes.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleAttributes.java @@ -44,6 +44,8 @@ public class TestSimpleAttributes extends TestBase { assertEval("{ attributes(NULL) }"); assertEval("{ x<-function() 42; attr(x, \"foo\")<-\"foo\"; y<-x; attr(y, \"foo\")<-NULL; x }"); + + assertEval("{ f<-function(y) attr(y, \"foo\")<-NULL; x<-function() 42; attr(x, \"foo\")<-\"foo\"; s<-\"bar\"; switch(s, f(x)); x }"); } @Test