[FIR] Relax incompatibleEnumAndUnrelatedInterfaceThroughTypeParameter
This commit is contained in:
committed by
Space Team
parent
3058f2eaff
commit
c6bec2fa75
+3
-3
@@ -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(
|
||||
|
||||
+1
-1
@@ -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<!>
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user