prefix operators supported

This commit is contained in:
Sergey Ignatov
2011-11-03 16:36:06 +04:00
parent ac3d2d6c77
commit d489a350ce
3 changed files with 46 additions and 4 deletions
@@ -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() + ")";
}
}
@@ -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
@@ -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)");
}
}