From 25a23abf835252f6d22e7803355a10ab57f1f8a8 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 31 Oct 2011 12:49:24 +0400 Subject: [PATCH] postfix operator added --- .../jet/j2k/ast/PostfixOperator.java | 22 +++++++++++++++++++ .../jet/j2k/visitors/ExpressionVisitor.java | 9 ++++++++ .../jet/j2k/ast/PostfixOperatorTest.java | 17 ++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 src/org/jetbrains/jet/j2k/ast/PostfixOperator.java create mode 100644 test/org/jetbrains/jet/j2k/ast/PostfixOperatorTest.java diff --git a/src/org/jetbrains/jet/j2k/ast/PostfixOperator.java b/src/org/jetbrains/jet/j2k/ast/PostfixOperator.java new file mode 100644 index 00000000000..036e2618aa3 --- /dev/null +++ b/src/org/jetbrains/jet/j2k/ast/PostfixOperator.java @@ -0,0 +1,22 @@ +package org.jetbrains.jet.j2k.ast; + +import org.jetbrains.annotations.NotNull; + +/** + * @author ignatov + */ +public class PostfixOperator extends Expression { + private final String myOp; + private final Expression myExpression; + + public PostfixOperator(String op, Expression expression) { + myOp = op; + myExpression = expression; + } + + @NotNull + @Override + public String toKotlin() { + return "(" + myExpression.toKotlin() + myOp + ")"; + } +} \ No newline at end of file diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index 14afb1ba126..ff965a000a2 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -174,6 +174,15 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor { @Override public void visitPostfixExpression(PsiPostfixExpression expression) { super.visitPostfixExpression(expression); + + String op = ""; + if (expression.getOperationSign().getTokenType() == JavaTokenType.PLUSPLUS) op = "++"; + if (expression.getOperationSign().getTokenType() == JavaTokenType.MINUSMINUS) op = "--"; + + myResult = new PostfixOperator( + op, + expressionToExpression(expression.getOperand()) + ); } @Override diff --git a/test/org/jetbrains/jet/j2k/ast/PostfixOperatorTest.java b/test/org/jetbrains/jet/j2k/ast/PostfixOperatorTest.java new file mode 100644 index 00000000000..ac81dc2f0a6 --- /dev/null +++ b/test/org/jetbrains/jet/j2k/ast/PostfixOperatorTest.java @@ -0,0 +1,17 @@ +package org.jetbrains.jet.j2k.ast; + +import junit.framework.Assert; +import org.jetbrains.jet.j2k.JetTestCaseBase; + +/** + * @author ignatov + */ +public class PostfixOperatorTest extends JetTestCaseBase { + public void testIncrement() throws Exception { + Assert.assertEquals(statementToKotlin("i++;"), "(i++)"); + } + + public void testDecrement() throws Exception { + Assert.assertEquals(statementToKotlin("i--;"), "(i--)"); + } +}