diff --git a/j2k/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt b/j2k/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt index 3fc7a3e9e90..6b925bcec26 100644 --- a/j2k/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt +++ b/j2k/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt @@ -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()), diff --git a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java index 5095b890807..6e64d30c34a 100644 --- a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java +++ b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java @@ -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") diff --git a/j2k/tests/testData/ast/foreachStatement/nullableIterable.java b/j2k/tests/testData/ast/foreachStatement/nullableIterable.java new file mode 100644 index 00000000000..dc701209181 --- /dev/null +++ b/j2k/tests/testData/ast/foreachStatement/nullableIterable.java @@ -0,0 +1,12 @@ +//file +import java.util.List; + +class A { + List list = null; + + void foo() { + for (String e : list) { + System.out.println(e); + } + } +} \ No newline at end of file diff --git a/j2k/tests/testData/ast/foreachStatement/nullableIterable.kt b/j2k/tests/testData/ast/foreachStatement/nullableIterable.kt new file mode 100644 index 00000000000..66aad977ef7 --- /dev/null +++ b/j2k/tests/testData/ast/foreachStatement/nullableIterable.kt @@ -0,0 +1,9 @@ +class A { + var list: List? = null + + fun foo() { + for (e in list!!) { + System.out.println(e) + } + } +} \ No newline at end of file