[FIR] Relax incompatibleEnumAndUnrelatedInterfaceThroughTypeParameter

This commit is contained in:
Nikolay Lunyak
2023-10-18 18:04:33 +03:00
committed by Space Team
parent 3058f2eaff
commit c6bec2fa75
2 changed files with 4 additions and 4 deletions
@@ -53,9 +53,9 @@ object FirEqualityCompatibilityChecker : FirEqualityOperatorCallChecker() {
// sees a non-empty intersection and none of the
// types is an enum, but intersections in K1
// work differently from intersections in K2.
val isCaseMissedByK1 = (l.originalTypeInfo.isEnumClass == r.originalTypeInfo.isEnumClass)
&& l.originalTypeInfo.isLiterallyTypeParameter
&& r.originalTypeInfo.isLiterallyTypeParameter
val isCaseMissedByK1 = (l.originalTypeInfo.isLiterallyTypeParameter && r.originalTypeInfo.isLiterallyTypeParameter)
|| (l.originalTypeInfo.isLiterallyTypeParameter && r.originalTypeInfo.isEnumClass)
|| (l.originalTypeInfo.isEnumClass && r.originalTypeInfo.isLiterallyTypeParameter)
val replicateK1Behavior = !context.languageVersionSettings.supportsFeature(LanguageFeature.ReportErrorsForComparisonOperators)
return reporter.reportInapplicabilityDiagnostic(
@@ -107,6 +107,6 @@ interface A
enum class G : B
fun <I : A> incompatibleEnumAndUnrelatedInterfaceThroughTypeParameter(x: G?, i: I?) {
<!INCOMPATIBLE_ENUM_COMPARISON_ERROR!>x == i<!>
<!INCOMPATIBLE_ENUM_COMPARISON!>x == i<!>
}