[NI] Avoid building controversial systems by clipping extra constraints
#KT-23854 Fixed
This commit is contained in:
+3
-3
@@ -11,7 +11,7 @@ fun <T> bind(r: Option<T>): Option<T> {
|
||||
// Ideally we should infer Option<T> here (see KT-10896)
|
||||
(<!OI;TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT!>if<!> (true) <!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>None()<!> else <!DEBUG_INFO_SMARTCAST!>r<!>) checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><Option<T>>() }
|
||||
// Works correctly
|
||||
if (true) None() else r
|
||||
if (true) None() else <!NI;DEBUG_INFO_SMARTCAST!>r<!>
|
||||
}
|
||||
else r
|
||||
}
|
||||
@@ -25,7 +25,7 @@ fun <T> bind2(r: Option<T>): Option<T> {
|
||||
}
|
||||
|
||||
fun <T, R> bind3(r: Option<T>): Option<T> {
|
||||
return <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>if (r is Some) {
|
||||
return <!NI;TYPE_MISMATCH!>if (r is Some) {
|
||||
// Diagnoses an error correctly
|
||||
if (true) <!OI;TYPE_MISMATCH!>None<R>()<!> else r
|
||||
}
|
||||
@@ -36,7 +36,7 @@ fun <T> bindWhen(r: Option<T>): Option<T> {
|
||||
return when (r) {
|
||||
is Some -> {
|
||||
// Works correctly
|
||||
if (true) None() else r
|
||||
if (true) None() else <!NI;DEBUG_INFO_SMARTCAST!>r<!>
|
||||
}
|
||||
else -> r
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user