diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CacheClass.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CacheClass.java
index 2d78a5d73a95e3fedc04ee23c03f1690f5ed03e1..9c0d5bd0f09e1fcc36073b2b43ea76ef84a00536 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CacheClass.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CacheClass.java
@@ -42,6 +42,6 @@ public abstract class CacheClass extends RBuiltinNode {
     @Specialization
     protected RAbstractStringVector getClass(String cl, RAbstractStringVector ext) {
         RContext.getInstance().putS4Extends(cl, ext.materialize());
-        return null;
+        return ext;
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrintFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrintFunctions.java
index e9986082710a85a492a3ea76c8c4c7350985c88c..40de6fe16663d549c10a5b99967cb28a8b72f9b5 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrintFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrintFunctions.java
@@ -98,7 +98,7 @@ public class PrintFunctions {
             } else {
                 printDefault(frame, showFunction, digits, quote, naPrint, printGap, right, max, useSource, noOpt);
             }
-            return null;
+            return o;
         }
 
         protected boolean isS4(Object o) {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ShortRowNames.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ShortRowNames.java
index b057268ae0a62353576851b5f843e1ec705494a4..e318c352f9a7e3ded51e0bd78d06cfb50c9d1501 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ShortRowNames.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ShortRowNames.java
@@ -76,6 +76,10 @@ public abstract class ShortRowNames extends RBuiltinNode {
             rowNames = type == 1 ? n : Math.abs(n);
         }
 
+        if (rowNames == null) {
+            return RNull.instance;
+        }
+
         return rowNames;
     }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java
index de186c6978388c344d79f020d5073c109c1e6028..2d93bf54c8400ed5388adfdb2cf52e924c8cf4b7 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java
@@ -986,6 +986,7 @@ public abstract class RCallNode extends RCallBaseNode implements RSyntaxNode, RS
         @Override
         public Object execute(VirtualFrame frame, RFunction currentFunction, RArgsValuesAndNames orderedArguments, S3Args s3Args) {
             Object result = builtin.executeBuiltin(frame, castArguments(frame, orderedArguments.getArguments()));
+            assert result != null : "builtins cannot return 'null': " + builtinDescriptor.getName();
             visibility.execute(frame, builtinDescriptor.getVisibility());
             return result;
         }