K1: don't report assignment TYPE_MISMATCH in BI under feature ON
Related to KT-54004
This commit is contained in:
committed by
Space Team
parent
6c6d653e85
commit
8e48636b29
+60
@@ -0,0 +1,60 @@
|
||||
// WITH_REFLECT
|
||||
import kotlin.reflect.*
|
||||
|
||||
interface Foo<T : Any> {
|
||||
var a: T
|
||||
val b: Array<T>
|
||||
|
||||
fun accept(arg: T)
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class FooImpl<!><T : Any> : Foo<T>
|
||||
|
||||
fun bar(p: KMutableProperty0<Int>) {
|
||||
p.set(100)
|
||||
}
|
||||
|
||||
fun <T : Any> myBuilder(block: Foo<T>.() -> Unit): Foo<T> = FooImpl<T>().apply(block)
|
||||
|
||||
fun <T : Any> Foo<T>.change(block: Foo<T>.() -> Unit): Foo<T> {
|
||||
this.block()
|
||||
return this
|
||||
}
|
||||
|
||||
fun main(arg: Any, condition: Boolean) {
|
||||
val value = myBuilder {
|
||||
b[0] = 123
|
||||
a = 45
|
||||
<!STUB_TYPE_IN_RECEIVER_CAUSES_AMBIGUITY!>a<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY, OVERLOAD_RESOLUTION_AMBIGUITY_BECAUSE_OF_STUB_TYPES!>++<!>
|
||||
bar(::a)
|
||||
if (<!USELESS_IS_CHECK, USELESS_IS_CHECK!>a is Int<!>) {
|
||||
a = 67
|
||||
<!STUB_TYPE_IN_RECEIVER_CAUSES_AMBIGUITY!>a<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY, OVERLOAD_RESOLUTION_AMBIGUITY_BECAUSE_OF_STUB_TYPES!>--<!>
|
||||
bar(::a)
|
||||
}
|
||||
when (condition) {
|
||||
true -> a = 87
|
||||
false -> a = 65
|
||||
}
|
||||
val x by <!DELEGATE_SPECIAL_FUNCTION_AMBIGUITY!>a<!>
|
||||
|
||||
change {
|
||||
a = 99
|
||||
}
|
||||
}
|
||||
|
||||
val value2 = myBuilder {
|
||||
accept("")
|
||||
a = <!TYPE_MISMATCH!>45<!>
|
||||
when (condition) {
|
||||
true -> a = <!TYPE_MISMATCH!>87<!>
|
||||
false -> a = <!TYPE_MISMATCH!>65<!>
|
||||
}
|
||||
change {
|
||||
a = <!TYPE_MISMATCH!>99<!>
|
||||
}
|
||||
if (<!USELESS_IS_CHECK, USELESS_IS_CHECK!>a is Int<!>) {
|
||||
a = <!TYPE_MISMATCH!>67<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user