From 3fcf4af3a138c84cf527c0938a07233a1227d620 Mon Sep 17 00:00:00 2001
From: Julien Lopez <julien.lopez@lri.fr>
Date: Mon, 20 Mar 2017 17:13:59 +0100
Subject: [PATCH] Fix in overriding of dollar operator for queries

---
 .../r/nodes/query/RQIRWrapperNode.java        |  6 ++---
 .../truffle/r/nodes/query/RQueryNode.java     | 26 +------------------
 .../truffle/r/runtime/nodes/RCodeBuilder.java |  2 ++
 3 files changed, 6 insertions(+), 28 deletions(-)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQIRWrapperNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQIRWrapperNode.java
index 5644e69634..31d954defd 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQIRWrapperNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQIRWrapperNode.java
@@ -71,16 +71,16 @@ public final class RQIRWrapperNode extends RSourceSectionNode implements RSyntax
 
     @Override
     public RSyntaxElement[] getSyntaxArgumentDefaults() {
-        return null;
+        return new RSyntaxElement[0];
     }
 
     @Override
     public RSyntaxElement getSyntaxBody() {
-        return null;
+        return this;
     }
 
     @Override
     public String getSyntaxDebugName() {
-        return null;
+        return getSourceSection().getCode();
     }
 }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQueryNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQueryNode.java
index fdcc9ab41b..2697e2f79f 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQueryNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/query/RQueryNode.java
@@ -26,14 +26,10 @@ import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.nodes.NodeInfo;
 import com.oracle.truffle.api.object.DynamicObject;
 import com.oracle.truffle.api.source.SourceSection;
-import com.oracle.truffle.r.runtime.ArgumentsSignature;
 import com.oracle.truffle.r.runtime.nodes.RSourceSectionNode;
-import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
-import com.oracle.truffle.r.runtime.nodes.RSyntaxFunction;
-import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 @NodeInfo(shortName = "Query")
-public abstract class RQueryNode extends RSourceSectionNode implements RSyntaxNode, RSyntaxFunction {
+public abstract class RQueryNode extends RSourceSectionNode {
     public RQueryNode(final SourceSection src) {
         super(src);
     }
@@ -42,24 +38,4 @@ public abstract class RQueryNode extends RSourceSectionNode implements RSyntaxNo
     public final DynamicObject execute(final VirtualFrame frame) {
         throw new RuntimeException("We should not execute a RQueryNode directly.");
     }
-
-    @Override
-    public ArgumentsSignature getSyntaxSignature() {
-        return null;
-    }
-
-    @Override
-    public RSyntaxElement[] getSyntaxArgumentDefaults() {
-        return null;
-    }
-
-    @Override
-    public RSyntaxElement getSyntaxBody() {
-        return null;
-    }
-
-    @Override
-    public String getSyntaxDebugName() {
-        return null;
-    }
 }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/RCodeBuilder.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/RCodeBuilder.java
index 968444aeb9..0c7f994484 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/RCodeBuilder.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/RCodeBuilder.java
@@ -200,6 +200,8 @@ public interface RCodeBuilder<T> {
 
             @Override
             protected T visit(RSyntaxFunction element) {
+                if (element.getSyntaxBody() == element)
+                    return (T) element;
                 ArrayList<Argument<T>> params = createArguments(element.getSyntaxSignature(), element.getSyntaxArgumentDefaults());
                 return function(element.getLazySourceSection(), params, accept(element.getSyntaxBody()), element.getSyntaxDebugName());
             }
-- 
GitLab