diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RForceAndCallNode.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RForceAndCallNode.java index 9d4e21f1b34247478eafbc45e3853c07b1bd77d3..87ffb672daa0cebfae6a26abe511b403865b4a95 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RForceAndCallNode.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RForceAndCallNode.java @@ -110,7 +110,7 @@ public abstract class RForceAndCallNode extends RBaseNode { System.arraycopy(dotArgs.getArguments(), 0, argValuesEx, argValues.size() - 1, dotArgs.getLength()); final String[] argNames = dotArgs.getSignature().getNames(); if (argNames != null) { - System.arraycopy(argNames, 0, argNamesEx, argValues.size(), dotArgs.getLength()); + System.arraycopy(argNames, 0, argNamesEx, argValues.size() - 1, dotArgs.getLength()); } argsAndNames = new RArgsValuesAndNames(argValuesEx, ArgumentsSignature.get(argNamesEx)); return argsAndNames; diff --git a/com.oracle.truffle.r.parser/src/com/oracle/truffle/r/parser/R.g b/com.oracle.truffle.r.parser/src/com/oracle/truffle/r/parser/R.g index f4080f884755303c03605a955cd8ad6b875910f3..61e8a5979459880f5870305cacd415521c1f05a9 100644 --- a/com.oracle.truffle.r.parser/src/com/oracle/truffle/r/parser/R.g +++ b/com.oracle.truffle.r.parser/src/com/oracle/truffle/r/parser/R.g @@ -461,6 +461,7 @@ colon_expr returns [T v] unary_expression returns [T v] : op=(PLUS | MINUS | NOT | QM) n_ l=unary_expression { $v = builder.call(src($op, last()), operator($op), $l.v); } + | op=(TILDE) n_ l=utilde_expr { $v = builder.call(src($op, last()), operator($op), $l.v); } | b=power_expr { $v = $b.v; } ; diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_tilde.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_tilde.java index 4501558f556f8e3f6b772ebf1d5d229213e6a9aa..69e7882f9d32bc32c92dd345fa9b6f93084fed64 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_tilde.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_tilde.java @@ -42,6 +42,7 @@ public class TestBuiltin_tilde extends TestBase { assertEval("... ~ 0 + x"); assertEval("y ~ ..."); assertEval("y ~ ... + 2"); + assertEval("x * ~y"); } @Test