AssertStatement added

This commit is contained in:
Sergey Ignatov
2011-10-31 16:44:21 +04:00
parent 6dd7edd768
commit 8491901307
7 changed files with 74 additions and 16 deletions
+1 -1
View File
@@ -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}"
);
}
}