for supported
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package org.jetbrains.jet.j2k.ast;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.j2k.util.AstUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ignatov
|
||||
*/
|
||||
public class ExpressionListStatement extends Expression {
|
||||
private List<Expression> myExpressions;
|
||||
|
||||
public ExpressionListStatement(List<Expression> expressions) {
|
||||
myExpressions = expressions;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String toKotlin() {
|
||||
return AstUtil.joinNodes(myExpressions, N);
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,7 @@ import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.j2k.ast.*;
|
||||
|
||||
import static org.jetbrains.jet.j2k.Converter.elementToElement;
|
||||
import static org.jetbrains.jet.j2k.Converter.expressionToExpression;
|
||||
import static org.jetbrains.jet.j2k.Converter.*;
|
||||
|
||||
/**
|
||||
* @author ignatov
|
||||
@@ -115,11 +114,6 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor {
|
||||
super.visitConditionalExpression(expression);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitExpressionListStatement(PsiExpressionListStatement statement) {
|
||||
super.visitExpressionListStatement(statement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitExpressionStatement(PsiExpressionStatement statement) {
|
||||
super.visitExpressionStatement(statement);
|
||||
@@ -128,6 +122,8 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor {
|
||||
@Override
|
||||
public void visitExpressionList(PsiExpressionList list) {
|
||||
super.visitExpressionList(list);
|
||||
myResult =
|
||||
new ExpressionList(expressionsToExpressionList(list.getExpressions()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,7 +5,12 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.j2k.Converter;
|
||||
import org.jetbrains.jet.j2k.ast.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.jet.j2k.Converter.expressionToExpression;
|
||||
import static org.jetbrains.jet.j2k.Converter.expressionsToExpressionList;
|
||||
import static org.jetbrains.jet.j2k.Converter.statementToStatement;
|
||||
|
||||
/**
|
||||
@@ -74,11 +79,23 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
||||
@Override
|
||||
public void visitExpressionListStatement(PsiExpressionListStatement statement) {
|
||||
super.visitExpressionListStatement(statement);
|
||||
myResult =
|
||||
new ExpressionListStatement(expressionsToExpressionList(statement.getExpressionList().getExpressions()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitForStatement(PsiForStatement statement) {
|
||||
super.visitForStatement(statement);
|
||||
|
||||
List<Statement> forStatements = new LinkedList<Statement>();
|
||||
forStatements.add(statementToStatement(statement.getInitialization()));
|
||||
forStatements.add(new WhileStatement(
|
||||
expressionToExpression(statement.getCondition()),
|
||||
new Block(
|
||||
Arrays.asList(statementToStatement(statement.getBody()),
|
||||
new Block(Arrays.asList(statementToStatement(statement.getUpdate())))))));
|
||||
myResult = new Block(forStatements);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
package org.jetbrains.jet.j2k.ast;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import org.jetbrains.jet.j2k.JetTestCaseBase;
|
||||
|
||||
/**
|
||||
* @author ignatov
|
||||
*/
|
||||
public class ForTest extends JetTestCaseBase {
|
||||
public void testCommonCaseForTest() throws Exception {
|
||||
Assert.assertEquals(
|
||||
statementToKotlin("for (init(); condition(); update()) body();"),
|
||||
"{\n" +
|
||||
"init()\n" +
|
||||
"while (condition())\n" +
|
||||
"{\n" +
|
||||
"body()\n" +
|
||||
"{\n" +
|
||||
"update()\n" +
|
||||
"}\n" +
|
||||
"}\n" +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
|
||||
public void testForWithEmptyBlock() throws Exception {
|
||||
Assert.assertEquals(
|
||||
statementToKotlin("for (int i = 0; i < 0; j++, i++) {}"),
|
||||
"{\n" +
|
||||
"var i : Int = 0\n" +
|
||||
"while ((i < 0))\n" +
|
||||
"{\n" +
|
||||
"{\n" +
|
||||
"}\n" +
|
||||
"{\n" +
|
||||
"(j++)\n" +
|
||||
"(i++)\n" +
|
||||
"}\n" +
|
||||
"}\n" +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
|
||||
public void testForWithBlock() throws Exception {
|
||||
Assert.assertEquals(
|
||||
statementToKotlin("for (int i = 0; i < 0; i++) {int i = 1; i++;}"),
|
||||
"{\n" +
|
||||
"var i : Int = 0\n" +
|
||||
"while ((i < 0))\n" +
|
||||
"{\n" +
|
||||
"{\n" +
|
||||
"var i : Int = 1\n" +
|
||||
"(i++)\n" +
|
||||
"}\n" +
|
||||
"{\n" +
|
||||
"(i++)\n" +
|
||||
"}\n" +
|
||||
"}\n" +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
|
||||
public void testForWithBlockAndDoubleUpdate() throws Exception {
|
||||
Assert.assertEquals(
|
||||
statementToKotlin("for (int i = 0; i < 0; j++, i++) {int i = 1; i++;}"),
|
||||
"{\n" +
|
||||
"var i : Int = 0\n" +
|
||||
"while ((i < 0))\n" +
|
||||
"{\n" +
|
||||
"{\n" +
|
||||
"var i : Int = 1\n" +
|
||||
"(i++)\n" +
|
||||
"}\n" +
|
||||
"{\n" +
|
||||
"(j++)\n" +
|
||||
"(i++)\n" +
|
||||
"}\n" +
|
||||
"}\n" +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
|
||||
public void testForWithReturn() throws Exception {
|
||||
Assert.assertEquals(
|
||||
statementToKotlin("for (int i = 0; i < 0; j++, i++) return i;"),
|
||||
"{\n" +
|
||||
"var i : Int = 0\n" +
|
||||
"while ((i < 0))\n" +
|
||||
"{\n" +
|
||||
"return i\n" +
|
||||
"{\n" +
|
||||
"(j++)\n" +
|
||||
"(i++)\n" +
|
||||
"}\n" +
|
||||
"}\n" +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
|
||||
public void testForWithExpression() throws Exception {
|
||||
Assert.assertEquals(
|
||||
statementToKotlin("for (int i = 0; i < 0; i++) t++;"),
|
||||
"{\n" +
|
||||
"var i : Int = 0\n" +
|
||||
"while ((i < 0))\n" +
|
||||
"{\n" +
|
||||
"(t++)\n" +
|
||||
"{\n" +
|
||||
"(i++)\n" +
|
||||
"}\n" +
|
||||
"}\n" +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user