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)); }