AssertStatement added
This commit is contained in:
@@ -147,7 +147,7 @@ public class Converter {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public static Expression expressionToExpression(@Nullable PsiExpression e) {
|
public static Expression expressionToExpression(@Nullable PsiExpression e) {
|
||||||
if (e == null)
|
if (e == null)
|
||||||
return new EmptyExpression();
|
return Expression.EMPTY_EXPRESSION;
|
||||||
final ExpressionVisitor expressionVisitor = new ExpressionVisitor();
|
final ExpressionVisitor expressionVisitor = new ExpressionVisitor();
|
||||||
e.accept(expressionVisitor);
|
e.accept(expressionVisitor);
|
||||||
System.out.println(e.getClass());
|
System.out.println(e.getClass());
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package org.jetbrains.jet.j2k.ast;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ignatov
|
||||||
|
*/
|
||||||
|
public class AssertStatement extends Statement {
|
||||||
|
private final Expression myCondition;
|
||||||
|
private final Expression myDetail;
|
||||||
|
|
||||||
|
public AssertStatement(Expression condition, Expression detail) {
|
||||||
|
myCondition = condition;
|
||||||
|
myDetail = detail;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public String toKotlin() {
|
||||||
|
String detail = myDetail != Expression.EMPTY_EXPRESSION ? "(" + myDetail.toKotlin() + ")" : EMPTY;
|
||||||
|
return "assert" + detail + SPACE + "{" + myCondition.toKotlin() + "}";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package org.jetbrains.jet.j2k.ast;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author ignatov
|
|
||||||
*/
|
|
||||||
public class EmptyExpression extends Expression {
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public String toKotlin() {
|
|
||||||
return EMPTY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,21 @@
|
|||||||
package org.jetbrains.jet.j2k.ast;
|
package org.jetbrains.jet.j2k.ast;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ignatov
|
* @author ignatov
|
||||||
*/
|
*/
|
||||||
public abstract class Expression extends Statement {
|
public abstract class Expression extends Statement {
|
||||||
|
public static final Expression EMPTY_EXPRESSION = new EmptyExpression();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ignatov
|
||||||
|
*/
|
||||||
|
private static class EmptyExpression extends Expression {
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public String toKotlin() {
|
||||||
|
return EMPTY;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import static org.jetbrains.jet.j2k.Converter.*;
|
|||||||
* @author ignatov
|
* @author ignatov
|
||||||
*/
|
*/
|
||||||
public class ExpressionVisitor extends StatementVisitor implements Visitor {
|
public class ExpressionVisitor extends StatementVisitor implements Visitor {
|
||||||
private Expression myResult = new EmptyExpression();
|
private Expression myResult = Expression.EMPTY_EXPRESSION;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Expression getResult() {
|
public Expression getResult() {
|
||||||
|
|||||||
@@ -25,6 +25,11 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
|||||||
@Override
|
@Override
|
||||||
public void visitAssertStatement(PsiAssertStatement statement) {
|
public void visitAssertStatement(PsiAssertStatement statement) {
|
||||||
super.visitAssertStatement(statement);
|
super.visitAssertStatement(statement);
|
||||||
|
|
||||||
|
myResult = new AssertStatement(
|
||||||
|
expressionToExpression(statement.getAssertCondition()),
|
||||||
|
expressionToExpression(statement.getAssertDescription())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.jetbrains.jet.j2k.ast;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
import org.jetbrains.jet.j2k.JetTestCaseBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ignatov
|
||||||
|
*/
|
||||||
|
public class AssertStatementTest extends JetTestCaseBase {
|
||||||
|
public void testOnlyCondition() throws Exception {
|
||||||
|
Assert.assertEquals(
|
||||||
|
statementToKotlin("assert boolMethod();"),
|
||||||
|
"assert {boolMethod()}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOnlyConditionWithBraces() throws Exception {
|
||||||
|
Assert.assertEquals(
|
||||||
|
statementToKotlin("assert(boolMethod());"),
|
||||||
|
"assert {(boolMethod())}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testWithStringDetail() throws Exception {
|
||||||
|
Assert.assertEquals(
|
||||||
|
statementToKotlin("assert true : \"string details\";"),
|
||||||
|
"assert(\"string details\") {true}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user