[IR] Replaced K/N findPackage with common getPackageFragment
This commit is contained in:
@@ -250,7 +250,7 @@ abstract class Symbols<out T : CommonBackendContext>(
|
|||||||
symbol is IrSimpleFunctionSymbol && symbol.owner.let { function ->
|
symbol is IrSimpleFunctionSymbol && symbol.owner.let { function ->
|
||||||
function.name.asString() == "<get-isInitialized>" &&
|
function.name.asString() == "<get-isInitialized>" &&
|
||||||
function.isTopLevel &&
|
function.isTopLevel &&
|
||||||
function.getPackageFragment()!!.fqName.asString() == "kotlin" &&
|
function.getPackageFragment().fqName.asString() == "kotlin" &&
|
||||||
function.valueParameters.isEmpty() &&
|
function.valueParameters.isEmpty() &&
|
||||||
symbol.owner.extensionReceiverParameter?.type?.classOrNull?.owner.let { receiverClass ->
|
symbol.owner.extensionReceiverParameter?.type?.classOrNull?.owner.let { receiverClass ->
|
||||||
receiverClass?.fqNameWhenAvailable?.toUnsafe() == StandardNames.FqNames.kProperty0
|
receiverClass?.fqNameWhenAvailable?.toUnsafe() == StandardNames.FqNames.kProperty0
|
||||||
|
|||||||
+1
-1
@@ -582,7 +582,7 @@ class ExpressionCodegen(
|
|||||||
// Copy-pasted bytecode blocks are not suspension points.
|
// Copy-pasted bytecode blocks are not suspension points.
|
||||||
symbol.owner.isInline ->
|
symbol.owner.isInline ->
|
||||||
if (symbol.owner.name.asString() == "suspendCoroutineUninterceptedOrReturn" &&
|
if (symbol.owner.name.asString() == "suspendCoroutineUninterceptedOrReturn" &&
|
||||||
symbol.owner.getPackageFragment()?.fqName == FqName("kotlin.coroutines.intrinsics")
|
symbol.owner.getPackageFragment().fqName == FqName("kotlin.coroutines.intrinsics")
|
||||||
)
|
)
|
||||||
SuspensionPointKind.ALWAYS
|
SuspensionPointKind.ALWAYS
|
||||||
else
|
else
|
||||||
|
|||||||
+1
-1
@@ -119,5 +119,5 @@ private class AssertionLowering(private val context: JvmBackendContext) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val IrFunction.isAssert: Boolean
|
private val IrFunction.isAssert: Boolean
|
||||||
get() = name.asString() == "assert" && getPackageFragment()?.fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
|
get() = name.asString() == "assert" && getPackageFragment().fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,7 @@ private class PropertyReferenceDelegationTransformer(val context: JvmBackendCont
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val IrStatement.isStdlibCall: Boolean
|
private val IrStatement.isStdlibCall: Boolean
|
||||||
get() = this is IrCall && symbol.owner.getPackageFragment()?.fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
|
get() = this is IrCall && symbol.owner.getPackageFragment().fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
|
||||||
|
|
||||||
// Some receivers don't need to be stored in fields and can be reevaluated every time an accessor is called:
|
// Some receivers don't need to be stored in fields and can be reevaluated every time an accessor is called:
|
||||||
private fun IrExpression.canInline(visibleScopes: Set<IrDeclarationParent>): Boolean = when (this) {
|
private fun IrExpression.canInline(visibleScopes: Set<IrDeclarationParent>): Boolean = when (this) {
|
||||||
|
|||||||
+1
-1
@@ -89,7 +89,7 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : FileL
|
|||||||
|
|
||||||
val ownerClass = declaration.parent as? IrClass ?: return true // locals are always accessible
|
val ownerClass = declaration.parent as? IrClass ?: return true // locals are always accessible
|
||||||
val scopeClassOrPackage = inlineScopeResolver.findContainer(currentScope!!.irElement) ?: return false
|
val scopeClassOrPackage = inlineScopeResolver.findContainer(currentScope!!.irElement) ?: return false
|
||||||
val samePackage = ownerClass.getPackageFragment()?.fqName == scopeClassOrPackage.getPackageFragment()?.fqName
|
val samePackage = ownerClass.getPackageFragment().fqName == scopeClassOrPackage.getPackageFragment()?.fqName
|
||||||
return when {
|
return when {
|
||||||
jvmVisibility == 0 /* package only */ -> samePackage
|
jvmVisibility == 0 /* package only */ -> samePackage
|
||||||
jvmVisibility == Opcodes.ACC_PRIVATE -> ownerClass == scopeClassOrPackage
|
jvmVisibility == Opcodes.ACC_PRIVATE -> ownerClass == scopeClassOrPackage
|
||||||
|
|||||||
+1
-1
@@ -101,7 +101,7 @@ internal const val ARRAY_OF_NAME = "arrayOf"
|
|||||||
|
|
||||||
internal fun IrFunction.isArrayOf(): Boolean {
|
internal fun IrFunction.isArrayOf(): Boolean {
|
||||||
val parent = when (val directParent = parent) {
|
val parent = when (val directParent = parent) {
|
||||||
is IrClass -> directParent.getPackageFragment() ?: return false
|
is IrClass -> directParent.getPackageFragment()
|
||||||
is IrPackageFragment -> directParent
|
is IrPackageFragment -> directParent
|
||||||
else -> return false
|
else -> return false
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -65,8 +65,8 @@ class IrInlineScopeResolver(context: JvmBackendContext) : IrInlineReferenceLocat
|
|||||||
get() = isInline && DescriptorVisibilities.isPrivate(visibility)
|
get() = isInline && DescriptorVisibilities.isPrivate(visibility)
|
||||||
|
|
||||||
private fun IrFunction.isCoroutineIntrinsic(): Boolean =
|
private fun IrFunction.isCoroutineIntrinsic(): Boolean =
|
||||||
(name.asString() == "suspendCoroutine" && getPackageFragment()?.fqName == FqName("kotlin.coroutines")) ||
|
(name.asString() == "suspendCoroutine" && getPackageFragment().fqName == FqName("kotlin.coroutines")) ||
|
||||||
(name.asString() == "suspendCoroutineUninterceptedOrReturn" && getPackageFragment()?.fqName == FqName("kotlin.coroutines.intrinsics"))
|
(name.asString() == "suspendCoroutineUninterceptedOrReturn" && getPackageFragment().fqName == FqName("kotlin.coroutines.intrinsics"))
|
||||||
|
|
||||||
fun findContainer(scope: IrElement): IrDeclarationContainer? =
|
fun findContainer(scope: IrElement): IrDeclarationContainer? =
|
||||||
findContainer(scope, approximateToPackage = false)
|
findContainer(scope, approximateToPackage = false)
|
||||||
|
|||||||
+1
-1
@@ -452,7 +452,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val IrSimpleFunction.isBuiltIn: Boolean
|
private val IrSimpleFunction.isBuiltIn: Boolean
|
||||||
get() = getPackageFragment()?.fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME ||
|
get() = getPackageFragment().fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME ||
|
||||||
parent.safeAs<IrClass>()?.fqNameWhenAvailable?.toUnsafe()?.let(JavaToKotlinClassMap::mapKotlinToJava) != null
|
parent.safeAs<IrClass>()?.fqNameWhenAvailable?.toUnsafe()?.let(JavaToKotlinClassMap::mapKotlinToJava) != null
|
||||||
|
|
||||||
// From BuiltinMethodsWithDifferentJvmName.isBuiltinFunctionWithDifferentNameInJvm, BuiltinMethodsWithDifferentJvmName.getJvmName
|
// From BuiltinMethodsWithDifferentJvmName.isBuiltinFunctionWithDifferentNameInJvm, BuiltinMethodsWithDifferentJvmName.getJvmName
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ class DescriptorMetadataSerializer(
|
|||||||
is DescriptorMetadataSource.Class -> serializer!!.classProto(metadata.descriptor).build()
|
is DescriptorMetadataSource.Class -> serializer!!.classProto(metadata.descriptor).build()
|
||||||
is DescriptorMetadataSource.Script -> serializer!!.classProto(metadata.descriptor).build()
|
is DescriptorMetadataSource.Script -> serializer!!.classProto(metadata.descriptor).build()
|
||||||
is DescriptorMetadataSource.File ->
|
is DescriptorMetadataSource.File ->
|
||||||
serializer!!.packagePartProto(irClass.getPackageFragment()!!.fqName, metadata.descriptors).apply {
|
serializer!!.packagePartProto(irClass.getPackageFragment().fqName, metadata.descriptors).apply {
|
||||||
serializerExtension.serializeJvmPackage(this, type)
|
serializerExtension.serializeJvmPackage(this, type)
|
||||||
}.build()
|
}.build()
|
||||||
is DescriptorMetadataSource.Function -> {
|
is DescriptorMetadataSource.Function -> {
|
||||||
|
|||||||
-1
@@ -95,7 +95,6 @@ class WasmCompiledModuleFragment(val irBuiltIns: IrBuiltIns) {
|
|||||||
val declaration = (ir as? IrSymbol)?.owner as? IrDeclarationWithName
|
val declaration = (ir as? IrSymbol)?.owner as? IrDeclarationWithName
|
||||||
if (declaration != null) {
|
if (declaration != null) {
|
||||||
val packageFragment = declaration.getPackageFragment()
|
val packageFragment = declaration.getPackageFragment()
|
||||||
?: error("Referencing declaration without package fragment ${declaration.fqNameWhenAvailable}")
|
|
||||||
if (packageFragment is IrExternalPackageFragment) {
|
if (packageFragment is IrExternalPackageFragment) {
|
||||||
error("Referencing declaration without package fragment ${declaration.fqNameWhenAvailable}")
|
error("Referencing declaration without package fragment ${declaration.fqNameWhenAvailable}")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -273,12 +273,13 @@ val IrDeclaration.parentAsClass: IrClass
|
|||||||
get() = parent as? IrClass
|
get() = parent as? IrClass
|
||||||
?: error("Parent of this declaration is not a class: ${render()}")
|
?: error("Parent of this declaration is not a class: ${render()}")
|
||||||
|
|
||||||
tailrec fun IrElement.getPackageFragment(): IrPackageFragment? {
|
fun IrElement.getPackageFragment(): IrPackageFragment? =
|
||||||
if (this is IrPackageFragment) return this
|
this as? IrPackageFragment ?: (this as? IrDeclaration)?.getPackageFragment()
|
||||||
return when (val parent = (this as? IrDeclaration)?.parent) {
|
|
||||||
is IrPackageFragment -> parent
|
tailrec fun IrDeclaration.getPackageFragment(): IrPackageFragment {
|
||||||
else -> parent?.getPackageFragment()
|
val parent = this.parent
|
||||||
}
|
return parent as? IrPackageFragment
|
||||||
|
?: (parent as IrDeclaration).getPackageFragment()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrConstructorCall.isAnnotation(name: FqName) = symbol.owner.parentAsClass.fqNameWhenAvailable == name
|
fun IrConstructorCall.isAnnotation(name: FqName) = symbol.owner.parentAsClass.fqNameWhenAvailable == name
|
||||||
@@ -484,12 +485,7 @@ fun IrMemberAccessExpression<IrFunctionSymbol>.copyValueArgumentsFrom(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val IrDeclaration.fileOrNull: IrFile?
|
val IrDeclaration.fileOrNull: IrFile?
|
||||||
get() = when (val parent = parent) {
|
get() = getPackageFragment() as? IrFile
|
||||||
is IrFile -> parent
|
|
||||||
is IrPackageFragment -> null
|
|
||||||
is IrDeclaration -> parent.fileOrNull
|
|
||||||
else -> TODO("Unexpected declaration parent")
|
|
||||||
}
|
|
||||||
|
|
||||||
val IrDeclaration.file: IrFile
|
val IrDeclaration.file: IrFile
|
||||||
get() = fileOrNull ?: TODO("Unknown file")
|
get() = fileOrNull ?: TODO("Unknown file")
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
|||||||
import org.jetbrains.kotlin.backend.common.DefaultMapping
|
import org.jetbrains.kotlin.backend.common.DefaultMapping
|
||||||
import org.jetbrains.kotlin.backend.common.Mapping
|
import org.jetbrains.kotlin.backend.common.Mapping
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.KonanSharedVariablesManager
|
import org.jetbrains.kotlin.backend.konan.descriptors.KonanSharedVariablesManager
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.findPackage
|
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanIr
|
import org.jetbrains.kotlin.backend.konan.ir.KonanIr
|
||||||
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
@@ -22,6 +21,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
|
import org.jetbrains.kotlin.ir.util.getPackageFragment
|
||||||
|
|
||||||
internal abstract class KonanBackendContext(val config: KonanConfig) : CommonBackendContext {
|
internal abstract class KonanBackendContext(val config: KonanConfig) : CommonBackendContext {
|
||||||
abstract override val builtIns: KonanBuiltIns
|
abstract override val builtIns: KonanBuiltIns
|
||||||
@@ -59,7 +59,7 @@ internal fun IrElement.getCompilerMessageLocation(containingFile: IrFile): Compi
|
|||||||
|
|
||||||
internal fun IrBuilderWithScope.getCompilerMessageLocation(): CompilerMessageLocation? {
|
internal fun IrBuilderWithScope.getCompilerMessageLocation(): CompilerMessageLocation? {
|
||||||
val declaration = this.scope.scopeOwnerSymbol.owner as? IrDeclaration ?: return null
|
val declaration = this.scope.scopeOwnerSymbol.owner as? IrDeclaration ?: return null
|
||||||
val file = declaration.findPackage() as? IrFile ?: return null
|
val file = declaration.getPackageFragment() as? IrFile ?: return null
|
||||||
return createCompilerMessageLocation(file, startOffset, endOffset)
|
return createCompilerMessageLocation(file, startOffset, endOffset)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -472,7 +472,7 @@ internal class ClassLayoutBuilder(val irClass: IrClass, val context: Context) {
|
|||||||
context.specialDeclarationsFactory.getOuterThisField(irClass)
|
context.specialDeclarationsFactory.getOuterThisField(irClass)
|
||||||
else null
|
else null
|
||||||
if (context.config.lazyIrForCaches && !context.llvmModuleSpecification.containsDeclaration(irClass)) {
|
if (context.config.lazyIrForCaches && !context.llvmModuleSpecification.containsDeclaration(irClass)) {
|
||||||
val packageFragment = irClass.findPackage()
|
val packageFragment = irClass.getPackageFragment()
|
||||||
val moduleDescriptor = packageFragment.packageFragmentDescriptor.containingDeclaration
|
val moduleDescriptor = packageFragment.packageFragmentDescriptor.containingDeclaration
|
||||||
if (moduleDescriptor.isFromInteropLibrary())
|
if (moduleDescriptor.isFromInteropLibrary())
|
||||||
return emptyList()
|
return emptyList()
|
||||||
|
|||||||
-6
@@ -236,12 +236,6 @@ internal fun IrSimpleFunction.bridgeDirectionsTo(overriddenFunction: IrSimpleFun
|
|||||||
return ourDirections
|
return ourDirections
|
||||||
}
|
}
|
||||||
|
|
||||||
internal tailrec fun IrDeclaration.findPackage(): IrPackageFragment {
|
|
||||||
val parent = this.parent
|
|
||||||
return parent as? IrPackageFragment
|
|
||||||
?: (parent as IrDeclaration).findPackage()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun IrFunctionSymbol.isComparisonFunction(map: Map<IrClassifierSymbol, IrSimpleFunctionSymbol>): Boolean =
|
fun IrFunctionSymbol.isComparisonFunction(map: Map<IrClassifierSymbol, IrSimpleFunctionSymbol>): Boolean =
|
||||||
this in map.values
|
this in map.values
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -6,16 +6,16 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.ir
|
package org.jetbrains.kotlin.backend.konan.ir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.konan.*
|
import org.jetbrains.kotlin.backend.konan.*
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.findPackage
|
|
||||||
import org.jetbrains.kotlin.backend.konan.llvm.llvmSymbolOrigin
|
import org.jetbrains.kotlin.backend.konan.llvm.llvmSymbolOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.toKotlinType
|
import org.jetbrains.kotlin.ir.types.toKotlinType
|
||||||
|
import org.jetbrains.kotlin.ir.util.getPackageFragment
|
||||||
|
|
||||||
// This file contains some IR utilities which actually use descriptors.
|
// This file contains some IR utilities which actually use descriptors.
|
||||||
// TODO: port this code to IR.
|
// TODO: port this code to IR.
|
||||||
|
|
||||||
internal val IrDeclaration.llvmSymbolOrigin get() = findPackage().packageFragmentDescriptor.llvmSymbolOrigin
|
internal val IrDeclaration.llvmSymbolOrigin get() = getPackageFragment().packageFragmentDescriptor.llvmSymbolOrigin
|
||||||
|
|
||||||
internal fun IrType.isObjCObjectType() = this.toKotlinType().isObjCObjectType()
|
internal fun IrType.isObjCObjectType() = this.toKotlinType().isObjCObjectType()
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -564,7 +564,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getReflectionInfo(irClass: IrClass): ReflectionInfo {
|
private fun getReflectionInfo(irClass: IrClass): ReflectionInfo {
|
||||||
val packageName: String = irClass.findPackage().fqName.asString() // Compute and store package name in TypeInfo anyways.
|
val packageName: String = irClass.getPackageFragment().fqName.asString() // Compute and store package name in TypeInfo anyways.
|
||||||
val relativeName: String?
|
val relativeName: String?
|
||||||
val flags: Int
|
val flags: Int
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -13,13 +13,14 @@ import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineFunc
|
|||||||
import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineLambdasLowering
|
import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineLambdasLowering
|
||||||
import org.jetbrains.kotlin.backend.konan.Context
|
import org.jetbrains.kotlin.backend.konan.Context
|
||||||
import org.jetbrains.kotlin.backend.konan.InlineFunctionOriginInfo
|
import org.jetbrains.kotlin.backend.konan.InlineFunctionOriginInfo
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.findPackage
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
|
import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.dump
|
import org.jetbrains.kotlin.ir.util.dump
|
||||||
import org.jetbrains.kotlin.ir.util.file
|
import org.jetbrains.kotlin.ir.util.file
|
||||||
import org.jetbrains.kotlin.ir.util.render
|
import org.jetbrains.kotlin.ir.util.render
|
||||||
|
import org.jetbrains.kotlin.ir.util.getPackageFragment
|
||||||
|
|
||||||
// TODO: This is a bit hacky. Think about adopting persistent IR ideas.
|
// TODO: This is a bit hacky. Think about adopting persistent IR ideas.
|
||||||
internal class NativeInlineFunctionResolver(override val context: Context) : DefaultInlineFunctionResolver(context) {
|
internal class NativeInlineFunctionResolver(override val context: Context) : DefaultInlineFunctionResolver(context) {
|
||||||
@@ -28,11 +29,11 @@ internal class NativeInlineFunctionResolver(override val context: Context) : Def
|
|||||||
|
|
||||||
context.specialDeclarationsFactory.loweredInlineFunctions[function]?.let { return it.irFunction }
|
context.specialDeclarationsFactory.loweredInlineFunctions[function]?.let { return it.irFunction }
|
||||||
|
|
||||||
val packageFragment = function.findPackage()
|
val packageFragment = function.getPackageFragment()
|
||||||
val notLoweredFunction = if (packageFragment !is IrExternalPackageFragment) {
|
val notLoweredFunction = if (packageFragment !is IrExternalPackageFragment) {
|
||||||
context.specialDeclarationsFactory.getNonLoweredInlineFunction(function).also {
|
context.specialDeclarationsFactory.getNonLoweredInlineFunction(function).also {
|
||||||
context.specialDeclarationsFactory.loweredInlineFunctions[function] =
|
context.specialDeclarationsFactory.loweredInlineFunctions[function] =
|
||||||
InlineFunctionOriginInfo(it, function.file, function.startOffset, function.endOffset)
|
InlineFunctionOriginInfo(it, packageFragment as IrFile, function.startOffset, function.endOffset)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// The function is from Lazy IR, get its body from the IR linker.
|
// The function is from Lazy IR, get its body from the IR linker.
|
||||||
|
|||||||
+1
-1
@@ -714,7 +714,7 @@ internal class KonanIrLinker(
|
|||||||
private val inlineFunctionFiles = mutableMapOf<IrExternalPackageFragment, IrFile>()
|
private val inlineFunctionFiles = mutableMapOf<IrExternalPackageFragment, IrFile>()
|
||||||
|
|
||||||
fun deserializeInlineFunction(function: IrFunction): InlineFunctionOriginInfo {
|
fun deserializeInlineFunction(function: IrFunction): InlineFunctionOriginInfo {
|
||||||
val packageFragment = function.findPackage() as? IrExternalPackageFragment
|
val packageFragment = function.getPackageFragment() as? IrExternalPackageFragment
|
||||||
?: error("Expected an external package fragment for ${function.render()}")
|
?: error("Expected an external package fragment for ${function.render()}")
|
||||||
if (function.parents.any { (it as? IrFunction)?.isInline == true}) {
|
if (function.parents.any { (it as? IrFunction)?.isInline == true}) {
|
||||||
// Already deserialized by the top-most inline function.
|
// Already deserialized by the top-most inline function.
|
||||||
|
|||||||
Reference in New Issue
Block a user