IrSourceCompilerForInline: get ownerKind without descriptor

This commit is contained in:
Mikhail Glukhikh
2020-05-26 12:01:19 +03:00
parent a631c24e8c
commit 2d842d061e
@@ -14,14 +14,15 @@ 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
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
import org.jetbrains.kotlin.incremental.components.LocationInfo
import org.jetbrains.kotlin.incremental.components.LookupLocation
import org.jetbrains.kotlin.incremental.components.Position
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrPackageFragment
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
import org.jetbrains.kotlin.ir.util.isSuspend
import org.jetbrains.kotlin.ir.util.parentAsClass
@@ -30,7 +31,6 @@ import org.jetbrains.kotlin.psi.doNotAnalyze
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.SUSPENSION_POINT_INSIDE_MONITOR
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
import org.jetbrains.kotlin.resolve.source.getPsi
import org.jetbrains.org.objectweb.asm.*
import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter
import org.jetbrains.org.objectweb.asm.commons.Method
@@ -70,7 +70,11 @@ class IrSourceCompilerForInline(
get() = codegen.context.psiSourceManager.getKtFile(codegen.irFunction.fileParent)
override val contextKind: OwnerKind
get() = OwnerKind.getMemberOwnerKind(callElement.symbol.descriptor.containingDeclaration)
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() {