Minor. Refine naming for SpecialBuiltinMembers

This commit is contained in:
Denis Zharkov
2015-10-15 20:49:49 +03:00
parent b6df6d8ae0
commit 978a4cfa3c
6 changed files with 33 additions and 33 deletions
@@ -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
@@ -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