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 1ce1356f4f03fa04a98eb9d9711924fa9c5d031d..2dd52bd2e51f479eaeda0a0a4a969767b1e16f2b 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 7b9a8c46ef9062d6930e0f07d1c8127946905846..55dbd9665d90b7e6759da861bb3962a2fd79b412 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 8acdd22dea89864a1f5f08de95ca98fbb8d93eb8..d62360ad3ab488d8659dc3fa98e4d0180f73c377 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) }");