diff --git a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt index 0badd203e8c..827a26d5aa9 100644 --- a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt +++ b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.kt @@ -107,8 +107,15 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert } public override fun visitForeachStatement(statement: PsiForeachStatement?): Unit { + val iterator = { + val iteratorExpr = getConverter().expressionToExpression(statement?.getIteratedValue()) + if (iteratorExpr.isNullable()) + BangBangExpression(iteratorExpr) + else + iteratorExpr + }() myResult = ForeachStatement(getConverter().parameterToParameter(statement?.getIterationParameter()!!), - getConverter().expressionToExpression(statement?.getIteratedValue()), + iterator, getConverter().statementToStatement(statement?.getBody())) } diff --git a/tests/testData/ast/list/file/ForEach.jav b/tests/testData/ast/list/file/ForEach.jav new file mode 100644 index 00000000000..fb9eed76e95 --- /dev/null +++ b/tests/testData/ast/list/file/ForEach.jav @@ -0,0 +1,14 @@ +import java.util.*; + +public class ForEach { + public void test() { + ArrayList xs = new ArrayList(); + List ys = new LinkedList(); + for (Object x : xs) { + ys.add(x); + } + for (Object y : ys) { + xs.add(y); + } + } +} \ No newline at end of file diff --git a/tests/testData/ast/list/file/ForEach.kt b/tests/testData/ast/list/file/ForEach.kt new file mode 100644 index 00000000000..d9bd4d64bef --- /dev/null +++ b/tests/testData/ast/list/file/ForEach.kt @@ -0,0 +1,15 @@ +import java.util.* +public open class ForEach() { +public open fun test() : Unit { +var xs : ArrayList? = ArrayList() +var ys : MutableList? = LinkedList() +for (x : Any? in xs!!) +{ +ys?.add(x) +} +for (y : Any? in ys!!) +{ +xs?.add(y) +} +} +} \ No newline at end of file