From 2f2bacb6367a7041c1f11169c37676e00f4dd122 Mon Sep 17 00:00:00 2001 From: Adam Welc <adam.welc@oracle.com> Date: Mon, 11 Jul 2016 12:36:24 -0700 Subject: [PATCH] Fixed a problem with strsplit function. --- .../oracle/truffle/r/nodes/builtin/base/GrepFunctions.java | 7 +++++++ .../truffle/r/test/builtins/TestBuiltin_strsplit.java | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java index 8c7b35626d..80f8c14c4d 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java @@ -809,6 +809,13 @@ public class GrepFunctions { } else { resultItem = splitIntl(data, currentSplit); } + if (resultItem.getLength() == 0) { + if (fixed) { + resultItem = RDataFactory.createStringVector(data); + } else { + resultItem = RDataFactory.createStringVector(data.length()); + } + } } result[i] = resultItem; } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java index 9558fb6b46..8a7ced3aa7 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java @@ -110,5 +110,9 @@ public class TestBuiltin_strsplit extends TestBase { assertEval("{ strsplit( c(\"helloh\", \"hi\"), c(\"h\",\"\")) }"); assertEval("{ strsplit(\"ahoj\", split=\"\") [[c(1,2)]] }"); assertEval("{ strsplit(\"a,h,o,j\", split=\",\") }"); + assertEval("{ strsplit(\"abc\", \".\", fixed = TRUE, perl=FALSE) }"); + assertEval("{ strsplit(\"abc\", \".\", fixed = TRUE, perl=TRUE) }"); + assertEval("{ strsplit(\"abc\", \".\", fixed = FALSE, perl=FALSE) }"); + assertEval("{ strsplit(\"abc\", \".\", fixed = FALSE, perl=TRUE) }"); } } -- GitLab