KT-813 Convert arrays correctly
This commit is contained in:
@@ -9,15 +9,26 @@ import java.util.List;
|
|||||||
* @author ignatov
|
* @author ignatov
|
||||||
*/
|
*/
|
||||||
public class ArrayInitializerExpression extends Expression {
|
public class ArrayInitializerExpression extends Expression {
|
||||||
|
private Type myType;
|
||||||
private final List<Expression> myInitializers;
|
private final List<Expression> myInitializers;
|
||||||
|
|
||||||
public ArrayInitializerExpression(List<Expression> initializers) {
|
public ArrayInitializerExpression(final Type type, List<Expression> initializers) {
|
||||||
|
myType = type;
|
||||||
myInitializers = initializers;
|
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
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String toKotlin() {
|
public String toKotlin() {
|
||||||
return "array" + "(" + AstUtil.joinNodes(myInitializers, COMMA_WITH_SPACE) + ")";
|
return createArrayFunction(myType) + "(" + AstUtil.joinNodes(myInitializers, COMMA_WITH_SPACE) + ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ public class AstUtil {
|
|||||||
return string.substring(0, 1).toUpperCase() + string.substring(1);
|
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<String> createListWithEmptyString(final List<Expression> arguments) {
|
public static List<String> createListWithEmptyString(final List<Expression> arguments) {
|
||||||
final List<String> conversions = new LinkedList<String>();
|
final List<String> conversions = new LinkedList<String>();
|
||||||
//noinspection UnusedDeclaration
|
//noinspection UnusedDeclaration
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ public class ExpressionVisitor extends StatementVisitor {
|
|||||||
public void visitArrayInitializerExpression(PsiArrayInitializerExpression expression) {
|
public void visitArrayInitializerExpression(PsiArrayInitializerExpression expression) {
|
||||||
super.visitArrayInitializerExpression(expression);
|
super.visitArrayInitializerExpression(expression);
|
||||||
myResult = new ArrayInitializerExpression(
|
myResult = new ArrayInitializerExpression(
|
||||||
|
typeToType(expression.getType()),
|
||||||
expressionsToExpressionList(expression.getInitializers())
|
expressionsToExpressionList(expression.getInitializers())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
array(1, 2, 3)
|
intArray(1, 2, 3)
|
||||||
@@ -1 +0,0 @@
|
|||||||
{1, 2, 3};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
array(1, 2, 3)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{a, b, c};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
array(a, b, c)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9))
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
byte[] a = new byte[] {1, 2, 3};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
var a : ByteArray? = byteArray(1, 2, 3)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
int[] a = {1, 2, 3};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
var a : IntArray? = intArray(1, 2, 3)
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
int a = 0, b = 0, c = 0;
|
||||||
|
int is[] = {a, b, c};
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
var a : Int = 0
|
||||||
|
var b : Int = 0
|
||||||
|
var c : Int = 0
|
||||||
|
var `is` : IntArray? = intArray(a, b, c)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
int[][] a = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
var a : Array<IntArray?>? = array<IntArray?>(intArray(1, 2, 3), intArray(4, 5, 6), intArray(7, 8, 9))
|
||||||
@@ -1 +1 @@
|
|||||||
var d2 : Array<IntArray?>? = array()
|
var d2 : Array<IntArray?>? = array<IntArray?>()
|
||||||
@@ -1 +1 @@
|
|||||||
var a : DoubleArray? = array(1, 2, 3)
|
var a : DoubleArray? = doubleArray(1, 2, 3)
|
||||||
@@ -1 +1 @@
|
|||||||
var a : LongArray? = array(1, 2, 3)
|
var a : LongArray? = longArray(1, 2, 3)
|
||||||
@@ -1 +1 @@
|
|||||||
var a : IntArray? = array(1, 2, 3)
|
var a : IntArray? = intArray(1, 2, 3)
|
||||||
@@ -1 +1 @@
|
|||||||
var a : Array<String?>? = array("abc")
|
var a : Array<String?>? = array<String?>("abc")
|
||||||
@@ -1 +1 @@
|
|||||||
var constrArgTypes : Array<Class<*>?>? = array(getJavaClass<Array<String?>?>, getJavaClass<String?>)
|
var constrArgTypes : Array<Class<*>?>? = array<Class<*>?>(getJavaClass<Array<String?>?>, getJavaClass<String?>)
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
namespace demo
|
namespace demo
|
||||||
open class Test() {
|
open class Test() {
|
||||||
open fun test(vararg var args : Any?) : Unit {
|
open fun test(vararg var args : Any?) : Unit {
|
||||||
args = array(1, 2, 3)
|
args = array<Int?>(1, 2, 3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user