diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java index fb936c694c4c9cc7e7b23eead1f6bd54ed44df51..7424142247365787ca920c61828e47e157bc9a34 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java @@ -152,6 +152,12 @@ public abstract class ConvertBooleanNode extends RNode { return doRaw(value.getDataAt(0)); } + @Specialization + protected byte doRawVector(RList value) { + checkLength(value); + throw RError.error(this, RError.Message.ARGUMENT_NOT_INTERPRETABLE_LOGICAL); + } + public static ConvertBooleanNode create(RSyntaxNode node) { if (node instanceof ConvertBooleanNode) { return (ConvertBooleanNode) node; 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 166d4a7d4b24a34f68a14d119f6b7181f4714f8e..9d71e938d4d8a88603efb4d49765f40d2401dbb9 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 @@ -57808,6 +57808,13 @@ Error in if (TRUE == NA) TRUE else FALSE : #{ x <- 2 ; if (NA) x <- 3 ; x } Error in if (NA) x <- 3 : missing value where TRUE/FALSE needed +##com.oracle.truffle.r.test.library.base.TestSimpleIfEvaluator.testIf +#{ x<-list(1,2); if (x) 7 else 42 } +Error in if (x) 7 else 42 : argument is not interpretable as logical +In addition: Warning message: +In if (x) 7 else 42 : + the condition has length > 1 and only the first element will be used + ##com.oracle.truffle.r.test.library.base.TestSimpleIfEvaluator.testIf2 #if(FALSE) 1 else 2 [1] 2 diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleIfEvaluator.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleIfEvaluator.java index 1d3ec43d1390f07621d1d9a07025303dc267226d..bd1116b82d262f37edbb81b65e712aac4c8438ec 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleIfEvaluator.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleIfEvaluator.java @@ -67,6 +67,7 @@ public class TestSimpleIfEvaluator extends TestBase { assertEval("{ if (FALSE==TRUE) TRUE else FALSE }"); assertEval("{ if (FALSE==1) TRUE else FALSE }"); assertEval("{ f <- function(v) { if (FALSE==v) TRUE else FALSE } ; f(TRUE) ; f(1) }"); + assertEval(Output.ContainsError, Output.ContainsWarning, "{ x<-list(1,2); if (x) 7 else 42 }"); } @Test