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();
             }