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.ast.*;
|
||||
|
||||
import static org.jetbrains.jet.j2k.Converter.expressionToExpression;
|
||||
import static org.jetbrains.jet.j2k.Converter.statementToStatement;
|
||||
|
||||
/**
|
||||
* @author ignatov
|
||||
*/
|
||||
@@ -61,7 +64,7 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
||||
@Override
|
||||
public void visitExpressionStatement(PsiExpressionStatement statement) {
|
||||
super.visitExpressionStatement(statement);
|
||||
myResult = Converter.expressionToExpression(statement.getExpression());
|
||||
myResult = expressionToExpression(statement.getExpression());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,9 +91,9 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
||||
public void visitIfStatement(PsiIfStatement statement) {
|
||||
super.visitIfStatement(statement);
|
||||
myResult = new IfStatement(
|
||||
Converter.expressionToExpression(statement.getCondition()),
|
||||
Converter.statementToStatement(statement.getThenBranch()),
|
||||
Converter.statementToStatement(statement.getElseBranch())
|
||||
expressionToExpression(statement.getCondition()),
|
||||
statementToStatement(statement.getThenBranch()),
|
||||
statementToStatement(statement.getElseBranch())
|
||||
);
|
||||
}
|
||||
|
||||
@@ -137,6 +140,10 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
||||
@Override
|
||||
public void visitWhileStatement(PsiWhileStatement statement) {
|
||||
super.visitWhileStatement(statement);
|
||||
myResult = new WhileStatement(
|
||||
expressionToExpression(statement.getCondition()),
|
||||
statementToStatement(statement.getBody())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -144,7 +151,7 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
||||
super.visitReturnStatement(statement);
|
||||
|
||||
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