diff --git a/src/org/jetbrains/jet/j2k/ast/Block.kt b/src/org/jetbrains/jet/j2k/ast/Block.kt index 41cfe8f18bc..e3dbbff9128 100644 --- a/src/org/jetbrains/jet/j2k/ast/Block.kt +++ b/src/org/jetbrains/jet/j2k/ast/Block.kt @@ -4,7 +4,7 @@ import java.util.LinkedList public open class Block(val statements: List, val notEmpty: Boolean = false): Statement() { public override fun isEmpty(): Boolean { - return !notEmpty && statements.size() == 0 + return !notEmpty && (statements.size() == 0 || statements.all { it == Statement.EMPTY_STATEMENT }) } public override fun toKotlin(): String { diff --git a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt index 827a26d5aa9..f5fe60d9e12 100644 --- a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt +++ b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt @@ -99,9 +99,13 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert else { var forStatements = ArrayList() forStatements.add(getConverter().statementToStatement(initialization)) - forStatements.add(WhileStatement(getConverter().expressionToExpression(condition), - Block(arrayList(getConverter().statementToStatement(body), - Block(arrayList(getConverter().statementToStatement(update)), false)), false))) + forStatements.add(WhileStatement( + if (condition == null) + LiteralExpression("true") + else + getConverter().expressionToExpression(condition) + , Block(arrayListOf(getConverter().statementToStatement(body), + Block(arrayListOf(getConverter().statementToStatement(update)), false)), false))) myResult = Block(forStatements, false) } } diff --git a/tests/testData/ast/for/statement/forWithNullCondition.jav b/tests/testData/ast/for/statement/forWithNullCondition.jav new file mode 100644 index 00000000000..87d923167b5 --- /dev/null +++ b/tests/testData/ast/for/statement/forWithNullCondition.jav @@ -0,0 +1 @@ +for (init(); ; update()) body(); \ No newline at end of file diff --git a/tests/testData/ast/for/statement/forWithNullCondition.kt b/tests/testData/ast/for/statement/forWithNullCondition.kt new file mode 100644 index 00000000000..cf2473e1d9a --- /dev/null +++ b/tests/testData/ast/for/statement/forWithNullCondition.kt @@ -0,0 +1,10 @@ +{ +init() +while (true) +{ +body() +{ +update() +} +} +} \ No newline at end of file diff --git a/tests/testData/ast/for/statement/forWithNullInit.jav b/tests/testData/ast/for/statement/forWithNullInit.jav new file mode 100644 index 00000000000..424f82d59ac --- /dev/null +++ b/tests/testData/ast/for/statement/forWithNullInit.jav @@ -0,0 +1 @@ +for (; condition() ; update()) body(); \ No newline at end of file diff --git a/tests/testData/ast/for/statement/forWithNullInit.kt b/tests/testData/ast/for/statement/forWithNullInit.kt new file mode 100644 index 00000000000..f0216b02c94 --- /dev/null +++ b/tests/testData/ast/for/statement/forWithNullInit.kt @@ -0,0 +1,9 @@ +{ +while (condition()) +{ +body() +{ +update() +} +} +} \ No newline at end of file diff --git a/tests/testData/ast/for/statement/forWithNullUpdate.jav b/tests/testData/ast/for/statement/forWithNullUpdate.jav new file mode 100644 index 00000000000..3a7372eaf0d --- /dev/null +++ b/tests/testData/ast/for/statement/forWithNullUpdate.jav @@ -0,0 +1 @@ +for (init(); condition(); ) body(); \ No newline at end of file diff --git a/tests/testData/ast/for/statement/forWithNullUpdate.kt b/tests/testData/ast/for/statement/forWithNullUpdate.kt new file mode 100644 index 00000000000..b683704827b --- /dev/null +++ b/tests/testData/ast/for/statement/forWithNullUpdate.kt @@ -0,0 +1,7 @@ +{ +init() +while (condition()) +{ +body() +} +} \ No newline at end of file