prefix operators supported
This commit is contained in:
@@ -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.PLUSPLUS) op = "++";
|
||||||
if (expression.getOperationSign().getTokenType() == JavaTokenType.MINUSMINUS) op = "--";
|
if (expression.getOperationSign().getTokenType() == JavaTokenType.MINUSMINUS) op = "--";
|
||||||
|
|
||||||
myResult = new PostfixOperator(
|
myResult = new PostfixOperator(op, expressionToExpression(expression.getOperand()));
|
||||||
op,
|
|
||||||
expressionToExpression(expression.getOperand())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitPrefixExpression(PsiPrefixExpression expression) {
|
public void visitPrefixExpression(PsiPrefixExpression expression) {
|
||||||
super.visitPrefixExpression(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
|
@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)");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user