From 01c0d11cccaf869eade838c99c8c80865d1b96c6 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 31 Oct 2011 21:01:31 +0400 Subject: [PATCH] ArrayType added --- src/org/jetbrains/jet/j2k/ast/ArrayType.java | 22 +++++++++++ .../jet/j2k/visitors/TypeVisitor.java | 2 + .../jetbrains/jet/j2k/ast/ArrayTypeTest.java | 37 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/org/jetbrains/jet/j2k/ast/ArrayType.java create mode 100644 test/org/jetbrains/jet/j2k/ast/ArrayTypeTest.java diff --git a/src/org/jetbrains/jet/j2k/ast/ArrayType.java b/src/org/jetbrains/jet/j2k/ast/ArrayType.java new file mode 100644 index 00000000000..d3574c4c0f3 --- /dev/null +++ b/src/org/jetbrains/jet/j2k/ast/ArrayType.java @@ -0,0 +1,22 @@ +package org.jetbrains.jet.j2k.ast; + +import org.jetbrains.annotations.NotNull; + +/** + * @author ignatov + */ +public class ArrayType extends Type { + private final Type myType; + + public ArrayType(Type type) { + myType = type; + } + + @NotNull + @Override + public String toKotlin() { + if (PRIMITIVE_TYPES.contains(myType.toKotlin().toLowerCase())) + return myType.toKotlin() + "Array" + QUESTION; // TODO + return "Array" + "<" + myType.toKotlin() + ">" + QUESTION; + } +} diff --git a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java index fbac51b6861..c222a774124 100644 --- a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java @@ -2,6 +2,7 @@ package org.jetbrains.jet.j2k.visitors; import com.intellij.psi.*; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.j2k.Converter; import org.jetbrains.jet.j2k.ast.*; import org.jetbrains.jet.j2k.util.AstUtil; @@ -36,6 +37,7 @@ public class TypeVisitor extends PsiTypeVisitor implements Visitor { @Override public Type visitArrayType(PsiArrayType arrayType) { + myResult = new ArrayType(Converter.typeToType(arrayType.getComponentType())); return super.visitArrayType(arrayType); } diff --git a/test/org/jetbrains/jet/j2k/ast/ArrayTypeTest.java b/test/org/jetbrains/jet/j2k/ast/ArrayTypeTest.java new file mode 100644 index 00000000000..1666233febe --- /dev/null +++ b/test/org/jetbrains/jet/j2k/ast/ArrayTypeTest.java @@ -0,0 +1,37 @@ +package org.jetbrains.jet.j2k.ast; + +import junit.framework.Assert; +import org.jetbrains.jet.j2k.JetTestCaseBase; + +/** + * @author ignatov + */ +public class ArrayTypeTest extends JetTestCaseBase { + public void testNewStringArray() throws Exception { + Assert.assertEquals( + statementToKotlin("String[] a = new String[]{\"abc\"}"), + "var a : Array? = array(\"abc\")" + ); + } + + public void testNewIntArray() throws Exception { + Assert.assertEquals( + statementToKotlin("int[] a = new int[]{1, 2, 3}"), + "var a : IntArray? = array(1, 2, 3)" + ); + } + + public void testDoubleArray() throws Exception { + Assert.assertEquals( + statementToKotlin("double[] a = new double[]{1, 2, 3}"), + "var a : DoubleArray? = array(1, 2, 3)" + ); + } + + public void testLongArray() throws Exception { + Assert.assertEquals( + statementToKotlin("long[] a = new long[]{1, 2, 3}"), + "var a : LongArray? = array(1, 2, 3)" + ); + } +}