From a99bad7e479c628c31eb77b5318fade37f6a03ae Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 19 Jul 2011 23:37:52 +0200 Subject: [PATCH] don't crash when appending an array to StringBuilder --- idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java | 2 +- .../tests/org/jetbrains/jet/codegen/NamespaceGenTest.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 25bcd8039da..fe9f94c6279 100644 --- a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1316,7 +1316,7 @@ public class ExpressionCodegen extends JetVisitor { } Type exprType = expressionType(expr); gen(expr, exprType); - invokeAppendMethod(exprType); + invokeAppendMethod(exprType.getSort() == Type.ARRAY ? JetTypeMapper.TYPE_OBJECT : exprType); } public void invokeAppendMethod(Type exprType) { diff --git a/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java index bb0a43193d5..aaf311351e3 100644 --- a/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java @@ -481,4 +481,12 @@ public class NamespaceGenTest extends CodegenTestCase { final Method main = generateFunction(); assertEquals(false, ((Boolean) main.invoke(null, true)).booleanValue()); } + + public void testAppendArrayToString() throws Exception { + loadText("fun foo(a: String, b: Array) = a + b"); + final Method main = generateFunction(); + final String[] args = new String[] { "foo", "bar" }; + //noinspection ImplicitArrayToString + assertEquals("s" + args.toString(), main.invoke(null, "s", args)); + } }