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 838633ef1186263948a44d62d9e2dfe470759b79..9b2975bb19cc899599fb0d1367d9c0bacf43af40 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));
     }