Fix ultraLightClass method argument types erasure
Fix IdeRegression.testImplementingMap test
This commit is contained in:
@@ -377,7 +377,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
||||
val bindingContext = typeReference.analyze()
|
||||
|
||||
val superClassDescriptor = CodegenUtil.getSuperClassBySuperTypeListEntry(superTypeEntry, bindingContext) ?: return
|
||||
val delegationType = superTypeEntry.delegateExpression.kotlinType(bindingContext) ?: return
|
||||
val delegationType = superTypeEntry.delegateExpression.kotlinType(bindingContext)
|
||||
|
||||
for (delegate in DelegationResolver.getDelegates(classDescriptor, superClassDescriptor, delegationType).keys) {
|
||||
when (delegate) {
|
||||
|
||||
@@ -94,15 +94,13 @@ internal abstract class KtUltraLightMethod(
|
||||
|
||||
abstract val methodDescriptor: FunctionDescriptor?
|
||||
|
||||
private val lazyTypeErasure = lazyPub {
|
||||
val checkNeedToErasureParametersTypes: Boolean by lazyPub {
|
||||
methodDescriptor
|
||||
?.getSpecialSignatureInfo()
|
||||
?.isObjectReplacedWithTypeParameter
|
||||
?.let { it.valueParametersSignature !== null }
|
||||
?: false
|
||||
}
|
||||
|
||||
val checkNeedToErasureParametersTypes: Boolean by lazyTypeErasure
|
||||
|
||||
override fun equals(other: Any?): Boolean = this === other
|
||||
|
||||
override fun hashCode(): Int = name.hashCode()
|
||||
|
||||
@@ -18,5 +18,7 @@ abstract class SmartSet<T> private constructor() : AbstractMutableSet<T>() {
|
||||
return true
|
||||
}
|
||||
|
||||
/* Should erasure T but UL classes does not support it in this case
|
||||
override fun contains(element: T): Boolean = true
|
||||
*/
|
||||
}
|
||||
Reference in New Issue
Block a user