From e805b22325113d783f8ec485596a8e64534030d6 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 31 Oct 2011 18:15:26 +0400 Subject: [PATCH] ArrayAccessExpression added --- .../jet/j2k/ast/ArrayAccessExpression.java | 22 +++++++++++++++++++ .../jet/j2k/visitors/ExpressionVisitor.java | 4 ++++ .../j2k/ast/ArrayAccessExpressionTest.java | 21 ++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 src/org/jetbrains/jet/j2k/ast/ArrayAccessExpression.java create mode 100644 test/org/jetbrains/jet/j2k/ast/ArrayAccessExpressionTest.java diff --git a/src/org/jetbrains/jet/j2k/ast/ArrayAccessExpression.java b/src/org/jetbrains/jet/j2k/ast/ArrayAccessExpression.java new file mode 100644 index 00000000000..4a511b713b9 --- /dev/null +++ b/src/org/jetbrains/jet/j2k/ast/ArrayAccessExpression.java @@ -0,0 +1,22 @@ +package org.jetbrains.jet.j2k.ast; + +import org.jetbrains.annotations.NotNull; + +/** + * @author ignatov + */ +public class ArrayAccessExpression extends Expression { + private final Expression myExpression; + private final Expression myIndex; + + public ArrayAccessExpression(Expression expression, Expression index) { + myExpression = expression; + myIndex = index; + } + + @NotNull + @Override + public String toKotlin() { + return myExpression.toKotlin() + "[" + myIndex.toKotlin() + "]"; + } +} diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index 241dded360a..5053ba41808 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -23,6 +23,10 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor { @Override public void visitArrayAccessExpression(PsiArrayAccessExpression expression) { super.visitArrayAccessExpression(expression); + myResult = new ArrayAccessExpression( + expressionToExpression(expression.getArrayExpression()), + expressionToExpression(expression.getIndexExpression()) + ); } @Override diff --git a/test/org/jetbrains/jet/j2k/ast/ArrayAccessExpressionTest.java b/test/org/jetbrains/jet/j2k/ast/ArrayAccessExpressionTest.java new file mode 100644 index 00000000000..f6e47a68dd9 --- /dev/null +++ b/test/org/jetbrains/jet/j2k/ast/ArrayAccessExpressionTest.java @@ -0,0 +1,21 @@ +package org.jetbrains.jet.j2k.ast; + +import junit.framework.Assert; +import org.jetbrains.jet.j2k.JetTestCaseBase; + +/** + * @author ignatov + */ +public class ArrayAccessExpressionTest extends JetTestCaseBase { + public void testIntIndex() throws Exception { + Assert.assertEquals(expressionToSingleLineKotlin("myArray[10]"), "myArray[10]"); + } + + public void testVariableIndex() throws Exception { + Assert.assertEquals(expressionToSingleLineKotlin("myArray[i]"), "myArray[i]"); + } + + public void testExpressionIndex() throws Exception { + Assert.assertEquals(expressionToSingleLineKotlin("myArray[myLibrary.calculateIndex(100)]"), "myArray[myLibrary.calculateIndex(100)]"); + } +}