diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/IsTypeFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/IsTypeFunctions.java index ee53ad4ccb06eae03887b1328a78b5b9dcc0102b..1c8e9a467c3778ce3db3195961695c17e40ca341 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/IsTypeFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/IsTypeFunctions.java @@ -181,7 +181,7 @@ public class IsTypeFunctions { public abstract static class IsCall extends MissingAdapter { static { - createCasts(IsCall.class); + Casts.noCasts(IsCall.class); } @Specialization @@ -189,7 +189,7 @@ public class IsTypeFunctions { return RRuntime.LOGICAL_TRUE; } - @Specialization(guards = {"!isRMissing(value)", "!isRLanguage(value)"}) + @Specialization(guards = {"!isRLanguage(value)"}) protected byte isType(@SuppressWarnings("unused") Object value) { return RRuntime.LOGICAL_FALSE; } 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 9da8ce68695ead7c1ebb05744c86ed5ace4e34ca..5d556ba0bbbeda8b73eb0074c65075ebdc423497 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 || value == REmpty.instance) { + if (value == RMissing.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 51ba1df38426317fe19967544c8ec62313748c01..2a5c05f9d5f5e7d081d06d50d2491a96819121dc 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 @@ -46627,10 +46627,6 @@ 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 @@ -47889,6 +47885,10 @@ Error in quote() : 0 arguments passed to 'quote' which requires 1 #quote(expr=) +##com.oracle.truffle.r.test.builtins.TestBuiltin_quote.testQuote#Ignored.ImplementationError# +#typeof(quote(a[,2])[[3]]) +[1] "symbol" + ##com.oracle.truffle.r.test.builtins.TestBuiltin_quote.testQuote# #{ class(quote(x + y)) } [1] "call" @@ -47935,6 +47935,10 @@ list(1, 2) #{ quote(x <- x + 1) } x <- x + 1 +##com.oracle.truffle.r.test.builtins.TestBuiltin_quote.testQuote#Ignored.ImplementationError# +#{ res <- quote(a[,2])[[3]]; typeof(res) } +Error in typeof(res) : argument "res" is missing, with no default + ##com.oracle.truffle.r.test.builtins.TestBuiltin_quote.testQuote# #{ typeof(quote(1)) } [1] "double" 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 082ed5dee16c00b6eac3e0c2b38c97215ec46825..4cbcb19b59ac5316b85feda8637ff7ec7aa44b43 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,6 +72,5 @@ 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]]) }"); } } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quote.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quote.java index 2eeee8079985c3634978268e7e77c3010d67cfdf..014088dfd5a3f4d81b6a4a3abb9cd6b3ffb733dc 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quote.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quote.java @@ -45,5 +45,8 @@ public class TestBuiltin_quote extends TestBase { // in GNUR, these behave inconsistently: assertEval(Ignored.ImplementationError, "quote()"); assertEval("quote(expr=)"); + + assertEval(Ignored.ImplementationError, "typeof(quote(a[,2])[[3]])"); + assertEval(Ignored.ImplementationError, "{ res <- quote(a[,2])[[3]]; typeof(res) }"); } }