From a8110360ffe72248141e520dd0e29ed51868b622 Mon Sep 17 00:00:00 2001
From: Florian Angerer <florian.angerer@oracle.com>
Date: Fri, 1 Sep 2017 15:20:18 +0200
Subject: [PATCH] Casting int sequence to string sequence in CastStringNode.

---
 .../oracle/truffle/r/nodes/unary/CastStringNode.java  | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java
index ebec5af6e4..26dcb96817 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java
@@ -33,7 +33,9 @@ import com.oracle.truffle.r.runtime.RDeparse;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.data.RDataFactory;
+import com.oracle.truffle.r.runtime.data.RIntSequence;
 import com.oracle.truffle.r.runtime.data.RLanguage;
+import com.oracle.truffle.r.runtime.data.RStringSequence;
 import com.oracle.truffle.r.runtime.data.RStringVector;
 import com.oracle.truffle.r.runtime.data.RSymbol;
 import com.oracle.truffle.r.runtime.data.model.RAbstractContainer;
@@ -70,12 +72,21 @@ public abstract class CastStringNode extends CastStringBaseNode {
         return ret;
     }
 
+    protected boolean isIntSequence(RAbstractContainer c) {
+        return c instanceof RIntSequence;
+    }
+
     @Specialization
     protected RStringVector doStringVector(RStringVector vector) {
         return vector;
     }
 
     @Specialization
+    protected RStringSequence doStringVector(RIntSequence vector) {
+        return RDataFactory.createStringSequence("", "", vector.getStart(), vector.getStride(), vector.getLength());
+    }
+
+    @Specialization(guards = "!isIntSequence(operandIn)")
     protected RStringVector doAbstractContainer(RAbstractContainer operandIn,
                     @Cached("createClassProfile()") ValueProfile operandProfile,
                     @Cached("createBinaryProfile()") ConditionProfile isLanguageProfile) {
-- 
GitLab