diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrOperatorExpressionGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrOperatorExpressionGenerator.kt index b3e2194eaea..3627f50900b 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrOperatorExpressionGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrOperatorExpressionGenerator.kt @@ -90,14 +90,12 @@ class IrOperatorExpressionGenerator(val irStatementGenerator: IrStatementGenerat private fun generateLValue(ktLeft: KtExpression, irOperator: IrOperator?): IrLValue { if (ktLeft is KtArrayAccessExpression) { - val irArrayValue = IrSingleExpressionValue(irStatementGenerator.generateExpression(ktLeft.arrayExpression!!)) - val indexExpressions = ktLeft.indexExpressions.map { - it to IrSingleExpressionValue(irStatementGenerator.generateExpression(it)) - } + val irArrayValue = irStatementGenerator.generateExpression(ktLeft.arrayExpression!!) + val indexExpressions = ktLeft.indexExpressions.map { it to irStatementGenerator.generateExpression(it) } val indexedGetCall = get(BindingContext.INDEXED_LVALUE_GET, ktLeft) val indexedSetCall = get(BindingContext.INDEXED_LVALUE_SET, ktLeft) return IrIndexedLValue(irStatementGenerator, ktLeft, irOperator, - irArrayValue, indexExpressions, indexedGetCall, indexedSetCall) + irArrayValue, indexExpressions, indexedGetCall, indexedSetCall) } val resolvedCall = getResolvedCall(ktLeft) ?: TODO("no resolved call for LHS") diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrIndexedLValue.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrIndexedLValue.kt index 2caab1a39f1..959d6392259 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrIndexedLValue.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrIndexedLValue.kt @@ -32,8 +32,8 @@ class IrIndexedLValue( var irStatementGenerator: IrStatementGenerator, val ktArrayAccessExpression: KtArrayAccessExpression, val irOperator: IrOperator?, - val arrayValue: IrValue, - val indexValues: List>, + val irArray: IrExpression, + val indexValues: List>, val indexedGetCall: ResolvedCall<*>?, val indexedSetCall: ResolvedCall<*>? ) : IrLValueWithAugmentedStore { @@ -98,11 +98,11 @@ class IrIndexedLValue( } private fun defineContextVariables(irBlock: IrBlockExpression, callGenerator: IrCallGenerator) { - irBlock.addStatement(callGenerator.createTemporary(ktArrayAccessExpression.arrayExpression!!, arrayValue.load(), "array")) + irBlock.addStatement(callGenerator.createTemporary(ktArrayAccessExpression.arrayExpression!!, irArray, "array")) var index = 0 for ((ktIndexExpression, irIndexValue) in indexValues) { - irBlock.addStatement(callGenerator.createTemporary(ktIndexExpression, irIndexValue.load(), "index${index++}")) + irBlock.addStatement(callGenerator.createTemporary(ktIndexExpression, irIndexValue, "index${index++}")) } } } \ No newline at end of file