From 25a66916a6ded4c96b9bc245cb5c9bd82e502441 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 17 May 2018 17:14:33 +0300 Subject: [PATCH] IrTypes: minor: pass generator context where required --- .../src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt | 2 +- .../psi2ir/intermediate/ArrayAccessAssignmentReceiver.kt | 4 ++-- .../jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt | 4 ++-- .../kotlin/psi2ir/intermediate/RematerializableValue.kt | 4 +++- .../jetbrains/kotlin/psi2ir/intermediate/SafeCallReceiver.kt | 2 +- .../psi2ir/intermediate/SafeExtensionInvokeCallReceiver.kt | 2 +- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt index 2a79a36b326..9780d59494f 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt @@ -57,7 +57,7 @@ class Psi2IrTranslator(val configuration: Psi2IrConfiguration = Psi2IrConfigurat } private fun postprocess(context: GeneratorContext, irElement: IrElement) { - insertImplicitCasts(context.builtIns, irElement, context.symbolTable) + insertImplicitCasts(irElement, context) generateAnnotationsForDeclarations(context, irElement) postprocessingSteps.forEach { it.postprocess(context, irElement) } diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/ArrayAccessAssignmentReceiver.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/ArrayAccessAssignmentReceiver.kt index ab8130f7b0f..c6f2b007e41 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/ArrayAccessAssignmentReceiver.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/ArrayAccessAssignmentReceiver.kt @@ -46,10 +46,10 @@ class ArrayAccessAssignmentReceiver( val irResultType = callGenerator.translateType(resultType) val irBlock = IrBlockImpl(startOffset, endOffset, irResultType, origin) - val irArrayValue = callGenerator.scope.createTemporaryVariableInBlock(irArray, irBlock, "array") + val irArrayValue = callGenerator.scope.createTemporaryVariableInBlock(callGenerator.context, irArray, irBlock, "array") val irIndexValues = irIndices.mapIndexed { i, irIndex -> - callGenerator.scope.createTemporaryVariableInBlock(irIndex, irBlock, "index$i") + callGenerator.scope.createTemporaryVariableInBlock(callGenerator.context, irIndex, irBlock, "index$i") } indexedGetCall?.fillArrayAndIndexArguments(irArrayValue, irIndexValues) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt index 82c24c239b1..9f6aac3c79c 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt @@ -43,12 +43,12 @@ abstract class PropertyLValueBase( val dispatchReceiverVariable2 = dispatchReceiverValue?.let { scope.createTemporaryVariable(dispatchReceiverValue.load(), "this") } - val dispatchReceiverValue2 = dispatchReceiverVariable2?.let { VariableLValue(it) } + val dispatchReceiverValue2 = dispatchReceiverVariable2?.let { VariableLValue(context, it) } val extensionReceiverVariable2 = extensionReceiverValue?.let { scope.createTemporaryVariable(extensionReceiverValue.load(), "receiver") } - val extensionReceiverValue2 = extensionReceiverVariable2?.let { VariableLValue(it) } + val extensionReceiverValue2 = extensionReceiverVariable2?.let { VariableLValue(context, it) } val irResultExpression = withLValue(withReceiver(dispatchReceiverValue2, extensionReceiverValue2)) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/RematerializableValue.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/RematerializableValue.kt index ee8ad6bd476..bb905a49d88 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/RematerializableValue.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/RematerializableValue.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.psi2ir.intermediate +import org.jetbrains.kotlin.ir.builders.IrGeneratorContext import org.jetbrains.kotlin.ir.builders.Scope import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrExpressionWithCopy @@ -31,11 +32,12 @@ class RematerializableValue(val irExpression: IrExpressionWithCopy) : Intermedia } fun Scope.createTemporaryVariableInBlock( + context: IrGeneratorContext, irExpression: IrExpression, block: IrContainerExpressionBase, nameHint: String? = null ): IntermediateValue { val temporaryVariable = createTemporaryVariable(irExpression, nameHint) block.statements.add(temporaryVariable) - return VariableLValue(temporaryVariable) + return VariableLValue(context, temporaryVariable) } \ No newline at end of file diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeCallReceiver.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeCallReceiver.kt index 5869b1ee29b..0fbf150a273 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeCallReceiver.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeCallReceiver.kt @@ -38,7 +38,7 @@ class SafeCallReceiver( override fun call(withDispatchAndExtensionReceivers: (IntermediateValue?, IntermediateValue?) -> IrExpression): IrExpression { val irTmp = generator.scope.createTemporaryVariable(extensionReceiver?.load() ?: dispatchReceiver!!.load(), "safe_receiver") - val safeReceiverValue = VariableLValue(irTmp) + val safeReceiverValue = VariableLValue(generator.context, irTmp) val dispatchReceiverValue: IntermediateValue? val extensionReceiverValue: IntermediateValue? diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeExtensionInvokeCallReceiver.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeExtensionInvokeCallReceiver.kt index 93817469079..a2bcd14afb9 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeExtensionInvokeCallReceiver.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/SafeExtensionInvokeCallReceiver.kt @@ -42,7 +42,7 @@ class SafeExtensionInvokeCallReceiver( val irTmp = generator.scope.createTemporaryVariable(extensionInvokeReceiver.load(), "safe_receiver") - val safeReceiverValue = VariableLValue(irTmp) + val safeReceiverValue = VariableLValue(generator.context, irTmp) // Patch call and generate it assert(callBuilder.irValueArgumentsByIndex[0] == null) {