diff --git a/src/org/jetbrains/jet/j2k/ast/ArrayInitializerExpression.java b/src/org/jetbrains/jet/j2k/ast/ArrayInitializerExpression.java index 876dc90670f..f455e18d12f 100644 --- a/src/org/jetbrains/jet/j2k/ast/ArrayInitializerExpression.java +++ b/src/org/jetbrains/jet/j2k/ast/ArrayInitializerExpression.java @@ -9,15 +9,26 @@ import java.util.List; * @author ignatov */ public class ArrayInitializerExpression extends Expression { + private Type myType; private final List myInitializers; - public ArrayInitializerExpression(List initializers) { + public ArrayInitializerExpression(final Type type, List initializers) { + myType = type; myInitializers = initializers; + + } + + @NotNull + private static String createArrayFunction(@NotNull final Type type) { + String sType = type.convertedToNotNull().toKotlin().replace("Array", "").toLowerCase(); + if (!sType.equals("any") && PRIMITIVE_TYPES.contains(sType)) + return sType + "Array"; + return AstUtil.lowerFirstCharacter(type.convertedToNotNull().toKotlin()); } @NotNull @Override public String toKotlin() { - return "array" + "(" + AstUtil.joinNodes(myInitializers, COMMA_WITH_SPACE) + ")"; + return createArrayFunction(myType) + "(" + AstUtil.joinNodes(myInitializers, COMMA_WITH_SPACE) + ")"; } } diff --git a/src/org/jetbrains/jet/j2k/util/AstUtil.java b/src/org/jetbrains/jet/j2k/util/AstUtil.java index 3c96203ab94..047c96ce8f9 100644 --- a/src/org/jetbrains/jet/j2k/util/AstUtil.java +++ b/src/org/jetbrains/jet/j2k/util/AstUtil.java @@ -48,6 +48,10 @@ public class AstUtil { return string.substring(0, 1).toUpperCase() + string.substring(1); } + public static String lowerFirstCharacter(String string) { + return string.substring(0, 1).toLowerCase() + string.substring(1); + } + public static List createListWithEmptyString(final List arguments) { final List conversions = new LinkedList(); //noinspection UnusedDeclaration diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index 233e97f8c89..deffc512a96 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -42,6 +42,7 @@ public class ExpressionVisitor extends StatementVisitor { public void visitArrayInitializerExpression(PsiArrayInitializerExpression expression) { super.visitArrayInitializerExpression(expression); myResult = new ArrayInitializerExpression( + typeToType(expression.getType()), expressionsToExpressionList(expression.getInitializers()) ); } diff --git a/testData/ast/arrayInitializerExpression/expression/newInt.kt b/testData/ast/arrayInitializerExpression/expression/newInt.kt index 5bf3fb77d23..6cfae9942ea 100644 --- a/testData/ast/arrayInitializerExpression/expression/newInt.kt +++ b/testData/ast/arrayInitializerExpression/expression/newInt.kt @@ -1 +1 @@ -array(1, 2, 3) \ No newline at end of file +intArray(1, 2, 3) \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/expression/oneDim.jav b/testData/ast/arrayInitializerExpression/expression/oneDim.jav deleted file mode 100644 index bfea03892f9..00000000000 --- a/testData/ast/arrayInitializerExpression/expression/oneDim.jav +++ /dev/null @@ -1 +0,0 @@ -{1, 2, 3}; \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/expression/oneDim.kt b/testData/ast/arrayInitializerExpression/expression/oneDim.kt deleted file mode 100644 index 5bf3fb77d23..00000000000 --- a/testData/ast/arrayInitializerExpression/expression/oneDim.kt +++ /dev/null @@ -1 +0,0 @@ -array(1, 2, 3) \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/expression/oneDimWithVariables.jav b/testData/ast/arrayInitializerExpression/expression/oneDimWithVariables.jav deleted file mode 100644 index 6d0d48ea35d..00000000000 --- a/testData/ast/arrayInitializerExpression/expression/oneDimWithVariables.jav +++ /dev/null @@ -1 +0,0 @@ -{a, b, c}; \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/expression/oneDimWithVariables.kt b/testData/ast/arrayInitializerExpression/expression/oneDimWithVariables.kt deleted file mode 100644 index 61951103058..00000000000 --- a/testData/ast/arrayInitializerExpression/expression/oneDimWithVariables.kt +++ /dev/null @@ -1 +0,0 @@ -array(a, b, c) \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/expression/twoDim.jav b/testData/ast/arrayInitializerExpression/expression/twoDim.jav deleted file mode 100644 index 7892cebda83..00000000000 --- a/testData/ast/arrayInitializerExpression/expression/twoDim.jav +++ /dev/null @@ -1 +0,0 @@ -{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/expression/twoDim.kt b/testData/ast/arrayInitializerExpression/expression/twoDim.kt deleted file mode 100644 index 9474db259a3..00000000000 --- a/testData/ast/arrayInitializerExpression/expression/twoDim.kt +++ /dev/null @@ -1 +0,0 @@ -array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9)) \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/newByte.jav b/testData/ast/arrayInitializerExpression/statement/newByte.jav new file mode 100644 index 00000000000..5a6e85cdfe1 --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/newByte.jav @@ -0,0 +1 @@ +byte[] a = new byte[] {1, 2, 3}; \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/newByte.kt b/testData/ast/arrayInitializerExpression/statement/newByte.kt new file mode 100644 index 00000000000..2f0ce90f341 --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/newByte.kt @@ -0,0 +1 @@ +var a : ByteArray? = byteArray(1, 2, 3) \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/oneDim.jav b/testData/ast/arrayInitializerExpression/statement/oneDim.jav new file mode 100644 index 00000000000..9e498af66a6 --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/oneDim.jav @@ -0,0 +1 @@ +int[] a = {1, 2, 3}; \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/oneDim.kt b/testData/ast/arrayInitializerExpression/statement/oneDim.kt new file mode 100644 index 00000000000..19b3af3f5c4 --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/oneDim.kt @@ -0,0 +1 @@ +var a : IntArray? = intArray(1, 2, 3) \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/oneDimWithVariables.jav b/testData/ast/arrayInitializerExpression/statement/oneDimWithVariables.jav new file mode 100644 index 00000000000..185a7d5aaf8 --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/oneDimWithVariables.jav @@ -0,0 +1,2 @@ +int a = 0, b = 0, c = 0; +int is[] = {a, b, c}; \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/oneDimWithVariables.kt b/testData/ast/arrayInitializerExpression/statement/oneDimWithVariables.kt new file mode 100644 index 00000000000..a1b91cfa3ab --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/oneDimWithVariables.kt @@ -0,0 +1,4 @@ +var a : Int = 0 +var b : Int = 0 +var c : Int = 0 +var `is` : IntArray? = intArray(a, b, c) \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/twoDim.jav b/testData/ast/arrayInitializerExpression/statement/twoDim.jav new file mode 100644 index 00000000000..f895393aad5 --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/twoDim.jav @@ -0,0 +1 @@ +int[][] a = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; \ No newline at end of file diff --git a/testData/ast/arrayInitializerExpression/statement/twoDim.kt b/testData/ast/arrayInitializerExpression/statement/twoDim.kt new file mode 100644 index 00000000000..4ccc886bd71 --- /dev/null +++ b/testData/ast/arrayInitializerExpression/statement/twoDim.kt @@ -0,0 +1 @@ +var a : Array? = array(intArray(1, 2, 3), intArray(4, 5, 6), intArray(7, 8, 9)) \ No newline at end of file diff --git a/testData/ast/arrayType/statement/arrayInitializationStatement.kt b/testData/ast/arrayType/statement/arrayInitializationStatement.kt index 283e73ae8ae..146484f79d7 100644 --- a/testData/ast/arrayType/statement/arrayInitializationStatement.kt +++ b/testData/ast/arrayType/statement/arrayInitializationStatement.kt @@ -1 +1 @@ -var d2 : Array? = array() \ No newline at end of file +var d2 : Array? = array() \ No newline at end of file diff --git a/testData/ast/arrayType/statement/doubleArray.kt b/testData/ast/arrayType/statement/doubleArray.kt index 152845e23f9..c8147ce0a7f 100644 --- a/testData/ast/arrayType/statement/doubleArray.kt +++ b/testData/ast/arrayType/statement/doubleArray.kt @@ -1 +1 @@ -var a : DoubleArray? = array(1, 2, 3) \ No newline at end of file +var a : DoubleArray? = doubleArray(1, 2, 3) \ No newline at end of file diff --git a/testData/ast/arrayType/statement/longArray.kt b/testData/ast/arrayType/statement/longArray.kt index f4a9760f755..25e13c35f13 100644 --- a/testData/ast/arrayType/statement/longArray.kt +++ b/testData/ast/arrayType/statement/longArray.kt @@ -1 +1 @@ -var a : LongArray? = array(1, 2, 3) \ No newline at end of file +var a : LongArray? = longArray(1, 2, 3) \ No newline at end of file diff --git a/testData/ast/arrayType/statement/newIntArray.kt b/testData/ast/arrayType/statement/newIntArray.kt index 7b306f0e0fc..19b3af3f5c4 100644 --- a/testData/ast/arrayType/statement/newIntArray.kt +++ b/testData/ast/arrayType/statement/newIntArray.kt @@ -1 +1 @@ -var a : IntArray? = array(1, 2, 3) \ No newline at end of file +var a : IntArray? = intArray(1, 2, 3) \ No newline at end of file diff --git a/testData/ast/arrayType/statement/newStringArray.kt b/testData/ast/arrayType/statement/newStringArray.kt index 75bd5eaa610..8e2ed9e854c 100644 --- a/testData/ast/arrayType/statement/newStringArray.kt +++ b/testData/ast/arrayType/statement/newStringArray.kt @@ -1 +1 @@ -var a : Array? = array("abc") \ No newline at end of file +var a : Array? = array("abc") \ No newline at end of file diff --git a/testData/ast/classExpression/statement/complexExample.kt b/testData/ast/classExpression/statement/complexExample.kt index fcbc1c36ccd..d05f082bcc6 100644 --- a/testData/ast/classExpression/statement/complexExample.kt +++ b/testData/ast/classExpression/statement/complexExample.kt @@ -1 +1 @@ -var constrArgTypes : Array?>? = array(getJavaClass?>, getJavaClass) \ No newline at end of file +var constrArgTypes : Array?>? = array?>(getJavaClass?>, getJavaClass) \ No newline at end of file diff --git a/testData/ast/function/file/varVararg.kt b/testData/ast/function/file/varVararg.kt index ebd7393461c..a32417ad75b 100644 --- a/testData/ast/function/file/varVararg.kt +++ b/testData/ast/function/file/varVararg.kt @@ -1,6 +1,6 @@ namespace demo open class Test() { open fun test(vararg var args : Any?) : Unit { -args = array(1, 2, 3) +args = array(1, 2, 3) } } \ No newline at end of file