conditional expression added

This commit is contained in:
Sergey Ignatov
2011-10-31 14:26:45 +04:00
parent ec5912fe29
commit b94fb64222
3 changed files with 30 additions and 1 deletions
@@ -1,9 +1,11 @@
package org.jetbrains.jet.j2k.ast;
import org.jetbrains.annotations.NotNull;
/**
* @author ignatov
*/
public class IfStatement extends Statement {
public class IfStatement extends Expression {
private final Expression myCondition;
private final Statement myThenStatement;
private final Statement myElseStatement;
@@ -14,6 +16,7 @@ public class IfStatement extends Statement {
myElseStatement = elseStatement;
}
@NotNull
@Override
public String toKotlin() {
String result = "if" + SPACE + "(" + myCondition.toKotlin() + ")" + N + myThenStatement.toKotlin() + N;
@@ -112,6 +112,13 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor {
@Override
public void visitConditionalExpression(PsiConditionalExpression expression) {
super.visitConditionalExpression(expression);
myResult = new ParenthesizedExpression(
new IfStatement(
expressionToExpression(expression.getCondition()),
expressionToExpression(expression.getThenExpression()),
expressionToExpression(expression.getElseExpression())
)
);
}
@Override
@@ -0,0 +1,19 @@
package org.jetbrains.jet.j2k.ast;
import junit.framework.Assert;
import org.jetbrains.jet.j2k.JetTestCaseBase;
/**
* @author ignatov
*/
public class ConditionalExpressionTest extends JetTestCaseBase {
public void testSimpleConditionalExpression() throws Exception {
Assert.assertEquals(
expressionToKotlin("a.isEmpty() ? 0 : 1"),
"(if (a.isEmpty())\n" +
"0\n" +
"else\n" +
"1)"
);
}
}