diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java index c9437d56e481f0de76c1fad8b2e1e759a27c1cb7..6beeea072ece55a1284ae5c7f54a4f8d4131a51b 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java @@ -129,7 +129,7 @@ public final class ValuePrinterNode extends RBaseNode { } catch (UnknownIdentifierException | UnsupportedMessageException e) { throw RInternalError.shouldNotReachHere(e); } - return (String) value; + return String.valueOf(value); } @Override @@ -143,6 +143,7 @@ public final class ValuePrinterNode extends RBaseNode { boolean allBoolean = true; boolean allInteger = true; boolean allNumber = true; + boolean allCharacter = true; boolean allString = true; for (int i = 0; i < size; i++) { Object value = ForeignAccess.sendRead(readNode, obj, i); @@ -152,6 +153,7 @@ public final class ValuePrinterNode extends RBaseNode { allBoolean &= value instanceof Boolean; allInteger &= value instanceof Integer; allNumber &= value instanceof Number; + allCharacter &= value instanceof Character; allString &= value instanceof String; } if (allBoolean) { @@ -250,7 +252,7 @@ public final class ValuePrinterNode extends RBaseNode { } } return new RDoubleWrapper(size); - } else if (allString) { + } else if (allString || allCharacter) { return new RStringWrapper(size, obj); } else { class RListWrapper extends TruffleObjectWrapper implements RAbstractListVector {