Minor. Convert some properties to functions
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
+23
-23
@@ -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")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
+2
-2
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user