Minor. Convert some properties to functions

This commit is contained in:
Denis Zharkov
2015-10-09 15:12:32 +03:00
parent c78410855d
commit a98d1e1e55
3 changed files with 27 additions and 27 deletions
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.load.java.builtinSpecialOverridden import org.jetbrains.kotlin.load.java.getBuiltinSpecialOverridden
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.types.checker.TypeCheckingProcedure import org.jetbrains.kotlin.types.checker.TypeCheckingProcedure
@@ -43,7 +43,7 @@ object BuiltinSpecialBridgesUtil {
val functionHandle = DescriptorBasedFunctionHandle(function) val functionHandle = DescriptorBasedFunctionHandle(function)
val fake = !functionHandle.isDeclaration val fake = !functionHandle.isDeclaration
val overriddenBuiltin = function.builtinSpecialOverridden!! val overriddenBuiltin = function.getBuiltinSpecialOverridden()!!
val reachableDeclarations = findAllReachableDeclarations(function) val reachableDeclarations = findAllReachableDeclarations(function)
val needGenerateSpecialBridge = needGenerateSpecialBridge(function, reachableDeclarations, overriddenBuiltin) val needGenerateSpecialBridge = needGenerateSpecialBridge(function, reachableDeclarations, overriddenBuiltin)
@@ -60,21 +60,24 @@ private fun CallableDescriptor.fqNameOrNull(): FqName? = fqNameUnsafe.check { it
val Name.isBuiltinSpecialPropertyName: Boolean get() = this in BUILTIN_SPECIAL_PROPERTIES_SHORT_NAMES val Name.isBuiltinSpecialPropertyName: Boolean get() = this in BUILTIN_SPECIAL_PROPERTIES_SHORT_NAMES
public val CallableMemberDescriptor.builtinSpecialPropertyAccessorName: String? public fun CallableMemberDescriptor.getBuiltinSpecialPropertyAccessorName(): String? {
get() = propertyIfAccessor.check { it.hasBuiltinSpecialPropertyFqName() }?.name?.asString() return propertyIfAccessor.check { it.hasBuiltinSpecialPropertyFqName() }?.name?.asString()
}
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
val <T : CallableMemberDescriptor> T.builtinSpecialOverridden: T? get() { fun <T : CallableMemberDescriptor> T.getBuiltinSpecialOverridden(): T? {
return firstOverridden { it.propertyIfAccessor.hasBuiltinSpecialPropertyFqName() } as T? return firstOverridden { it.propertyIfAccessor.hasBuiltinSpecialPropertyFqName() } as T?
} }
fun CallableMemberDescriptor.overridesBuiltinSpecialDeclaration(): Boolean = builtinSpecialOverridden != null fun CallableMemberDescriptor.overridesBuiltinSpecialDeclaration(): Boolean = getBuiltinSpecialOverridden() != null
public val CallableMemberDescriptor.jvmMethodNameIfSpecial: String? public fun CallableMemberDescriptor.getJvmMethodNameIfSpecial(): String? {
get() = builtinOverriddenThatAffectsJvmName?.builtinSpecialPropertyAccessorName return getBuiltinOverriddenThatAffectsJvmName()?.getBuiltinSpecialPropertyAccessorName()
}
private val CallableMemberDescriptor.builtinOverriddenThatAffectsJvmName: CallableMemberDescriptor? private fun CallableMemberDescriptor.getBuiltinOverriddenThatAffectsJvmName(): CallableMemberDescriptor? {
get() = if (hasBuiltinSpecialPropertyFqName() || original.isFromJava) builtinSpecialOverridden else null return if (hasBuiltinSpecialPropertyFqName() || original.isFromJava) getBuiltinSpecialOverridden() else null
}
private val CallableMemberDescriptor.isFromJava: Boolean private val CallableMemberDescriptor.isFromJava: Boolean
get() = propertyIfAccessor is JavaCallableMemberDescriptor get() = propertyIfAccessor is JavaCallableMemberDescriptor
@@ -85,12 +88,10 @@ private val CallableMemberDescriptor.propertyIfAccessor: CallableDescriptor
val CallableMemberDescriptor.hasErasedValueParametersInJava: Boolean val CallableMemberDescriptor.hasErasedValueParametersInJava: Boolean
get() = fqNameOrNull() in BUILTIN_METHODS_ERASED_VALUE_PARAMETERS_FQ_NAMES get() = fqNameOrNull() in BUILTIN_METHODS_ERASED_VALUE_PARAMETERS_FQ_NAMES
fun FunctionDescriptor.getOverriddenBuiltinFunctionWithErasedValueParametersInJava(): FunctionDescriptor? {
val FunctionDescriptor.overriddenBuiltinFunctionWithErasedValueParametersInJava: FunctionDescriptor? if (!name.sameAsBuiltinMethodWithErasedValueParameters) return null
get() { return firstOverridden { it.hasErasedValueParametersInJava } as FunctionDescriptor?
if (!name.sameAsBuiltinMethodWithErasedValueParameters) return null }
return firstOverridden { it.hasErasedValueParametersInJava } as FunctionDescriptor?
}
private fun CallableMemberDescriptor.firstOverridden( private fun CallableMemberDescriptor.firstOverridden(
predicate: (CallableMemberDescriptor) -> Boolean predicate: (CallableMemberDescriptor) -> Boolean
@@ -122,14 +123,13 @@ enum class SpecialSignatureInfo(val signature: String?) {
GENERIC_PARAMETER(null) GENERIC_PARAMETER(null)
} }
val CallableMemberDescriptor.specialSignatureInfo: SpecialSignatureInfo? fun CallableMemberDescriptor.getSpecialSignatureInfo(): SpecialSignatureInfo? {
get() { val builtinFqName = firstOverridden { it is FunctionDescriptor && it.hasErasedValueParametersInJava }?.fqNameOrNull()
val builtinFqName = firstOverridden { it is FunctionDescriptor && it.hasErasedValueParametersInJava }?.fqNameOrNull() ?: return null
?: return null
return when (builtinFqName) { return when (builtinFqName) {
in BUILTIN_METHODS_ERASED_COLLECTION_PARAMETER_FQ_NAMES -> SpecialSignatureInfo.ONE_COLLECTION_PARAMETER in BUILTIN_METHODS_ERASED_COLLECTION_PARAMETER_FQ_NAMES -> SpecialSignatureInfo.ONE_COLLECTION_PARAMETER
in BUILTIN_METHODS_GENERIC_PARAMETERS_FQ_NAMES -> SpecialSignatureInfo.GENERIC_PARAMETER in BUILTIN_METHODS_GENERIC_PARAMETERS_FQ_NAMES -> SpecialSignatureInfo.GENERIC_PARAMETER
else -> error("Unexpected kind of special builtin: $builtinFqName") else -> error("Unexpected kind of special builtin: $builtinFqName")
}
} }
}
@@ -106,7 +106,7 @@ public class LazyJavaClassMemberScope(
= properties.any { property -> doesClassOverridesProperty(property) } = properties.any { property -> doesClassOverridesProperty(property) }
private fun PropertyDescriptor.findGetterOverride(): JavaMethodDescriptor? { private fun PropertyDescriptor.findGetterOverride(): JavaMethodDescriptor? {
val getterName = getter?.builtinSpecialOverridden?.builtinSpecialPropertyAccessorName ?: JvmAbi.getterName(name.asString()) val getterName = getter?.getBuiltinSpecialOverridden()?.getBuiltinSpecialPropertyAccessorName() ?: JvmAbi.getterName(name.asString())
return memberIndex().findMethodsByName(Name.identifier(getterName)).firstNotNullResult factory@{ return memberIndex().findMethodsByName(Name.identifier(getterName)).firstNotNullResult factory@{
javaMethod -> javaMethod ->
val descriptor = resolveMethodToFunctionDescriptor(javaMethod) val descriptor = resolveMethodToFunctionDescriptor(javaMethod)
@@ -273,7 +273,7 @@ public class LazyJavaClassMemberScope(
): JavaMethodDescriptor? { ): JavaMethodDescriptor? {
val overriddenCandidates = val overriddenCandidates =
getFunctionsFromSupertypes(methodDescriptor.name).map { it.overriddenBuiltinFunctionWithErasedValueParametersInJava }.filterNotNull() getFunctionsFromSupertypes(methodDescriptor.name).map { it.getOverriddenBuiltinFunctionWithErasedValueParametersInJava() }.filterNotNull()
if (overriddenCandidates.isEmpty()) return null if (overriddenCandidates.isEmpty()) return null