AssertStatement added
This commit is contained in:
@@ -147,7 +147,7 @@ public class Converter {
|
||||
@NotNull
|
||||
public static Expression expressionToExpression(@Nullable PsiExpression e) {
|
||||
if (e == null)
|
||||
return new EmptyExpression();
|
||||
return Expression.EMPTY_EXPRESSION;
|
||||
final ExpressionVisitor expressionVisitor = new ExpressionVisitor();
|
||||
e.accept(expressionVisitor);
|
||||
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;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author ignatov
|
||||
*/
|
||||
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
|
||||
*/
|
||||
public class ExpressionVisitor extends StatementVisitor implements Visitor {
|
||||
private Expression myResult = new EmptyExpression();
|
||||
private Expression myResult = Expression.EMPTY_EXPRESSION;
|
||||
|
||||
@NotNull
|
||||
public Expression getResult() {
|
||||
|
||||
@@ -25,6 +25,11 @@ public class StatementVisitor extends ElementVisitor implements Visitor {
|
||||
@Override
|
||||
public void visitAssertStatement(PsiAssertStatement statement) {
|
||||
super.visitAssertStatement(statement);
|
||||
|
||||
myResult = new AssertStatement(
|
||||
expressionToExpression(statement.getAssertCondition()),
|
||||
expressionToExpression(statement.getAssertDescription())
|
||||
);
|
||||
}
|
||||
|
||||
@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