From 17984995a692bfe1db452ff56d6ebade92b5653d Mon Sep 17 00:00:00 2001 From: Adam Welc <adam.welc@oracle.com> Date: Wed, 16 Mar 2016 17:56:14 -0700 Subject: [PATCH] Handle body of the function that is a single symbol. --- .../oracle/truffle/r/nodes/builtin/base/AsFunction.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java index 6395f510f4..592446c235 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java @@ -118,10 +118,15 @@ public abstract class AsFunction extends RBuiltinNode { } } - if (!(x.getDataAt(x.getLength() - 1) instanceof RLanguage)) { + RBaseNode body; + Object bodyObject = x.getDataAt(x.getLength() - 1); + if (bodyObject instanceof RLanguage) { + body = ((RLanguage) x.getDataAt(x.getLength() - 1)).getRep(); + } else if (bodyObject instanceof RSymbol) { + body = ReadVariableNode.create(((RSymbol) bodyObject).getName()); + } else { throw RInternalError.unimplemented(); } - RBaseNode body = ((RLanguage) x.getDataAt(x.getLength() - 1)).getRep(); if (!RBaseNode.isRSyntaxNode(body)) { throw RInternalError.unimplemented(); } -- GitLab