From 0b94f943163c601e09f10e262f886f0afef63b57 Mon Sep 17 00:00:00 2001
From: Tomas Stupka <tomas.stupka@oracle.com>
Date: Mon, 20 Nov 2017 15:58:42 +0100
Subject: [PATCH] if no keys then ListMR should instead of RNull return an
 empty vector (responding to HAS_SIZE)

---
 .../src/com/oracle/truffle/r/engine/interop/ListMR.java       | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java
index 8423b27c8b..a92ef70a06 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java
@@ -45,12 +45,12 @@ import com.oracle.truffle.r.nodes.access.vector.ReplaceVectorNode;
 import com.oracle.truffle.r.nodes.attributes.SpecialAttributesFunctions.GetNamesAttributeNode;
 import com.oracle.truffle.r.nodes.control.RLengthNode;
 import com.oracle.truffle.r.runtime.data.NativeDataAccess;
+import com.oracle.truffle.r.runtime.data.RDataFactory;
 import com.oracle.truffle.r.runtime.data.RExpression;
 import com.oracle.truffle.r.runtime.data.RFunction;
 import com.oracle.truffle.r.runtime.data.RList;
 import com.oracle.truffle.r.runtime.data.RLogical;
 import com.oracle.truffle.r.runtime.data.RMissing;
-import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.RPairList;
 import com.oracle.truffle.r.runtime.data.RStringVector;
 import com.oracle.truffle.r.runtime.data.RTruffleObject;
@@ -533,6 +533,6 @@ public class ListMR {
 
     private static Object listKeys(TruffleObject receiver, GetNamesAttributeNode getNamesNode) {
         RStringVector names = getNamesNode.getNames(receiver);
-        return names != null ? names : RNull.instance;
+        return names != null ? names : RDataFactory.createEmptyStringVector();
     }
 }
-- 
GitLab