[K/N] Fixed wrong initializer call extraction for interop-visible functions

#KT-56521 Fixed
This commit is contained in:
Igor Chevdar
2023-02-09 18:58:57 +02:00
committed by Space Team
parent 2281d9700d
commit a14f3c8cc2
@@ -162,13 +162,13 @@ internal object StaticInitializersOptimization {
val containter = function.calledInitializer ?: return@forEach
val backingField = (function as? IrSimpleFunction)?.correspondingPropertySymbol?.owner?.backingField
val isDefaultAccessor = backingField != null && function.origin == IrDeclarationOrigin.DEFAULT_PROPERTY_ACCESSOR
if ((!functionInitializedFiles.get(containerIds[containter]!!)
&& function !in functionsWhoseInitializerCallCanBeExtractedToCallSites
val initializerCallCouldBeDropped =
functionInitializedFiles.get(containerIds[containter]!!)
|| function in functionsWhoseInitializerCallCanBeExtractedToCallSites
// Extract calls to file initializers off of default accessors to simplify their inlining.
&& (!isDefaultAccessor || function in rootSet))
) {
|| isDefaultAccessor
if (function in rootSet || !initializerCallCouldBeDropped)
result += function
}
}
return result
}