don't generate !! for array access in assignment lvalue

This commit is contained in:
Dmitry Jemerov
2012-06-01 19:07:09 +02:00
committed by Pavel V. Talanov
parent 47293918fc
commit 1bf84a8187
5 changed files with 9 additions and 6 deletions
+2 -2
View File
@@ -2,9 +2,9 @@ package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
public open class ArrayAccessExpression(val expression : Expression, val index : Expression) : Expression() {
public open class ArrayAccessExpression(val expression: Expression, val index: Expression, val lvalue: Boolean) : Expression() {
override fun toKotlin() = expression.toKotlin() +
(if (expression.isNullable()) "!!" else "") +
(if (!lvalue && expression.isNullable()) "!!" else "") +
"[" + index.toKotlin() + "]"
}
@@ -24,8 +24,11 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv
}
public override fun visitArrayAccessExpression(expression: PsiArrayAccessExpression?): Unit {
val assignment = PsiTreeUtil.getParentOfType(expression, javaClass<PsiAssignmentExpression>())
val lvalue = assignment != null && expression == assignment.getLExpression();
myResult = ArrayAccessExpression(getConverter().expressionToExpression(expression?.getArrayExpression()),
getConverter().expressionToExpression(expression?.getIndexExpression()))
getConverter().expressionToExpression(expression?.getIndexExpression()),
lvalue)
}
public override fun visitArrayInitializerExpression(expression: PsiArrayInitializerExpression?): Unit {
@@ -1,4 +1,4 @@
var array : IntArray? = IntArray(10)
for (i in 0..10) {
array!![i] = i
array[i] = i
}
@@ -1,4 +1,4 @@
var array : IntArray? = IntArray(10)
for (i in 0..10 - 1) {
array!![i] = i
array[i] = i
}
@@ -1,4 +1,4 @@
var array : IntArray? = IntArray(10)
for (i in 0..10 - 1) {
array!![i] = i
array[i] = i
}