From 76ee7f0ed74c537045f793636fa3e2c033b01425 Mon Sep 17 00:00:00 2001 From: stepan <stepan.sindelar@oracle.com> Date: Fri, 3 Feb 2017 14:33:08 +0100 Subject: [PATCH] Deparse in BinaryBooleanNode removes backticks, e.g. around `+` --- .../oracle/truffle/r/nodes/binary/BinaryBooleanNode.java | 8 ++++++-- .../src/com/oracle/truffle/r/test/ExpectedTestOutput.test | 8 ++++++++ .../truffle/r/test/builtins/TestBuiltin_operators.java | 7 +++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java index 1ce1356f4f..2dd52bd2e5 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java @@ -134,15 +134,19 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { @Cached("createRecursive()") BinaryBooleanNode recursive) { Object recursiveLeft = left; if (isSymbolOrLang(left)) { - recursiveLeft = RString.valueOf(RDeparse.deparse(left)); + recursiveLeft = deparseSymbolOrLang(left); } Object recursiveRight = right; if (isSymbolOrLang(right)) { - recursiveRight = RString.valueOf(RDeparse.deparse(right)); + recursiveRight = deparseSymbolOrLang(right); } return recursive.execute(frame, recursiveLeft, recursiveRight); } + private static RString deparseSymbolOrLang(Object val) { + return RString.valueOf(RDeparse.deparse(val, RDeparse.MAX_Cutoff, false, RDeparse.KEEPINTEGER, -1)); + } + protected BinaryBooleanNode createRecursive() { return BinaryBooleanNode.create(factory); } 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 7b9a8c46ef..55dbd9665d 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 @@ -34312,6 +34312,14 @@ NULL [1] "some" [1] "test" +##com.oracle.truffle.r.test.builtins.TestBuiltin_operators.testBinaryOperators# +#as.symbol('*') == '*' +[1] TRUE + +##com.oracle.truffle.r.test.builtins.TestBuiltin_operators.testBinaryOperators# +#as.symbol('<-') == '<-' +[1] TRUE + ##com.oracle.truffle.r.test.builtins.TestBuiltin_operators.testColon# #8.2:NULL Error in 8.2:NULL : argument of length 0 diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_operators.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_operators.java index 8acdd22dea..d62360ad3a 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_operators.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_operators.java @@ -1926,6 +1926,13 @@ public class TestBuiltin_operators extends TestBase { "data[c('a','b')] + 1; 1 + data[c('a','b')]; data[c('a','b')] + c(1,2); c(1,2) + data[c('a','b')]"); } + @Test + public void testBooleanOperators() { + // tests that deparse in as.symbol removes backticks + assertEval("as.symbol('*') == '*'"); + assertEval("as.symbol('<-') == '<-'"); + } + @Test public void testOperators() { assertEval("{ `+`(1,2) }"); -- GitLab