diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java index 5d556ba0bbbeda8b73eb0074c65075ebdc423497..9da8ce68695ead7c1ebb05744c86ed5ace4e34ca 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java @@ -133,7 +133,7 @@ public final class RASTUtils { assert element != null; if (element instanceof RSyntaxConstant) { Object value = ((RSyntaxConstant) element).getValue(); - if (value == RMissing.instance) { + if (value == RMissing.instance || value == REmpty.instance) { // special case which GnuR handles as an unnamed symbol return RSymbol.MISSING; } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test index 06d54805ff27dfbfbc043ccfef202f211626b0d3..51ba1df38426317fe19967544c8ec62313748c01 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test @@ -29806,6 +29806,21 @@ character(0) #argv <- list(structure(c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE), .Names = c('1', '2', '3', '4', '5', '6', '7', '8')));is.atomic(argv[[1]]); [1] TRUE +##com.oracle.truffle.r.test.builtins.TestBuiltin_iscall.testIsCall# +#{ callExpr <- quote(asd[,1]); lapply(callExpr, function(x) is.call(x)) } +[[1]] +[1] FALSE + +[[2]] +[1] FALSE + +[[3]] +[1] FALSE + +[[4]] +[1] FALSE + + ##com.oracle.truffle.r.test.builtins.TestBuiltin_iscall.testIsCall# #{ cl <- call("f") ; is.call(cl) } [1] TRUE @@ -46612,6 +46627,10 @@ Error in .primUntrace(42) : argument must be a function #{ x<-c(11, 7, 2222, 7, 33); print(x,quote=TRUE) } [1] 11 7 2222 7 33 +##com.oracle.truffle.r.test.builtins.TestBuiltin_print.testPrint# +#{ callExpr <- quote(a[,2]); res <- lapply(callExpr, function(x) x); print(res[[3]]) } + + ##com.oracle.truffle.r.test.builtins.TestBuiltin_print.testPrint# #{ n <- 17 ; fac <- factor(rep(1:3, length = n), levels = 1:5) ; y<-tapply(1:n, fac, sum); y } 1 2 3 4 5 diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_iscall.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_iscall.java index 3284783f60a7c80fdf8cbd61c6fae9af3e5ee2f1..f240e1d164db7c3e1fa62d253e4a37e602503cec 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_iscall.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_iscall.java @@ -148,5 +148,6 @@ public class TestBuiltin_iscall extends TestBase { assertEval("{ cl <- call(\"f\", 2, 3) ; is.call(cl) }"); assertEval("{ cl <- list(f, 2, 3) ; is.call(cl) }"); assertEval("{ is.call(call) }"); + assertEval("{ callExpr <- quote(asd[,1]); lapply(callExpr, function(x) is.call(x)) }"); } } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_print.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_print.java index 4cbcb19b59ac5316b85feda8637ff7ec7aa44b43..082ed5dee16c00b6eac3e0c2b38c97215ec46825 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_print.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_print.java @@ -72,5 +72,6 @@ public class TestBuiltin_print extends TestBase { assertEval("{ nql <- noquote(letters); nql}"); assertEval("{ x <- 42; attr(x,'myattr') <- list(k=3); attributes(x) }"); assertEval("{ val <- 42L; attr(val, 'contrast') <- list(k=1); qr <- list(qr=val); qr }"); + assertEval("{ callExpr <- quote(a[,2]); res <- lapply(callExpr, function(x) x); print(res[[3]]) }"); } }