Get rid of excess method in compiled inline class with custom equals

^KT-54501: Fixed
This commit is contained in:
vladislav.grechko
2022-10-17 16:42:18 +02:00
committed by teamcity
parent 70c2f2b86f
commit c990bbb26c
8 changed files with 204 additions and 34 deletions
@@ -1308,6 +1308,10 @@ fun IrBuiltIns.getKFunctionType(returnType: IrType, parameterTypes: List<IrType>
fun IdSignature?.isComposite(): Boolean =
this is IdSignature.CompositeSignature
val IrFunction.overridesEqualsFromAny
get() = name == OperatorNameConventions.EQUALS && valueParameters.size == 1 && valueParameters[0].type.isNullableAny()
&& contextReceiverParametersCount == 0 && extensionReceiverParameter == null
val IrFunction.isTypedEquals: Boolean
get() {
val parentClass = parent as? IrClass ?: return false
return name == OperatorNameConventions.EQUALS && returnType.isBoolean() && valueParameters.size == 1
&& (valueParameters[0].type.classFqName?.run { parentClass.hasEqualFqName(this) } ?: false)
&& contextReceiverParametersCount == 0 && extensionReceiverParameter == null && parentClass.isValue
}