diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 9c53168b336..4c117c29385 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -2956,7 +2956,7 @@ public class ExpressionCodegen extends KtVisitor impleme ? FictitiousArrayConstructor.create((ConstructorDescriptor) original) : original.getOriginal(); PsiSourceCompilerForInline sourceCompiler = new PsiSourceCompilerForInline(this, callElement, functionDescriptor); - JvmMethodSignature signature = typeMapper.mapSignatureWithGeneric(functionDescriptor, sourceCompiler.getContextKind()); + JvmMethodSignature signature = typeMapper.mapSignatureWithGeneric(functionDescriptor, sourceCompiler.getContext().getContextKind()); if (signature.getAsmMethod().getName().contains("-") && !state.getConfiguration().getBoolean(JVMConfigurationKeys.USE_OLD_INLINE_CLASSES_MANGLING_SCHEME) ) { @@ -2964,7 +2964,7 @@ public class ExpressionCodegen extends KtVisitor impleme InlineClassesCodegenUtilKt.classFileContainsMethod(functionDescriptor, state, signature.getAsmMethod()); if (classFileContainsMethod != null && !classFileContainsMethod) { typeMapper.setUseOldManglingRulesForFunctionAcceptingInlineClass(true); - signature = typeMapper.mapSignatureWithGeneric(functionDescriptor, sourceCompiler.getContextKind()); + signature = typeMapper.mapSignatureWithGeneric(functionDescriptor, sourceCompiler.getContext().getContextKind()); typeMapper.setUseOldManglingRulesForFunctionAcceptingInlineClass(false); } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt index e05df6b253c..33e2d0e581a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiInlineCodegen.kt @@ -99,7 +99,8 @@ class PsiInlineCodegen( private val hiddenParameters = mutableListOf>() override fun processHiddenParameters() { - if (getMethodAsmFlags(functionDescriptor, sourceCompiler.contextKind, state) and Opcodes.ACC_STATIC == 0) { + val contextKind = (sourceCompiler as PsiSourceCompilerForInline).context.contextKind + if (getMethodAsmFlags(functionDescriptor, contextKind, state) and Opcodes.ACC_STATIC == 0) { hiddenParameters += invocationParamBuilder.addNextParameter(methodOwner, false, actualDispatchReceiver) to codegen.frameMap.enterTemp(methodOwner) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiSourceCompilerForInline.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiSourceCompilerForInline.kt index d50b28dae6a..5be16b24416 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiSourceCompilerForInline.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/PsiSourceCompilerForInline.kt @@ -46,7 +46,7 @@ class PsiSourceCompilerForInline( private val additionalInnerClasses = mutableListOf() - private val context = getContext( + val context = getContext( functionDescriptor, functionDescriptor, codegen.state, @@ -58,9 +58,6 @@ class PsiSourceCompilerForInline( override val callsiteFile by lazy { callElement.containingFile } - override val contextKind - get () = context.contextKind - override val inlineCallSiteInfo: InlineCallSiteInfo get() { var context = codegen.getContext() @@ -226,13 +223,13 @@ class PsiSourceCompilerForInline( private fun mapDefault(): Method { // This is all available in the `Callable` passed to `PsiInlineCodegen.genCallInner`, but it's not forwarded through the inliner... - var result = state.typeMapper.mapDefaultMethod(functionDescriptor, contextKind) + var result = state.typeMapper.mapDefaultMethod(functionDescriptor, context.contextKind) if (result.name.contains("-") && !state.configuration.getBoolean(JVMConfigurationKeys.USE_OLD_INLINE_CLASSES_MANGLING_SCHEME) && classFileContainsMethod(functionDescriptor, state, result) == false ) { state.typeMapper.useOldManglingRulesForFunctionAcceptingInlineClass = true - result = state.typeMapper.mapDefaultMethod(functionDescriptor, contextKind) + result = state.typeMapper.mapDefaultMethod(functionDescriptor, context.contextKind) state.typeMapper.useOldManglingRulesForFunctionAcceptingInlineClass = false } return result diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt index f51abc496ec..c32551dd607 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.codegen.inline import com.intellij.psi.PsiFile import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.codegen.BaseExpressionCodegen -import org.jetbrains.kotlin.codegen.OwnerKind import org.jetbrains.kotlin.codegen.inline.coroutines.FOR_INLINE_SUFFIX import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.config.CommonConfigurationKeys @@ -34,8 +33,6 @@ interface SourceCompilerForInline { val callsiteFile: PsiFile? - val contextKind: OwnerKind - val inlineCallSiteInfo: InlineCallSiteInfo val sourceMapper: SourceMapper diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt index 127c60d029c..d6fe558503e 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.backend.common.ir.ir2string import org.jetbrains.kotlin.backend.jvm.ir.getKtFile import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.hasMangledReturnType import org.jetbrains.kotlin.codegen.BaseExpressionCodegen -import org.jetbrains.kotlin.codegen.OwnerKind import org.jetbrains.kotlin.codegen.inline.* import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -51,13 +50,6 @@ class IrSourceCompilerForInline( override val callsiteFile: PsiFile? get() = codegen.irFunction.fileParent.getKtFile() - override val contextKind: OwnerKind - get() = when (val parent = callElement.symbol.owner.parent) { - is IrPackageFragment -> OwnerKind.PACKAGE - is IrClass -> OwnerKind.IMPLEMENTATION - else -> throw AssertionError("Unexpected declaration container: $parent") - } - override val inlineCallSiteInfo: InlineCallSiteInfo get() { val root = generateSequence(codegen) { it.inlinedInto }.last()