diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ActualFakeOverridesAdder.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ActualFakeOverridesAdder.kt index 59793db7c85..c245b91b8d8 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ActualFakeOverridesAdder.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ActualFakeOverridesAdder.kt @@ -97,7 +97,6 @@ internal class ActualFakeOverridesAdder( superMember = memberFromSupertype, subMember = it, checkIsInlineFlag = false, - checkReturnType = false ).result == OverridingUtil.OverrideCompatibilityInfo.Result.OVERRIDABLE } as? IrOverridableDeclaration diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt index 283cafbe382..5693a0cdac6 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt @@ -249,7 +249,7 @@ class IrOverridingUtil( for (fromSupertype in descriptorsFromSuper) { // Note: We do allow overriding multiple FOs at once one of which is `isInline=true`. - when (isOverridableBy(fromSupertype, fromCurrent, checkIsInlineFlag = true, checkReturnType = false).result) { + when (isOverridableBy(fromSupertype, fromCurrent, checkIsInlineFlag = true).result) { OverrideCompatibilityInfo.Result.OVERRIDABLE -> { val isVisibleFake = fromSupertype.visibility != DescriptorVisibilities.INVISIBLE_FAKE if (isVisibleFake && isVisibleForOverride(fromCurrent, fromSupertype.original)) @@ -608,14 +608,12 @@ class IrOverridingUtil( candidateDescriptor, overriderDescriptor, checkIsInlineFlag = false, - checkReturnType = false ).result val result2 = isOverridableBy( overriderDescriptor, candidateDescriptor, checkIsInlineFlag = false, - checkReturnType = false ).result return if (result1 == result2) result1 else OverrideCompatibilityInfo.Result.INCOMPATIBLE @@ -625,9 +623,8 @@ class IrOverridingUtil( superMember: IrOverridableMember, subMember: IrOverridableMember, checkIsInlineFlag: Boolean, - checkReturnType: Boolean ): OverrideCompatibilityInfo { - return typeSystem.isOverridableByWithoutExternalConditions(superMember, subMember, checkIsInlineFlag, checkReturnType) + return typeSystem.isOverridableByWithoutExternalConditions(superMember, subMember, checkIsInlineFlag) // The frontend goes into external overridability condition details here, but don't deal with them in IR (yet?). } } @@ -636,7 +633,6 @@ fun IrTypeSystemContext.isOverridableByWithoutExternalConditions( superMember: IrOverridableMember, subMember: IrOverridableMember, checkIsInlineFlag: Boolean, - checkReturnType: Boolean ): OverrideCompatibilityInfo { val superTypeParameters: List val subTypeParameters: List @@ -711,15 +707,6 @@ fun IrTypeSystemContext.isOverridableByWithoutExternalConditions( ) return incompatible("Value parameter type mismatch") } - if (checkReturnType) { - if (!AbstractTypeChecker.isSubtypeOf( - typeCheckerState, - subMember.returnType, - superMember.returnType - ) - ) return conflict("Return type mismatch") - } - return success() }