From b0b74151c96be9dfced23e5877229bd0c97c367e Mon Sep 17 00:00:00 2001
From: Adam Welc <adam.welc@oracle.com>
Date: Sun, 28 Aug 2016 12:44:15 -0700
Subject: [PATCH] Minor changes to duplicated builtin.

---
 .../r/nodes/builtin/base/DuplicatedFunctions.java    | 12 ++++++++----
 .../r/test/builtins/TestBuiltin_duplicated.java      |  2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java
index 03d2eb7c7d..eea62355ab 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java
@@ -46,8 +46,12 @@ public class DuplicatedFunctions {
         private final ConditionProfile incomparable = ConditionProfile.createBinaryProfile();
 
         protected void casts(CastBuilder casts) {
-            casts.arg("x").mustBe(nullValue().or(abstractVectorValue()), RError.SHOW_CALLER, RError.Message.GENERIC,
-                            "duplicated() applies only to vectors").asVector();
+            // these are similar to those in DuplicatedFunctions.java
+            casts.arg("x").mustBe(nullValue().or(abstractVectorValue()), RError.SHOW_CALLER, RError.Message.APPLIES_TO_VECTORS,
+                            "duplicated()").asVector();
+            // not much more can be done for incomparables as it is either a vector of incomparable
+            // values or a (single) logical value
+            casts.arg("incomparables").asVector(true);
             casts.arg("fromLast").asLogicalVector().findFirst(RRuntime.LOGICAL_FALSE);
         }
 
@@ -76,7 +80,7 @@ public class DuplicatedFunctions {
         }
     }
 
-    @RBuiltin(name = "duplicated", kind = INTERNAL, parameterNames = {"x", "imcomparables", "fromLast", "nmax"}, behavior = PURE)
+    @RBuiltin(name = "duplicated", kind = INTERNAL, parameterNames = {"x", "incomparables", "fromLast", "nmax"}, behavior = PURE)
     public abstract static class Duplicated extends Adapter {
 
         @Override
@@ -123,7 +127,7 @@ public class DuplicatedFunctions {
         }
     }
 
-    @RBuiltin(name = "anyDuplicated", kind = INTERNAL, parameterNames = {"x", "imcomparables", "fromLast"}, behavior = PURE)
+    @RBuiltin(name = "anyDuplicated", kind = INTERNAL, parameterNames = {"x", "incomparables", "fromLast"}, behavior = PURE)
     public abstract static class AnyDuplicated extends Adapter {
 
         @Override
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_duplicated.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_duplicated.java
index a1eb5d73a1..3040237600 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_duplicated.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_duplicated.java
@@ -133,7 +133,7 @@ public class TestBuiltin_duplicated extends TestBase {
 
         assertEval("{ x<-quote(f(7, 42)); duplicated(x) }");
         assertEval("{ x<-function() 42; duplicated(x) }");
-        assertEval(Output.IgnoreErrorMessage, "{ duplicated(c(1,2,1), incomparables=function() 42) }");
+        assertEval(Output.IgnoreErrorContext, "{ duplicated(c(1,2,1), incomparables=function() 42) }");
 
     }
 }
-- 
GitLab