WhileStatement added
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
package org.jetbrains.jet.j2k.ast;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ignatov
|
||||||
|
*/
|
||||||
|
public class WhileStatement extends Statement {
|
||||||
|
final Expression myCondition;
|
||||||
|
final Statement myStatement;
|
||||||
|
|
||||||
|
public WhileStatement(Expression condition, Statement statement) {
|
||||||
|
myCondition = condition;
|
||||||
|
myStatement = statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public String toKotlin() {
|
||||||
|
return "while" + SPACE + "(" + myCondition.toKotlin() + ")" + N +
|
||||||
|
myStatement.toKotlin();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,9 @@ 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 static org.jetbrains.jet.j2k.Converter.expressionToExpression;
|
||||||
|
import static org.jetbrains.jet.j2k.Converter.statementToStatement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ignatov
|
* @author ignatov
|
||||||
*/
|
*/
|
||||||
@@ -61,7 +64,7 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
|||||||
@Override
|
@Override
|
||||||
public void visitExpressionStatement(PsiExpressionStatement statement) {
|
public void visitExpressionStatement(PsiExpressionStatement statement) {
|
||||||
super.visitExpressionStatement(statement);
|
super.visitExpressionStatement(statement);
|
||||||
myResult = Converter.expressionToExpression(statement.getExpression());
|
myResult = expressionToExpression(statement.getExpression());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -88,9 +91,9 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
|||||||
public void visitIfStatement(PsiIfStatement statement) {
|
public void visitIfStatement(PsiIfStatement statement) {
|
||||||
super.visitIfStatement(statement);
|
super.visitIfStatement(statement);
|
||||||
myResult = new IfStatement(
|
myResult = new IfStatement(
|
||||||
Converter.expressionToExpression(statement.getCondition()),
|
expressionToExpression(statement.getCondition()),
|
||||||
Converter.statementToStatement(statement.getThenBranch()),
|
statementToStatement(statement.getThenBranch()),
|
||||||
Converter.statementToStatement(statement.getElseBranch())
|
statementToStatement(statement.getElseBranch())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,6 +140,10 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
|||||||
@Override
|
@Override
|
||||||
public void visitWhileStatement(PsiWhileStatement statement) {
|
public void visitWhileStatement(PsiWhileStatement statement) {
|
||||||
super.visitWhileStatement(statement);
|
super.visitWhileStatement(statement);
|
||||||
|
myResult = new WhileStatement(
|
||||||
|
expressionToExpression(statement.getCondition()),
|
||||||
|
statementToStatement(statement.getBody())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -144,7 +151,7 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
|||||||
super.visitReturnStatement(statement);
|
super.visitReturnStatement(statement);
|
||||||
|
|
||||||
myResult = new ReturnStatement(
|
myResult = new ReturnStatement(
|
||||||
Converter.expressionToExpression(statement.getReturnValue())
|
expressionToExpression(statement.getReturnValue())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package org.jetbrains.jet.j2k.ast;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
import org.jetbrains.jet.j2k.JetTestCaseBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ignatov
|
||||||
|
*/
|
||||||
|
public class WhileStatementTest extends JetTestCaseBase {
|
||||||
|
public void testWhileWithEmptyBlock() throws Exception {
|
||||||
|
Assert.assertEquals(
|
||||||
|
statementToKotlin("while (true) {}"),
|
||||||
|
"while (true)\n{\n}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testWhileWithBlock() throws Exception {
|
||||||
|
Assert.assertEquals(
|
||||||
|
statementToKotlin("while (a > b) {int i = 1; i = i + 1;}"),
|
||||||
|
"while ((a > b))\n" +
|
||||||
|
"{\n" +
|
||||||
|
"var i : Int = 1\n" +
|
||||||
|
"i = (i + 1)\n" +
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testWhileWithReturn() throws Exception {
|
||||||
|
Assert.assertEquals(
|
||||||
|
statementToKotlin("while (true) return 1;"),
|
||||||
|
"while (true)\nreturn 1"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testWhileWithExpression() throws Exception {
|
||||||
|
Assert.assertEquals(
|
||||||
|
statementToKotlin("while (true) i = i + 1;"),
|
||||||
|
"while (true)\ni = (i + 1)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user