From f5591ec453b3219e92d9b553d6672fabbb51b8c2 Mon Sep 17 00:00:00 2001
From: Mick Jordan <mick.jordan@oracle.com>
Date: Wed, 21 Oct 2015 17:09:30 -0700
Subject: [PATCH] correct error for switch with > 1 length character vector

---
 .../src/com/oracle/truffle/r/nodes/builtin/base/Switch.java  | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Switch.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Switch.java
index 838633ef11..9b2975bb19 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Switch.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Switch.java
@@ -47,9 +47,12 @@ public abstract class Switch extends RBuiltinNode {
     private final ConditionProfile returnValueProfile = ConditionProfile.createBinaryProfile();
     private final BranchProfile notIntType = BranchProfile.create();
 
-    @Specialization(guards = "isLengthOne(x)")
+    @Specialization
     protected Object doSwitch(VirtualFrame frame, RAbstractStringVector x, RArgsValuesAndNames optionalArgs) {
         controlVisibility();
+        if (x.getLength() != 1) {
+            throw RError.error(this, RError.Message.EXPR_NOT_LENGTH_ONE);
+        }
         return prepareResult(doSwitchString(frame, x, optionalArgs));
     }
 
-- 
GitLab