From 1b2e376151279b77c6a83161665cd166b044c79c Mon Sep 17 00:00:00 2001
From: Zbynek Slajchrt <zbynek.slajchrt@oracle.com>
Date: Mon, 22 Aug 2016 11:33:35 +0200
Subject: [PATCH] A fix-up in AnyNA

---
 .../truffle/r/nodes/builtin/base/AnyNA.java   |  2 +-
 .../truffle/r/test/ExpectedTestOutput.test    | 56 ++++++-------------
 .../r/test/builtins/TestBuiltin_anyNA.java    |  1 +
 3 files changed, 18 insertions(+), 41 deletions(-)

diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java
index 2092bdc5ff..f4ca1e913a 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java
@@ -173,7 +173,7 @@ public abstract class AnyNA extends RBuiltinNode {
 
         for (int i = 0; i < list.getLength(); i++) {
             Object value = elementProfile.profile(list.getDataAt(i));
-            if (length.executeInteger(frame, value) == 1) {
+            if (length.executeInteger(frame, value) > 0) {
                 byte result = recursiveNode.execute(frame, value, recursive);
                 if (result == RRuntime.LOGICAL_TRUE) {
                     return RRuntime.LOGICAL_TRUE;
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index 01a5d768b4..e6f7344c29 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
 ##com.oracle.truffle.r.test.S4.TestS4.runRSourceTests
 #{ source("com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/S4/R/allocation1.R") }
 An object of class "Person"
@@ -332,45 +331,6 @@ Error: trying to get slot "foo" from an object (class "bar") that is not an S4 o
 ##com.oracle.truffle.r.test.S4.TestS4.testSlotAccess
 #{ x<-getClass("ClassUnionRepresentation"); slot(x, "virtual") }
 [1] FALSE
-=======
-##com.oracle.truffle.r.test.builtins.TestBuiltin_Arg.testArg1
-#argv <- list(1+2i);Arg(argv[[1]]);
-[1] 1.107149
-
-##com.oracle.truffle.r.test.builtins.TestBuiltin_Arg.testArg2
-#argv <- list(c(1554.86976865791+337.57296578684i, 1953.0195914094+434.16395869265i, 2020.8001333202+267.40279521531i, 12019.4947666225+397.6223289386i, 40989.2104557418+1079.1450107273i, 59779.5384921205+1460.5074297272i, 40703.4141691824+1049.8100128697i, 12234.4562968499+469.0052365648i, 2311.58538965355+142.56529231224i, 2158.93441543181+94.80017111005i, 2768.79882180339+256.05759156168i, 3234.20673958634+282.64174433659i, 2796.76248579155+64.23534085425i, 2030.22757739534-164.56566766766i, 1522.09271008314-273.51503749101i, 1109.23177636373-215.24298332377i, 714.154122222449-75.284630456206i, 509.684427096512-24.577531288476i, 628.214718823948+42.431050163574i, 1053.2295477549+190.4802567974i, 1388.73708931304+133.04405268816i, 1213.97041311196-135.67196064028i, 790.469479873384-232.737914916798i, 503.424076694357-99.275737105817i, 430.214847703846+45.250156289826i, 640.795334515383+121.961327286573i, 794.927869993865+100.643091831764i, 554.394621183915-15.753680159958i, 286.476583987294-104.634488576316i, 232.82067569803-92.469328935268i, 229.472155078088-54.85406188579i, 253.438957119958-65.123390974834i, 285.141954428461-79.653095359009i, 257.168942241366-34.332533775171i, 214.215071612655+18.001149572355i, 199.882436088191+0i));Arg(argv[[1]]);
- [1]  0.21378910  0.21874682  0.13156088  0.03306939  0.02632146  0.02442670
- [7]  0.02578598  0.03831602  0.06159623  0.04388244  0.09221737  0.08716990
-[13]  0.02296371 -0.08088091 -0.17779914 -0.19166492 -0.10502999 -0.04818375
-[19]  0.06743985  0.17891954  0.09551070 -0.11129703 -0.28633889 -0.19470278
-[25]  0.10479506  0.18807855  0.12593654 -0.02840836 -0.35019211 -0.37806413
-[31] -0.23464135 -0.25151740 -0.27240160 -0.13271712  0.08383610  0.00000000
-
-##com.oracle.truffle.r.test.builtins.TestBuiltin_Arg.testArg3
-#argv <- list(c(-12.561836573133-726.935211685406i, -19.15961591777-1315.40822424617i, -666.84872452586-2013.90899841237i, -5775.9038598237-11495.8986046958i, -19052.0606820086-36788.5714510618i, -27954.209922899-52600.8398855356i, -19930.6456597181-35739.3494902644i, -7168.9170917163-10787.9325286278i, -2331.00733468417-1545.77448035635i, -1953.77845230855-212.90200115993i, -1953.60071030304+1420.43983282655i, -1700.4015174326+2765.31423009739i, -862.10275212019+2693.95914108523i, 163.24691179114+1837.1971341258i, 824.29498680332+1155.03126302727i, 939.495937605926+679.549172893055i, 686.101881005818+305.166761591578i, 460.339323160381-14.067413050801i, 533.688543397269-293.997358985575i, 773.041200043657-698.096300485637i, 716.84959340189-1127.39175172066i, 226.23728166311-1110.40349894929i, -203.687633095422-740.924670781257i, -271.865544904439-437.858153233594i, -316.769706633022-279.671035520361i, -624.842102639273-228.211019456587i, -806.31350008813-164.912647906911i, -506.559675826232+24.376187336594i, -142.784303570554+217.087547410547i, -44.704338624059+260.225831716256i, 10.565037460572+219.942519605707i, 143.643627814428+218.823069474359i, 232.58540850813+214.905815487636i, 223.286482103748+175.139821578561i, 185.008902762186+116.519845434485i, 171.150234739785-0i));Arg(argv[[1]]);
- [1] -1.58807515 -1.58536083 -1.89055498 -2.03638740 -2.04864530 -2.05927874
- [7] -2.07950663 -2.15731903 -2.55603846 -3.03305155  2.51291713  2.12210230
-[13]  1.88051133  1.48217258  0.95096394  0.62620121  0.41850738 -0.03054928
-[19] -0.50351717 -0.73449866 -1.00443433 -1.36980404 -1.83907890 -2.12644093
-[25] -2.41831456 -2.79141494 -2.93984830  3.09350869  2.15258425  1.74092622
-[31]  1.52279777  0.98990906  0.74591046  0.66513920  0.56204835  0.00000000
-
-##com.oracle.truffle.r.test.builtins.TestBuiltin_Arg.testArg4
-#argv <- list(logical(0));Arg(argv[[1]]);
-numeric(0)
-
-##com.oracle.truffle.r.test.builtins.TestBuiltin_Arg.testArg5
-#argv <- list(structure(numeric(0), .Dim = c(0L, 0L)));Arg(argv[[1]]);
-<0 x 0 matrix>
-
-##com.oracle.truffle.r.test.builtins.TestBuiltin_Arg.testArg6
-#argv <- list(FALSE);Arg(argv[[1]]);
-[1] 0
-
-##com.oracle.truffle.r.test.builtins.TestBuiltin_Arg.testArg8
-#argv <- list(-1);do.call('Arg', argv)
-[1] 3.141593
->>>>>>> 430de60... Arg builtin implemented
 
 ##com.oracle.truffle.r.test.S4.TestS4.testSlotAccess
 #{ x<-getClass("ClassUnionRepresentation"); slot(x, virtual) }
@@ -2646,6 +2606,22 @@ In anyDuplicated.default(c(1L, 2L, 1L, 1L, 3L, 2L), incomparables = "cat") :
 #argv <- list(c(1.81566026854212e-304, 0, 0, 0, 0, 0, 0, 0, 0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0));do.call('anyNA', argv)
 [1] FALSE
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_anyNA.testanyNA2
+#anyNA(list(list(4,5,NA), 3), recursive=TRUE)
+[1] TRUE
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_anyNA.testanyNA2
+#anyNA(list(list(c(NA)),c(1)), recursive=FALSE)
+[1] FALSE
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_anyNA.testanyNA2
+#anyNA(list(list(c(NA)),c(1)), recursive=TRUE)
+[1] TRUE
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_anyNA.testanyNA2
+#anyNA(list(list(c(NA)),c(1)), recursive=c(FALSE,TRUE))
+[1] FALSE
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_aperm.testAperm
 #{ a = array(1:24,c(2,3,4)); b = aperm(a); c(dim(b)[1],dim(b)[2],dim(b)[3]) }
 [1] 4 3 2
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_anyNA.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_anyNA.java
index 751fef3731..cea95545ce 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_anyNA.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_anyNA.java
@@ -28,6 +28,7 @@ public class TestBuiltin_anyNA extends TestBase {
         assertEval("anyNA(list(list(c(NA)),c(1)), recursive=TRUE)");
         assertEval("anyNA(list(list(c(NA)),c(1)), recursive=FALSE)");
         assertEval("anyNA(list(list(c(NA)),c(1)), recursive=c(FALSE,TRUE))");
+        assertEval("anyNA(list(list(4,5,NA), 3), recursive=TRUE)");
     }
 
 }
-- 
GitLab