From b2b430a98444f178ba2a6c21069151105297485d Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Thu, 1 Mar 2018 16:23:42 +0100
Subject: [PATCH] small change in R_getClassFromCache

---
 .../truffle/r/library/methods/MethodsListDispatch.java | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java
index 351de044af..368c1913cb 100644
--- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java
+++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java
@@ -146,7 +146,10 @@ public class MethodsListDispatch {
                         @Cached("create()") GetFromEnvironment get,
                         @Cached("createPckgAttrAccess()") GetFixedAttributeNode klassPckgAttrAccess,
                         @Cached("createPckgAttrAccess()") GetFixedAttributeNode valPckgAttrAccess) {
-            String klassString = klass.getLength() == 0 ? RRuntime.STRING_NA : klass.getDataAt(0);
+            if (klass.getLength() == 0) {
+                return RNull.instance;
+            }
+            String klassString = klass.getDataAt(0);
 
             if (klassString.length() == 0) {
                 throw error(RError.Message.ZERO_LENGTH_VARIABLE);
@@ -175,6 +178,11 @@ public class MethodsListDispatch {
         protected RS4Object callGetClassFromCache(RS4Object klass, @SuppressWarnings("unused") REnvironment table) {
             return klass;
         }
+
+        @Fallback
+        protected RS4Object callGetClassFromCache(@SuppressWarnings("unused") Object klass, @SuppressWarnings("unused") Object table) {
+            throw error(Message.GENERIC, "class should be either a character-string name or a class definition");
+        }
     }
 
     public abstract static class R_set_method_dispatch extends RExternalBuiltinNode.Arg1 {
-- 
GitLab