don't generate !! for array access in assignment lvalue
This commit is contained in:
committed by
Pavel V. Talanov
parent
47293918fc
commit
1bf84a8187
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user