Minor. Move hasRealKotlinSuperClassWithOverrideOf to descriptor.loader.java
This commit is contained in:
+28
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.
|
||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.getSpecialSignatureInfo
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.types.checker.TypeCheckingProcedure
|
||||
|
||||
object BuiltinSpecialProperties {
|
||||
private val PROPERTY_FQ_NAME_TO_JVM_GETTER_NAME_MAP = mapOf(
|
||||
@@ -227,6 +228,33 @@ private fun getBuiltinOverriddenThatAffectsJvmName(
|
||||
return null
|
||||
}
|
||||
|
||||
public fun ClassDescriptor.hasRealKotlinSuperClassWithOverrideOf(
|
||||
specialCallableDescriptor: CallableDescriptor
|
||||
): Boolean {
|
||||
val builtinContainerDefaultType = (specialCallableDescriptor.containingDeclaration as ClassDescriptor).defaultType
|
||||
|
||||
var superClassDescriptor = DescriptorUtils.getSuperClassDescriptor(this)
|
||||
|
||||
while (superClassDescriptor != null) {
|
||||
if (superClassDescriptor !is JavaClassDescriptor) {
|
||||
// Kotlin class
|
||||
|
||||
val doesOverrideBuiltinDeclaration =
|
||||
TypeCheckingProcedure.findCorrespondingSupertype(superClassDescriptor.defaultType, builtinContainerDefaultType) != null
|
||||
|
||||
if (doesOverrideBuiltinDeclaration) {
|
||||
val containingPackageFragment = DescriptorUtils.getParentOfType(superClassDescriptor, PackageFragmentDescriptor::class.java)
|
||||
if (containingPackageFragment === superClassDescriptor.builtIns.builtInsPackageFragment) return false
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
superClassDescriptor = DescriptorUtils.getSuperClassDescriptor(superClassDescriptor)
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// Util methods
|
||||
private val CallableMemberDescriptor.isFromJava: Boolean
|
||||
get() = propertyIfAccessor is JavaCallableMemberDescriptor && propertyIfAccessor.containingDeclaration is JavaClassDescriptor
|
||||
|
||||
Reference in New Issue
Block a user