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 c58e054d13d7f8a640da45c7c0c134c4243714f8..03f7c66c2703a0de725a36ea51ad29919719ce75 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 ed3430a7b325f4ad1d1f6abd39ecc8fb61e57102..e0d1e1aa49ae1e8733613c7826e76a4bab85eb99 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(); }