From 12e5aece1fb198e1f9695b6b0ce98489aae8f08a Mon Sep 17 00:00:00 2001 From: Florian Angerer <florian.angerer@oracle.com> Date: Mon, 29 May 2017 13:44:38 +0200 Subject: [PATCH] Added casts. --- .../oracle/truffle/r/nodes/builtin/base/UpdateNames.java | 4 +++- .../truffle/r/nodes/builtin/fastr/FastRSourceInfo.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java index c58e054d13..03f7c66c27 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java @@ -34,6 +34,7 @@ import com.oracle.truffle.r.nodes.builtin.RBuiltinNode; import com.oracle.truffle.r.nodes.unary.CastStringNode; import com.oracle.truffle.r.nodes.unary.CastStringNodeGen; import com.oracle.truffle.r.nodes.unary.GetNonSharedNode; +import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RError.Message; import com.oracle.truffle.r.runtime.builtins.RBuiltin; import com.oracle.truffle.r.runtime.data.RDataFactory; @@ -48,7 +49,8 @@ public abstract class UpdateNames extends RBuiltinNode.Arg2 { @Child private CastStringNode castStringNode; static { - Casts.noCasts(UpdateNames.class); + Casts casts = new Casts(UpdateNames.class); + casts.arg("x").mustNotBeNull(RError.Message.SET_ATTRIBUTES_ON_NULL, "NULL"); } private Object castString(Object o) { diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRSourceInfo.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRSourceInfo.java index ed3430a7b3..e0d1e1aa49 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRSourceInfo.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRSourceInfo.java @@ -28,6 +28,7 @@ import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.r.nodes.builtin.RBuiltinNode; +import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.builtins.RBehavior; import com.oracle.truffle.r.runtime.builtins.RBuiltin; import com.oracle.truffle.r.runtime.data.RFunction; @@ -40,7 +41,8 @@ import com.oracle.truffle.r.runtime.data.RNull; public abstract class FastRSourceInfo extends RBuiltinNode.Arg1 { static { - Casts.noCasts(FastRSourceInfo.class); + Casts casts = new Casts(FastRSourceInfo.class); + casts.arg("fun").defaultError(RError.Message.GENERIC, "Only functions are allowed.").mustBe(RFunction.class); } @Specialization @@ -55,6 +57,8 @@ public abstract class FastRSourceInfo extends RBuiltinNode.Arg1 { String path = ss.getSource().getPath(); if (path != null) { return path + "#" + ss.getStartLine(); + } else if (ss.getSource().getURI() != null) { + return ss.getSource().getURI() + "#" + ss.getStartLine(); } else { return ss.getSource().getName(); } -- GitLab