diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrCallGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrCallGenerator.kt index 3e81a904844..20be721d5fa 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrCallGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrCallGenerator.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset -import org.jetbrains.kotlin.psi2ir.generators.values.IrVariableValue +import org.jetbrains.kotlin.psi2ir.generators.values.IrVariableLValue import org.jetbrains.kotlin.psi2ir.generators.values.IrValue import org.jetbrains.kotlin.psi2ir.generators.values.createRematerializableValue import org.jetbrains.kotlin.psi2ir.toExpectedType @@ -51,7 +51,7 @@ class IrCallGenerator(val irStatementGenerator: IrStatementGenerator) : IrGenera } val irTmpVar = temporaryVariableFactory.createTemporaryVariable(irExpression, nameHint) - putValue(ktExpression, IrVariableValue(irTmpVar)) + putValue(ktExpression, IrVariableLValue(irTmpVar)) return irTmpVar } @@ -63,7 +63,7 @@ class IrCallGenerator(val irStatementGenerator: IrStatementGenerator) : IrGenera } val irTmpVar = temporaryVariableFactory.createTemporaryVariable(irExpression, valueParameterDescriptor.name.asString()) - putValue(valueParameterDescriptor, IrVariableValue(irTmpVar)) + putValue(valueParameterDescriptor, IrVariableLValue(irTmpVar)) return irTmpVar } 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 148a9ce8839..a31e0f955dc 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 @@ -223,10 +223,10 @@ class IrOperatorExpressionGenerator(val irStatementGenerator: IrStatementGenerat if (descriptor.isDelegated) TODO("Delegated local variable") else - IrVariableValue(ktLeft.startOffset, ktLeft.endOffset, descriptor, irOperator) + IrVariableLValue(ktLeft.startOffset, ktLeft.endOffset, descriptor, irOperator) is PropertyDescriptor -> IrCallGenerator(irStatementGenerator).run { - IrPropertyLValueValue( + IrPropertyLValue( ktLeft, irOperator, descriptor, generateReceiver(ktLeft, resolvedCall.dispatchReceiver, descriptor.dispatchReceiverParameter), generateReceiver(ktLeft, resolvedCall.extensionReceiver, descriptor.extensionReceiverParameter), diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrStatementGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrStatementGenerator.kt index 697ac3009ff..7035f540790 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrStatementGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/IrStatementGenerator.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.psi2ir.deparenthesize -import org.jetbrains.kotlin.psi2ir.generators.values.IrVariableValue +import org.jetbrains.kotlin.psi2ir.generators.values.IrVariableLValue import org.jetbrains.kotlin.psi2ir.toExpectedType import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContextUtils @@ -78,7 +78,7 @@ class IrStatementGenerator( irBlock.addStatement(irTmpInitializer) val irCallGenerator = IrCallGenerator(this) - irCallGenerator.putValue(ktInitializer, IrVariableValue(irTmpInitializer)) + irCallGenerator.putValue(ktInitializer, IrVariableLValue(irTmpInitializer)) for ((index, ktEntry) in multiDeclaration.entries.withIndex()) { val componentResolvedCall = getOrFail(BindingContext.COMPONENT_RESOLVED_CALL, ktEntry) 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 868bcb327fc..5b9f526427b 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 @@ -76,7 +76,7 @@ class IrIndexedLValue( irBlock.addStatement(irTmp) callGenerator.putValue(indexedSetCall.resultingDescriptor.valueParameters.last(), - IrVariableValue(irTmp)) + IrVariableLValue(irTmp)) irBlock.addStatement(callGenerator.generateCall(ktArrayAccessExpression, indexedSetCall, irOperator)) @@ -120,7 +120,7 @@ class IrIndexedLValue( private fun createDesugaredBlock(call: ResolvedCall<*>, hasResult: Boolean, operator: IrOperator?): IrBlockExpressionImpl { return IrBlockExpressionImpl(ktArrayAccessExpression.startOffset, ktArrayAccessExpression.endOffset, - call.resultingDescriptor.returnType, + if (hasResult) type else call.resultingDescriptor.returnType, hasResult, operator) } diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrPropertyLValueValue.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrPropertyLValue.kt similarity index 91% rename from compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrPropertyLValueValue.kt rename to compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrPropertyLValue.kt index f7363ac3bd5..6af6e62a832 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrPropertyLValueValue.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrPropertyLValue.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.psi2ir.toExpectedType import org.jetbrains.kotlin.types.KotlinType -class IrPropertyLValueValue( +class IrPropertyLValue( val ktElement: KtElement, val irOperator: IrOperator?, val descriptor: PropertyDescriptor, @@ -37,8 +37,8 @@ class IrPropertyLValueValue( private fun IrPropertyAccessExpression.setReceivers() = apply { - dispatchReceiver = this@IrPropertyLValueValue.dispatchReceiver - extensionReceiver = this@IrPropertyLValueValue.extensionReceiver + dispatchReceiver = this@IrPropertyLValue.dispatchReceiver + extensionReceiver = this@IrPropertyLValue.extensionReceiver } override fun load(): IrExpression = diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrVariableValue.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrVariableLValue.kt similarity index 98% rename from compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrVariableValue.kt rename to compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrVariableLValue.kt index 7b0a3a0fd7f..9e74da9f69c 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrVariableValue.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/values/IrVariableLValue.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.expressions.IrSetVariableExpressionImpl import org.jetbrains.kotlin.psi2ir.toExpectedType import org.jetbrains.kotlin.types.KotlinType -class IrVariableValue( +class IrVariableLValue( val startOffset: Int, val endOffset: Int, val descriptor: VariableDescriptor, diff --git a/compiler/testData/ir/irText/incrementDecrement.txt b/compiler/testData/ir/irText/incrementDecrement.txt index b8056fdd8d3..924099536c1 100644 --- a/compiler/testData/ir/irText/incrementDecrement.txt +++ b/compiler/testData/ir/irText/incrementDecrement.txt @@ -50,32 +50,30 @@ IrFile /incrementDecrement.kt IrExpressionBody BLOCK type= hasResult=false operator=null VAR val a1: kotlin.Int - TYPE_OP operator=IMPLICIT_CAST typeOperand=kotlin.Int - BLOCK type=kotlin.Unit hasResult=true operator=PREFIX_INCR - VAR val tmp0_array: kotlin.IntArray - GET_PROPERTY .arr type=kotlin.IntArray operator=null - VAR val tmp1: kotlin.Int - CALL .inc type=kotlin.Int operator=PREFIX_INCR - $this: CALL .get type=kotlin.Int operator=PREFIX_INCR - $this: GET_VAR tmp0_array type=kotlin.IntArray operator=null - index: LITERAL Int type=kotlin.Int value='0' - CALL .set type=kotlin.Unit operator=PREFIX_INCR - $this: GET_VAR tmp0_array type=kotlin.IntArray operator=null - index: LITERAL Int type=kotlin.Int value='0' - value: GET_VAR tmp1 type=kotlin.Int operator=null - GET_VAR tmp1 type=kotlin.Int operator=null + BLOCK type=kotlin.Int hasResult=true operator=PREFIX_INCR + VAR val tmp0_array: kotlin.IntArray + GET_PROPERTY .arr type=kotlin.IntArray operator=null + VAR val tmp1: kotlin.Int + CALL .inc type=kotlin.Int operator=PREFIX_INCR + $this: CALL .get type=kotlin.Int operator=PREFIX_INCR + $this: GET_VAR tmp0_array type=kotlin.IntArray operator=null + index: LITERAL Int type=kotlin.Int value='0' + CALL .set type=kotlin.Unit operator=PREFIX_INCR + $this: GET_VAR tmp0_array type=kotlin.IntArray operator=null + index: LITERAL Int type=kotlin.Int value='0' + value: GET_VAR tmp1 type=kotlin.Int operator=null + GET_VAR tmp1 type=kotlin.Int operator=null VAR val a2: kotlin.Int - TYPE_OP operator=IMPLICIT_CAST typeOperand=kotlin.Int - BLOCK type=kotlin.Unit hasResult=true operator=PREFIX_DECR - VAR val tmp2_array: kotlin.IntArray - GET_PROPERTY .arr type=kotlin.IntArray operator=null - VAR val tmp3: kotlin.Int - CALL .dec type=kotlin.Int operator=PREFIX_DECR - $this: CALL .get type=kotlin.Int operator=PREFIX_DECR - $this: GET_VAR tmp2_array type=kotlin.IntArray operator=null - index: LITERAL Int type=kotlin.Int value='0' - CALL .set type=kotlin.Unit operator=PREFIX_DECR - $this: GET_VAR tmp2_array type=kotlin.IntArray operator=null - index: LITERAL Int type=kotlin.Int value='0' - value: GET_VAR tmp3 type=kotlin.Int operator=null - GET_VAR tmp3 type=kotlin.Int operator=null + BLOCK type=kotlin.Int hasResult=true operator=PREFIX_DECR + VAR val tmp2_array: kotlin.IntArray + GET_PROPERTY .arr type=kotlin.IntArray operator=null + VAR val tmp3: kotlin.Int + CALL .dec type=kotlin.Int operator=PREFIX_DECR + $this: CALL .get type=kotlin.Int operator=PREFIX_DECR + $this: GET_VAR tmp2_array type=kotlin.IntArray operator=null + index: LITERAL Int type=kotlin.Int value='0' + CALL .set type=kotlin.Unit operator=PREFIX_DECR + $this: GET_VAR tmp2_array type=kotlin.IntArray operator=null + index: LITERAL Int type=kotlin.Int value='0' + value: GET_VAR tmp3 type=kotlin.Int operator=null + GET_VAR tmp3 type=kotlin.Int operator=null