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.annotations.NotNull;
|
||||||
import org.jetbrains.jet.j2k.ast.*;
|
import org.jetbrains.jet.j2k.ast.*;
|
||||||
|
|
||||||
import static org.jetbrains.jet.j2k.Converter.elementToElement;
|
import static org.jetbrains.jet.j2k.Converter.*;
|
||||||
import static org.jetbrains.jet.j2k.Converter.expressionToExpression;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ignatov
|
* @author ignatov
|
||||||
@@ -115,11 +114,6 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor {
|
|||||||
super.visitConditionalExpression(expression);
|
super.visitConditionalExpression(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void visitExpressionListStatement(PsiExpressionListStatement statement) {
|
|
||||||
super.visitExpressionListStatement(statement);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitExpressionStatement(PsiExpressionStatement statement) {
|
public void visitExpressionStatement(PsiExpressionStatement statement) {
|
||||||
super.visitExpressionStatement(statement);
|
super.visitExpressionStatement(statement);
|
||||||
@@ -128,6 +122,8 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor {
|
|||||||
@Override
|
@Override
|
||||||
public void visitExpressionList(PsiExpressionList list) {
|
public void visitExpressionList(PsiExpressionList list) {
|
||||||
super.visitExpressionList(list);
|
super.visitExpressionList(list);
|
||||||
|
myResult =
|
||||||
|
new ExpressionList(expressionsToExpressionList(list.getExpressions()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,7 +5,12 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.jet.j2k.Converter;
|
import org.jetbrains.jet.j2k.Converter;
|
||||||
import org.jetbrains.jet.j2k.ast.*;
|
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.expressionToExpression;
|
||||||
|
import static org.jetbrains.jet.j2k.Converter.expressionsToExpressionList;
|
||||||
import static org.jetbrains.jet.j2k.Converter.statementToStatement;
|
import static org.jetbrains.jet.j2k.Converter.statementToStatement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -74,11 +79,23 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
|||||||
@Override
|
@Override
|
||||||
public void visitExpressionListStatement(PsiExpressionListStatement statement) {
|
public void visitExpressionListStatement(PsiExpressionListStatement statement) {
|
||||||
super.visitExpressionListStatement(statement);
|
super.visitExpressionListStatement(statement);
|
||||||
|
myResult =
|
||||||
|
new ExpressionListStatement(expressionsToExpressionList(statement.getExpressionList().getExpressions()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitForStatement(PsiForStatement statement) {
|
public void visitForStatement(PsiForStatement statement) {
|
||||||
super.visitForStatement(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
|
@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