KT-4198 On covariant projection, do not throw whole var's away
#KT-4198 Fixed
This commit is contained in:
+11
@@ -0,0 +1,11 @@
|
||||
trait Tr<T> {
|
||||
var v: Tr<T>
|
||||
}
|
||||
|
||||
fun test(t: Tr<*>) {
|
||||
t.v = t
|
||||
val v = TypeOf(t.v)
|
||||
v: TypeOf<Tr<*>>
|
||||
}
|
||||
|
||||
class TypeOf<T>(t: T)
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
trait Tr<T> {
|
||||
var v: T
|
||||
}
|
||||
|
||||
fun test(t: Tr<*>) {
|
||||
<!SETTER_PROJECTED_OUT!>t.v<!> = null!!
|
||||
val v = TypeOf(t.v)
|
||||
v: TypeOf<Any?>
|
||||
}
|
||||
|
||||
class TypeOf<T>(t: T)
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
trait Tr<T> {
|
||||
var v: T
|
||||
}
|
||||
|
||||
fun test(t: Tr<out String>) {
|
||||
<!SETTER_PROJECTED_OUT!>t.v<!> += null!!
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
trait Tr<T> {
|
||||
var v: T
|
||||
}
|
||||
|
||||
class C {
|
||||
fun plusAssign(<!UNUSED_PARAMETER!>c<!>: C) {}
|
||||
}
|
||||
|
||||
fun test(t: Tr<out C>) {
|
||||
// No error because no real assignment happens
|
||||
t.v += null!!
|
||||
}
|
||||
Reference in New Issue
Block a user