From 20a026b1bc7dcb6c5c4bf4a2bef0a90ec04fc3ea Mon Sep 17 00:00:00 2001 From: Adam Welc <adam.welc@oracle.com> Date: Sun, 28 Aug 2016 14:08:34 -0700 Subject: [PATCH] Rewritten parameter casts for the vector builtin. --- .../src/com/oracle/truffle/r/nodes/builtin/base/Vector.java | 3 ++- .../oracle/truffle/r/test/builtins/TestBuiltin_vector.java | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java index 5736f617e7..c942eacc8a 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java @@ -47,7 +47,8 @@ public abstract class Vector extends RBuiltinNode { @Override protected void createCasts(CastBuilder casts) { - casts.arg("length").asIntegerVector().mustBe(singleElement()).findFirst(); + casts.arg("mode").defaultError(RError.SHOW_CALLER, RError.Message.INVALID_ARGUMENT, "mode").asStringVector().mustBe(singleElement()).findFirst(); + casts.arg("length").defaultError(RError.SHOW_CALLER, RError.Message.INVALID_ARGUMENT, "length").asIntegerVector().mustBe(singleElement()).findFirst(); } protected RType modeToType(String mode) { diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java index 5e7c002f47..e218f7e8d3 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java @@ -65,6 +65,11 @@ public class TestBuiltin_vector extends TestBase { assertEval("{ vector(\"numeric\", length=4) }"); assertEval("{ vector(length=3) }"); assertEval("{ x<-as.vector(3); y<-vector(length=x) }"); + + assertEval("{ vector(character()) }"); + assertEval("{ vector(c(\"numeric\", \"numeric\")) }"); + assertEval("{ vector(\"numeric\", integer()) }"); + assertEval("{ vector(\"numeric\", c(7, 42)) }"); } @Test -- GitLab