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 5736f617e756325463f3b84daf925551432de5d6..c942eacc8a4a562af2a4749cd517b0b1cdb63e8f 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 5e7c002f47917a4bb563a2971a52e36a7120e6d1..e218f7e8d356838608ffdff845acebc860915c12 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