From 321b755f4d6463ef6df0e515632032bb934e5146 Mon Sep 17 00:00:00 2001 From: Adam Welc <adam.welc@oracle.com> Date: Tue, 15 Mar 2016 20:07:30 -0700 Subject: [PATCH] Fixed a problem with "class" function returning incorrect values for S4 objects. --- .../src/com/oracle/truffle/r/nodes/builtin/base/GetClass.java | 2 +- .../com/oracle/truffle/r/test/builtins/TestBuiltin_class.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetClass.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetClass.java index 8e96287c74..53acb6b723 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetClass.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetClass.java @@ -21,7 +21,7 @@ import com.oracle.truffle.r.runtime.data.model.*; @RBuiltin(name = "class", kind = PRIMITIVE, parameterNames = {"x"}) public abstract class GetClass extends RBuiltinNode { - @Child private ClassHierarchyNode classHierarchy = ClassHierarchyNodeGen.create(true, true); + @Child private ClassHierarchyNode classHierarchy = ClassHierarchyNodeGen.create(true, false); @Specialization protected RAbstractStringVector getClass(Object x) { diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_class.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_class.java index 5b9ffbe052..3d278e42fb 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_class.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_class.java @@ -187,5 +187,7 @@ public class TestBuiltin_class extends TestBase { assertEval("{x<-c(1,2,3);class(x)}"); assertEval("{x<-seq(1,10);class(x)}"); + + assertEval("{ gen<-function(object) 0; setGeneric(\"gen\"); class(gen) }"); } } -- GitLab