Java to Kotlin converter: fixed exception on conversion

This commit is contained in:
Valentin Kipyatkov
2014-06-27 18:29:37 +04:00
parent 13f40e5b0d
commit 3c42933f96
4 changed files with 28 additions and 7 deletions
@@ -176,13 +176,8 @@ open class StatementVisitor(public val converter: Converter) : JavaElementVisito
}
override fun visitForeachStatement(statement: PsiForeachStatement) {
val iterator = run {
val iteratorExpr = converter.convertExpression(statement.getIteratedValue())
if (iteratorExpr.isNullable)
BangBangExpression(iteratorExpr)
else
iteratorExpr
}
val iteratorExpr = converter.convertExpression(statement.getIteratedValue())
val iterator = if (iteratorExpr.isNullable) BangBangExpression(iteratorExpr).assignNoPrototype() else iteratorExpr
result = ForeachStatement(converter.convertParameter(statement.getIterationParameter()),
iterator,
convertStatementOrBlock(statement.getBody()),
@@ -1300,6 +1300,11 @@ public class JavaToKotlinConverterTestGenerated extends AbstractJavaToKotlinConv
doTest("j2k/tests/testData/ast/foreachStatement/enhancedForWithReturn.java");
}
@TestMetadata("nullableIterable.java")
public void testNullableIterable() throws Exception {
doTest("j2k/tests/testData/ast/foreachStatement/nullableIterable.java");
}
}
@TestMetadata("j2k/tests/testData/ast/formatting")
@@ -0,0 +1,12 @@
//file
import java.util.List;
class A {
List<String> list = null;
void foo() {
for (String e : list) {
System.out.println(e);
}
}
}
@@ -0,0 +1,9 @@
class A {
var list: List<String>? = null
fun foo() {
for (e in list!!) {
System.out.println(e)
}
}
}