From 0a2450bcd545e89dbf56c66cfd49e85d80df4a4d Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Sat, 23 Mar 2019 14:38:04 +0300 Subject: [PATCH] Remove duplicate definitions --- .../src/org/jetbrains/kotlin/backend/common/ir/Ir.kt | 3 ++- .../org/jetbrains/kotlin/backend/common/ir/IrUtils.kt | 10 ---------- .../src/org/jetbrains/kotlin/ir/util/IrTypeUtils.kt | 3 +-- .../lower/MoveBodilessDeclarationsToSeparatePlace.kt | 4 ++-- .../kotlin/backend/jvm/lower/BridgeLowering.kt | 7 ++++--- .../org/jetbrains/kotlin/ir/types/irTypePredicates.kt | 4 ++-- .../src/org/jetbrains/kotlin/ir/util/IrUtils.kt | 9 --------- 7 files changed, 11 insertions(+), 29 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt index e55a8f42454..fddf2a8cfb8 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.types.classifierOrNull import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable +import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable import org.jetbrains.kotlin.ir.util.getPackageFragment import org.jetbrains.kotlin.ir.util.referenceFunction import org.jetbrains.kotlin.name.FqName @@ -192,7 +193,7 @@ abstract class Symbols(val context: T, private val function.getPackageFragment()!!.fqName.asString() == "kotlin" && function.valueParameters.isEmpty() && (symbol.owner.extensionReceiverParameter?.type?.classifierOrNull?.owner as? IrClass).let { receiverClass -> - receiverClass?.fqName?.toUnsafe() == KotlinBuiltIns.FQ_NAMES.kProperty0 + receiverClass?.fqNameWhenAvailable?.toUnsafe() == KotlinBuiltIns.FQ_NAMES.kProperty0 } } } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index 5d5f4e5c934..804d0e64ce2 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -347,13 +347,3 @@ fun isElseBranch(branch: IrBranch) = branch is IrElseBranch || ((branch.conditio fun IrSimpleFunction.isMethodOfAny() = ((valueParameters.size == 0 && name.asString().let { it == "hashCode" || it == "toString" }) || (valueParameters.size == 1 && name.asString() == "equals" && valueParameters[0].type.isNullableAny())) - -val IrClass.fqName: FqName? - get() { - val parentFqName = when (val parent = parent) { - is IrPackageFragment -> parent.fqName - is IrClass -> parent.fqName - else -> return null - } - return parentFqName?.child(name) - } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrTypeUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrTypeUtils.kt index 45aee7aac52..e73e1f7fbd5 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrTypeUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrTypeUtils.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.ir.util -import org.jetbrains.kotlin.backend.common.ir.fqName import org.jetbrains.kotlin.builtins.KotlinBuiltIns.FQ_NAMES import org.jetbrains.kotlin.builtins.UnsignedTypes import org.jetbrains.kotlin.descriptors.ClassKind @@ -84,5 +83,5 @@ private inline fun IrType.isTypeFromKotlinPackage(namePredicate: (Name) -> Boole fun IrType.isPrimitiveArray() = isTypeFromKotlinPackage { it in FQ_NAMES.primitiveArrayTypeShortNames } fun IrType.getPrimitiveArrayElementType() = (this as? IrSimpleType)?.let { - (it.classifier.owner as? IrClass)?.fqName?.toUnsafe()?.let { fqn -> FQ_NAMES.arrayClassFqNameToPrimitiveType[fqn] } + (it.classifier.owner as? IrClass)?.fqNameWhenAvailable?.toUnsafe()?.let { fqn -> FQ_NAMES.arrayClassFqNameToPrimitiveType[fqn] } } \ No newline at end of file diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt index 24865642824..d3a1e69aadc 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.ir.backend.js.utils.getJsQualifier import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol -import org.jetbrains.kotlin.ir.util.getFqName +import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable import org.jetbrains.kotlin.ir.util.isEffectivelyExternal import org.jetbrains.kotlin.ir.util.transformFlat import org.jetbrains.kotlin.name.FqName @@ -66,7 +66,7 @@ fun moveBodilessDeclarationsToSeparatePlace(context: JsIrBackendContext, module: ) fun isBuiltInClass(declaration: IrDeclaration): Boolean = - declaration is IrClass && declaration.getFqName() in BODILESS_BUILTIN_CLASSES + declaration is IrClass && declaration.fqNameWhenAvailable in BODILESS_BUILTIN_CLASSES fun collectExternalClasses(container: IrDeclarationContainer, includeCurrentLevel: Boolean): List { val externalClasses = diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt index 7588d94014b..c35a480816e 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt @@ -41,6 +41,7 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl import org.jetbrains.kotlin.ir.util.defaultType +import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable import org.jetbrains.kotlin.ir.util.isInterface import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.name.FqName @@ -389,7 +390,7 @@ private class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPass private fun makeDescription(classFqName: String, funName: String, arity: Int) = SpecialMethodDescription(FqName(classFqName), Name.identifier(funName), arity) - private fun IrSimpleFunction.toDescription() = SpecialMethodDescription(parentAsClass.fqName, name, valueParameters.size) + private fun IrSimpleFunction.toDescription() = SpecialMethodDescription(parentAsClass.fqNameWhenAvailable, name, valueParameters.size) private fun constFalse(bridge: IrSimpleFunction) = IrConstImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, context.irBuiltIns.booleanType, IrConstKind.Boolean, false) @@ -434,11 +435,11 @@ private class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPass override fun getOverridden() = irFunction.overriddenSymbols.map { FunctionHandleForIrFunction(it.owner) } override fun hashCode(): Int = - irFunction.parent.safeAs()?.fqName.hashCode() + 31 * irFunction.getJvmSignature().hashCode() + irFunction.parent.safeAs()?.fqNameWhenAvailable.hashCode() + 31 * irFunction.getJvmSignature().hashCode() override fun equals(other: Any?): Boolean = other is FunctionHandleForIrFunction && - irFunction.parent.safeAs()?.fqName == other.irFunction.parent.safeAs()?.fqName && + irFunction.parent.safeAs()?.fqNameWhenAvailable == other.irFunction.parent.safeAs()?.fqNameWhenAvailable && irFunction.getJvmSignature() == other.irFunction.getJvmSignature() } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt index 7c0dcd54f01..cd4dcee21ee 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.symbols.IrClassSymbol -import org.jetbrains.kotlin.ir.util.getFqName +import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.resolve.DescriptorUtils.getFqName @@ -27,7 +27,7 @@ private fun classFqNameEquals(symbol: IrClassSymbol, fqName: FqNameUnsafe): Bool if (symbol.isBound) classFqNameEquals(symbol.owner, fqName) else classFqNameEquals(symbol.descriptor, fqName) private fun classFqNameEquals(declaration: IrClass, fqName: FqNameUnsafe): Boolean = - declaration.name == fqName.shortName() && fqName == declaration.getFqName()?.toUnsafe() + declaration.name == fqName.shortName() && fqName == declaration.fqNameWhenAvailable?.toUnsafe() private fun classFqNameEquals(descriptor: ClassDescriptor, fqName: FqNameUnsafe): Boolean = descriptor.name == fqName.shortName() && fqName == getFqName(descriptor) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 1d0d791f366..683f8ded58f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -463,12 +463,3 @@ val IrDeclaration.file: IrFile get() = parent.let { else -> TODO("Unexpected declaration parent") } } - -fun IrDeclarationWithName.getFqName(): FqName? { - val parentFqName = when (val parent = parent) { - is IrPackageFragment -> parent.fqName - is IrDeclarationWithName -> parent.getFqName() - else -> null - } - return parentFqName?.child(name) -}