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