From b94fb64222dbcd24c35e94aee4c37b910e41f333 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 31 Oct 2011 14:26:45 +0400 Subject: [PATCH] conditional expression added --- .../jetbrains/jet/j2k/ast/IfStatement.java | 5 ++++- .../jet/j2k/visitors/ExpressionVisitor.java | 7 +++++++ .../j2k/ast/ConditionalExpressionTest.java | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/org/jetbrains/jet/j2k/ast/ConditionalExpressionTest.java diff --git a/src/org/jetbrains/jet/j2k/ast/IfStatement.java b/src/org/jetbrains/jet/j2k/ast/IfStatement.java index 5fcf3db38d4..3e45436d036 100644 --- a/src/org/jetbrains/jet/j2k/ast/IfStatement.java +++ b/src/org/jetbrains/jet/j2k/ast/IfStatement.java @@ -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; diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index aeae98e4587..41c3d03a3e3 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -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 diff --git a/test/org/jetbrains/jet/j2k/ast/ConditionalExpressionTest.java b/test/org/jetbrains/jet/j2k/ast/ConditionalExpressionTest.java new file mode 100644 index 00000000000..9bbf599949b --- /dev/null +++ b/test/org/jetbrains/jet/j2k/ast/ConditionalExpressionTest.java @@ -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)" + ); + } +} \ No newline at end of file