[IR] Replaced K/N findPackage with common getPackageFragment

This commit is contained in:
Igor Chevdar
2022-04-17 20:18:32 +05:00
committed by Space
parent 78b23eea10
commit 04ef856780
18 changed files with 29 additions and 39 deletions
@@ -582,7 +582,7 @@ class ExpressionCodegen(
// Copy-pasted bytecode blocks are not suspension points.
symbol.owner.isInline ->
if (symbol.owner.name.asString() == "suspendCoroutineUninterceptedOrReturn" &&
symbol.owner.getPackageFragment()?.fqName == FqName("kotlin.coroutines.intrinsics")
symbol.owner.getPackageFragment().fqName == FqName("kotlin.coroutines.intrinsics")
)
SuspensionPointKind.ALWAYS
else
@@ -119,5 +119,5 @@ private class AssertionLowering(private val context: JvmBackendContext) :
}
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
}
@@ -85,7 +85,7 @@ private class PropertyReferenceDelegationTransformer(val context: JvmBackendCont
}
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:
private fun IrExpression.canInline(visibleScopes: Set<IrDeclarationParent>): Boolean = when (this) {
@@ -89,7 +89,7 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : FileL
val ownerClass = declaration.parent as? IrClass ?: return true // locals are always accessible
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 {
jvmVisibility == 0 /* package only */ -> samePackage
jvmVisibility == Opcodes.ACC_PRIVATE -> ownerClass == scopeClassOrPackage
@@ -101,7 +101,7 @@ internal const val ARRAY_OF_NAME = "arrayOf"
internal fun IrFunction.isArrayOf(): Boolean {
val parent = when (val directParent = parent) {
is IrClass -> directParent.getPackageFragment() ?: return false
is IrClass -> directParent.getPackageFragment()
is IrPackageFragment -> directParent
else -> return false
}
@@ -65,8 +65,8 @@ class IrInlineScopeResolver(context: JvmBackendContext) : IrInlineReferenceLocat
get() = isInline && DescriptorVisibilities.isPrivate(visibility)
private fun IrFunction.isCoroutineIntrinsic(): Boolean =
(name.asString() == "suspendCoroutine" && getPackageFragment()?.fqName == FqName("kotlin.coroutines")) ||
(name.asString() == "suspendCoroutineUninterceptedOrReturn" && getPackageFragment()?.fqName == FqName("kotlin.coroutines.intrinsics"))
(name.asString() == "suspendCoroutine" && getPackageFragment().fqName == FqName("kotlin.coroutines")) ||
(name.asString() == "suspendCoroutineUninterceptedOrReturn" && getPackageFragment().fqName == FqName("kotlin.coroutines.intrinsics"))
fun findContainer(scope: IrElement): IrDeclarationContainer? =
findContainer(scope, approximateToPackage = false)
@@ -452,7 +452,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext) {
}
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
// From BuiltinMethodsWithDifferentJvmName.isBuiltinFunctionWithDifferentNameInJvm, BuiltinMethodsWithDifferentJvmName.getJvmName
@@ -63,7 +63,7 @@ class DescriptorMetadataSerializer(
is DescriptorMetadataSource.Class -> serializer!!.classProto(metadata.descriptor).build()
is DescriptorMetadataSource.Script -> serializer!!.classProto(metadata.descriptor).build()
is DescriptorMetadataSource.File ->
serializer!!.packagePartProto(irClass.getPackageFragment()!!.fqName, metadata.descriptors).apply {
serializer!!.packagePartProto(irClass.getPackageFragment().fqName, metadata.descriptors).apply {
serializerExtension.serializeJvmPackage(this, type)
}.build()
is DescriptorMetadataSource.Function -> {