From 893b1045ba4d2ff6fc35589da1f4e3fb3f76e050 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Wed, 17 Feb 2021 14:51:08 +0300 Subject: [PATCH] Move some common parts from BuiltinMethodsWithDifferentJvmName to SpecialGenericSignatures --- .../kotlin/load/java/BuiltinSpecialProperties.kt | 3 +++ .../kotlin/load/java/SpecialGenericSignatures.kt | 11 ++++++++++- ...JavaIncompatibilityRulesOverridabilityCondition.kt | 2 +- .../java/lazy/descriptors/LazyJavaClassMemberScope.kt | 4 ++-- .../kotlin/load/java/specialBuiltinMembers.kt | 7 ------- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/BuiltinSpecialProperties.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/BuiltinSpecialProperties.kt index 8106c8a504b..b508b2bdbb0 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/BuiltinSpecialProperties.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/BuiltinSpecialProperties.kt @@ -26,6 +26,9 @@ object BuiltinSpecialProperties { PROPERTY_FQ_NAME_TO_JVM_GETTER_NAME_MAP.entries .map { Pair(it.key.shortName(), it.value) } .groupBy({ it.second }, { it.first }) + .mapValues { + it.value.distinct() + } val SPECIAL_FQ_NAMES: Set = PROPERTY_FQ_NAME_TO_JVM_GETTER_NAME_MAP.keys val SPECIAL_SHORT_NAMES: Set = SPECIAL_FQ_NAMES.map(FqName::shortName).toSet() diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/SpecialGenericSignatures.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/SpecialGenericSignatures.kt index 9122e9113c7..6314884ae22 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/SpecialGenericSignatures.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/SpecialGenericSignatures.kt @@ -132,5 +132,14 @@ open class SpecialGenericSignatures { .map { Pair(it.key.name, it.value) } .groupBy({ it.second }, { it.first }) + fun getBuiltinFunctionNamesByJvmName(name: Name): List = + JVM_SHORT_NAME_TO_BUILTIN_SHORT_NAMES_MAP[name] ?: emptyList() + + val Name.sameAsBuiltinMethodWithErasedValueParameters: Boolean + get() = this in ERASED_VALUE_PARAMETERS_SHORT_NAMES + + val Name.sameAsRenamedInJvmBuiltin: Boolean + get() = this in ORIGINAL_SHORT_NAMES + } -} \ No newline at end of file +} diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JavaIncompatibilityRulesOverridabilityCondition.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JavaIncompatibilityRulesOverridabilityCondition.kt index 527e1d0b474..b4bd7c9d3d5 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JavaIncompatibilityRulesOverridabilityCondition.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JavaIncompatibilityRulesOverridabilityCondition.kt @@ -18,8 +18,8 @@ package org.jetbrains.kotlin.load.java import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.load.java.BuiltinMethodsWithDifferentJvmName.sameAsRenamedInJvmBuiltin import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.sameAsBuiltinMethodWithErasedValueParameters +import org.jetbrains.kotlin.load.java.SpecialGenericSignatures.Companion.sameAsRenamedInJvmBuiltin import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor import org.jetbrains.kotlin.load.kotlin.JvmType diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt index 4cef902b5ee..c19ec5ba853 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -29,9 +29,9 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.incremental.record import org.jetbrains.kotlin.load.java.* import org.jetbrains.kotlin.load.java.BuiltinMethodsWithDifferentJvmName.isRemoveAtByIndex -import org.jetbrains.kotlin.load.java.BuiltinMethodsWithDifferentJvmName.sameAsRenamedInJvmBuiltin import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.sameAsBuiltinMethodWithErasedValueParameters import org.jetbrains.kotlin.load.java.ClassicBuiltinSpecialProperties.getBuiltinSpecialPropertyGetterName +import org.jetbrains.kotlin.load.java.SpecialGenericSignatures.Companion.sameAsRenamedInJvmBuiltin import org.jetbrains.kotlin.load.java.components.DescriptorResolverUtils.resolveOverridesForNonStaticMembers import org.jetbrains.kotlin.load.java.components.TypeUsage import org.jetbrains.kotlin.load.java.descriptors.* @@ -203,7 +203,7 @@ class LazyJavaClassMemberScope( } private fun SimpleFunctionDescriptor.doesOverrideRenamedBuiltins(): Boolean { - return BuiltinMethodsWithDifferentJvmName.getBuiltinFunctionNamesByJvmName(name).any { + return SpecialGenericSignatures.getBuiltinFunctionNamesByJvmName(name).any { // e.g. 'removeAt' or 'toInt' builtinName -> val builtinSpecialFromSuperTypes = diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/specialBuiltinMembers.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/specialBuiltinMembers.kt index e6bcc318b23..6060877a930 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/specialBuiltinMembers.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/specialBuiltinMembers.kt @@ -71,9 +71,6 @@ object BuiltinMethodsWithSpecialGenericSignature : SpecialGenericSignatures() { } object BuiltinMethodsWithDifferentJvmName : SpecialGenericSignatures() { - val Name.sameAsRenamedInJvmBuiltin: Boolean - get() = this in ORIGINAL_SHORT_NAMES - fun getJvmName(functionDescriptor: SimpleFunctionDescriptor): Name? { return SIGNATURE_TO_JVM_REPRESENTATION_NAME[functionDescriptor.computeJvmSignature() ?: return null] } @@ -84,10 +81,6 @@ object BuiltinMethodsWithDifferentJvmName : SpecialGenericSignatures() { } != null } - fun getBuiltinFunctionNamesByJvmName(name: Name): List = - JVM_SHORT_NAME_TO_BUILTIN_SHORT_NAMES_MAP[name] ?: emptyList() - - val SimpleFunctionDescriptor.isRemoveAtByIndex: Boolean get() = name.asString() == "removeAt" && computeJvmSignature() == REMOVE_AT_NAME_AND_SIGNATURE.signature }