From fbe1e3273293b1a1cb837b01dda7f1314cb4ec40 Mon Sep 17 00:00:00 2001 From: Miloslav Metelka <miloslav.metelka@oracle.com> Date: Fri, 23 Dec 2016 23:28:52 +0100 Subject: [PATCH] Improved casts and removed extra specialization in utf8ToInt() builtin.. --- .../truffle/r/nodes/builtin/base/Utf8ToInt.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Utf8ToInt.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Utf8ToInt.java index 8b1728a4dd..85b423645f 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Utf8ToInt.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Utf8ToInt.java @@ -23,6 +23,7 @@ package com.oracle.truffle.r.nodes.builtin.base; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.notEmpty; +import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.size; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.stringValue; import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE; import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL; @@ -42,7 +43,8 @@ public abstract class Utf8ToInt extends RBuiltinNode { @Override protected void createCasts(CastBuilder casts) { - casts.arg(0, "x").defaultError(RError.SHOW_CALLER, RError.Message.ARG_MUST_BE_CHARACTER_VECTOR_LENGTH_ONE, "x").mustBe(stringValue()).asStringVector().mustBe(notEmpty()); + casts.arg(0, "x").defaultError(RError.SHOW_CALLER, RError.Message.ARG_MUST_BE_CHARACTER_VECTOR_LENGTH_ONE, "x").mustBe(stringValue()).asStringVector().mustBe(notEmpty()).shouldBe(size(1), + RError.SHOW_CALLER, RError.Message.ARG_SHOULD_BE_CHARACTER_VECTOR_LENGTH_ONE).findFirst(); } @Specialization @@ -62,12 +64,4 @@ public abstract class Utf8ToInt extends RBuiltinNode { return ret; } - @Specialization - protected RAbstractIntVector utf8ToInt(RAbstractStringVector x) { - if (x.getLength() > 1) { - RError.warning(RError.SHOW_CALLER, RError.Message.ARG_SHOULD_BE_CHARACTER_VECTOR_LENGTH_ONE); - } - return utf8ToInt(x.getDataAt(0)); - } - } -- GitLab