From d489a350ce9129484eeef61cbe1ee15d33ebdbfd Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Thu, 3 Nov 2011 16:36:06 +0400 Subject: [PATCH] prefix operators supported --- .../jetbrains/jet/j2k/ast/PrefixOperator.java | 22 +++++++++++++++++++ .../jet/j2k/visitors/ExpressionVisitor.java | 11 ++++++---- .../jet/j2k/ast/PrefixOperatorTest.java | 17 ++++++++++++++ 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 src/org/jetbrains/jet/j2k/ast/PrefixOperator.java create mode 100644 test/org/jetbrains/jet/j2k/ast/PrefixOperatorTest.java diff --git a/src/org/jetbrains/jet/j2k/ast/PrefixOperator.java b/src/org/jetbrains/jet/j2k/ast/PrefixOperator.java new file mode 100644 index 00000000000..c94da13002f --- /dev/null +++ b/src/org/jetbrains/jet/j2k/ast/PrefixOperator.java @@ -0,0 +1,22 @@ +package org.jetbrains.jet.j2k.ast; + +import org.jetbrains.annotations.NotNull; + +/** + * @author ignatov + */ +public class PrefixOperator extends Expression { + private final String myOp; + private final Expression myExpression; + + public PrefixOperator(String op, Expression expression) { + myOp = op; + myExpression = expression; + } + + @NotNull + @Override + public String toKotlin() { + return "(" + myOp + myExpression.toKotlin() + ")"; + } +} \ 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 13fc4e8a84c..cdd7b86256c 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -205,15 +205,18 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor { if (expression.getOperationSign().getTokenType() == JavaTokenType.PLUSPLUS) op = "++"; if (expression.getOperationSign().getTokenType() == JavaTokenType.MINUSMINUS) op = "--"; - myResult = new PostfixOperator( - op, - expressionToExpression(expression.getOperand()) - ); + myResult = new PostfixOperator(op, expressionToExpression(expression.getOperand())); } @Override public void visitPrefixExpression(PsiPrefixExpression expression) { super.visitPrefixExpression(expression); + + String op = ""; + if (expression.getOperationSign().getTokenType() == JavaTokenType.PLUSPLUS) op = "++"; + if (expression.getOperationSign().getTokenType() == JavaTokenType.MINUSMINUS) op = "--"; + + myResult = new PrefixOperator(op, expressionToExpression(expression.getOperand())); } @Override diff --git a/test/org/jetbrains/jet/j2k/ast/PrefixOperatorTest.java b/test/org/jetbrains/jet/j2k/ast/PrefixOperatorTest.java new file mode 100644 index 00000000000..27f312f2fe4 --- /dev/null +++ b/test/org/jetbrains/jet/j2k/ast/PrefixOperatorTest.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 PrefixOperatorTest extends JetTestCaseBase { + public void testIncrement() throws Exception { + Assert.assertEquals(statementToKotlin("++i;"), "(++i)"); + } + + public void testDecrement() throws Exception { + Assert.assertEquals(statementToKotlin("--i;"), "(--i)"); + } +}