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