Minor. Refine naming for SpecialBuiltinMembers
This commit is contained in:
+8
-8
@@ -26,9 +26,9 @@ import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.load.java.*
|
||||
import org.jetbrains.kotlin.load.java.BuiltinSpecialProperties.getBuiltinSpecialPropertyGetterName
|
||||
import org.jetbrains.kotlin.load.java.BuiltinSpecialMethods.sameAsRenamedInJvmBuiltin
|
||||
import org.jetbrains.kotlin.load.java.BuiltinSpecialMethods.isRemoveAtByIndex
|
||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialJvmSignature.sameAsBuiltinMethodWithErasedValueParameters
|
||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithDifferentJvmName.sameAsRenamedInJvmBuiltin
|
||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithDifferentJvmName.isRemoveAtByIndex
|
||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.sameAsBuiltinMethodWithErasedValueParameters
|
||||
import org.jetbrains.kotlin.load.java.components.DescriptorResolverUtils
|
||||
import org.jetbrains.kotlin.load.java.components.TypeUsage
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaConstructorDescriptor
|
||||
@@ -119,10 +119,10 @@ public class LazyJavaClassMemberScope(
|
||||
}
|
||||
|
||||
private fun JavaMethod.doesOverrideRenamedBuiltins(): Boolean {
|
||||
return BuiltinSpecialMethods.getSpecialBuiltinFunctionsByJvmName(name).any {
|
||||
return BuiltinMethodsWithDifferentJvmName.getBuiltinFunctionNamesByJvmName(name).any {
|
||||
builtinName ->
|
||||
val builtinSpecialFromSuperTypes =
|
||||
getFunctionsFromSupertypes(builtinName).filter { it.overridesBuiltinSpecialDeclaration() }
|
||||
getFunctionsFromSupertypes(builtinName).filter { it.doesOverrideBuiltinWithDifferentJvmName() }
|
||||
if (builtinSpecialFromSuperTypes.isEmpty()) return@any false
|
||||
|
||||
val methodDescriptor = resolveMethodToFunctionDescriptorWithName(this, builtinName)
|
||||
@@ -148,7 +148,7 @@ public class LazyJavaClassMemberScope(
|
||||
val commonProperty = findGetterByName(JvmAbi.getterName(name.asString()))
|
||||
if (commonProperty != null) return commonProperty
|
||||
|
||||
val specialGetterName = getter?.getBuiltinSpecialOverridden()?.getBuiltinSpecialPropertyGetterName() ?: return null
|
||||
val specialGetterName = getter?.getOverriddenBuiltinWithDifferentJvmName()?.getBuiltinSpecialPropertyGetterName() ?: return null
|
||||
return findGetterByName(specialGetterName)
|
||||
}
|
||||
|
||||
@@ -204,7 +204,7 @@ public class LazyJavaClassMemberScope(
|
||||
name, functionsFromSupertypes, emptyList(), getContainingDeclaration(), ErrorReporter.DO_NOTHING)
|
||||
|
||||
for (descriptor in mergedFunctionFromSuperTypes) {
|
||||
val overriddenBuiltin = descriptor.getBuiltinSpecialOverridden() ?: continue
|
||||
val overriddenBuiltin = descriptor.getOverriddenBuiltinWithDifferentJvmName() ?: continue
|
||||
|
||||
if (result.any { it.doesOverride(overriddenBuiltin) }) continue
|
||||
|
||||
@@ -375,7 +375,7 @@ public class LazyJavaClassMemberScope(
|
||||
): FunctionDescriptor? {
|
||||
val candidatesToOverride =
|
||||
getFunctionsFromSupertypes(javaMethodDescriptor.name).map {
|
||||
BuiltinMethodsWithSpecialJvmSignature.getOverriddenBuiltinFunctionWithErasedValueParametersInJava(it)
|
||||
BuiltinMethodsWithSpecialGenericSignature.getOverriddenBuiltinFunctionWithErasedValueParametersInJava(it)
|
||||
}.filterNotNull()
|
||||
|
||||
if (candidatesToOverride.isEmpty()) return null
|
||||
|
||||
+10
-10
@@ -73,7 +73,7 @@ object BuiltinSpecialProperties {
|
||||
}
|
||||
}
|
||||
|
||||
object BuiltinMethodsWithSpecialJvmSignature {
|
||||
object BuiltinMethodsWithSpecialGenericSignature {
|
||||
private val ERASED_COLLECTION_PARAMETER_FQ_NAMES = setOf(
|
||||
FqName("kotlin.Collection.containsAll"),
|
||||
FqName("kotlin.MutableCollection.removeAll"),
|
||||
@@ -117,7 +117,7 @@ object BuiltinMethodsWithSpecialJvmSignature {
|
||||
|
||||
fun CallableMemberDescriptor.isBuiltinWithSpecialDescriptorInJvm(): Boolean {
|
||||
if (!isFromBuiltins()) return false
|
||||
return getSpecialSignatureInfo() == SpecialSignatureInfo.GENERIC_PARAMETER || overridesBuiltinSpecialDeclaration()
|
||||
return getSpecialSignatureInfo() == SpecialSignatureInfo.GENERIC_PARAMETER || doesOverrideBuiltinWithDifferentJvmName()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -133,7 +133,7 @@ object BuiltinMethodsWithSpecialJvmSignature {
|
||||
}
|
||||
}
|
||||
|
||||
object BuiltinSpecialMethods {
|
||||
object BuiltinMethodsWithDifferentJvmName {
|
||||
val REMOVE_AT_FQ_NAME = FqName("kotlin.MutableList.removeAt")
|
||||
|
||||
val FQ_NAMES_TO_JVM_MAP: Map<FqName, Name> = mapOf(
|
||||
@@ -154,7 +154,7 @@ object BuiltinSpecialMethods {
|
||||
val Name.sameAsRenamedInJvmBuiltin: Boolean
|
||||
get() = this in ORIGINAL_SHORT_NAMES
|
||||
|
||||
fun getSpecialJvmName(callableMemberDescriptor: CallableMemberDescriptor): Name? {
|
||||
fun getJvmName(callableMemberDescriptor: CallableMemberDescriptor): Name? {
|
||||
return FQ_NAMES_TO_JVM_MAP[callableMemberDescriptor.fqNameOrNull() ?: return null]
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ object BuiltinSpecialMethods {
|
||||
return callableMemberDescriptor.firstOverridden { FQ_NAMES_TO_JVM_MAP.containsKey(fqName) } != null
|
||||
}
|
||||
|
||||
fun getSpecialBuiltinFunctionsByJvmName(name: Name): List<Name> =
|
||||
fun getBuiltinFunctionNamesByJvmName(name: Name): List<Name> =
|
||||
JVM_SHORT_NAME_TO_BUILTIN_SHORT_NAMES_MAP[name] ?: emptyList()
|
||||
|
||||
|
||||
@@ -173,29 +173,29 @@ object BuiltinSpecialMethods {
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun <T : CallableMemberDescriptor> T.getBuiltinSpecialOverridden(): T? {
|
||||
fun <T : CallableMemberDescriptor> T.getOverriddenBuiltinWithDifferentJvmName(): T? {
|
||||
return when (this) {
|
||||
is PropertyDescriptor, is PropertyAccessorDescriptor ->
|
||||
firstOverridden { BuiltinSpecialProperties.hasBuiltinSpecialPropertyFqName(it.propertyIfAccessor) } as T?
|
||||
else -> firstOverridden { BuiltinSpecialMethods.isBuiltinFunctionWithDifferentNameInJvm(it) } as T?
|
||||
else -> firstOverridden { BuiltinMethodsWithDifferentJvmName.isBuiltinFunctionWithDifferentNameInJvm(it) } as T?
|
||||
}
|
||||
}
|
||||
|
||||
fun CallableMemberDescriptor.overridesBuiltinSpecialDeclaration(): Boolean = getBuiltinSpecialOverridden() != null
|
||||
fun CallableMemberDescriptor.doesOverrideBuiltinWithDifferentJvmName(): Boolean = getOverriddenBuiltinWithDifferentJvmName() != null
|
||||
|
||||
fun getJvmMethodNameIfSpecial(callableMemberDescriptor: CallableMemberDescriptor): String? {
|
||||
val builtinOverridden = getBuiltinOverriddenThatAffectsJvmName(callableMemberDescriptor)?.propertyIfAccessor
|
||||
?: return null
|
||||
return when (builtinOverridden) {
|
||||
is PropertyDescriptor -> builtinOverridden.getBuiltinSpecialPropertyGetterName()
|
||||
else -> BuiltinSpecialMethods.getSpecialJvmName(builtinOverridden)?.asString()
|
||||
else -> BuiltinMethodsWithDifferentJvmName.getJvmName(builtinOverridden)?.asString()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getBuiltinOverriddenThatAffectsJvmName(
|
||||
callableMemberDescriptor: CallableMemberDescriptor
|
||||
): CallableMemberDescriptor? {
|
||||
val overriddenBuiltin = callableMemberDescriptor.getBuiltinSpecialOverridden() ?: return null
|
||||
val overriddenBuiltin = callableMemberDescriptor.getOverriddenBuiltinWithDifferentJvmName() ?: return null
|
||||
|
||||
if (callableMemberDescriptor.isFromJavaOrBuiltins()) return overriddenBuiltin
|
||||
|
||||
|
||||
Reference in New Issue
Block a user