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