Support new form of definitely non-nullable types: T & Any

^KT-26245 In Progress
This commit is contained in:
Denis.Zharkov
2021-08-09 12:10:51 +03:00
committed by teamcityserver
parent cdd8d1c163
commit 302eacbf59
53 changed files with 2139 additions and 196 deletions
+10 -10
View File
@@ -1,33 +1,33 @@
package test
interface A<T> {
fun foo(x: T!!)
fun foo(x: T & Any)
val w: T!!
val w: T & Any
}
class B<X>(r: X!!)
class B<X>(r: X & Any)
fun <K> inside() {
object : A<K> {
override fun foo(x: K!!) {
override fun foo(x: K & Any) {
}
override val w: K!!
override val w: K & Any
get() = TODO("")
}
}
fun <F> bar1(x: F!!) {}
fun <F> bar1(x: F & Any) {}
fun <F> bar2(x: F) = x!!
val <E> E.nn: E!! get() = this!!
val <E> E.nn: E & Any get() = this!!
class Outer {
abstract class R1<T, F : T!!> : A<T!!>
abstract class R2<T, F : T!!> : A<T>
abstract class R1<T, F : T & Any> : A<T & Any>
abstract class R2<T, F : T & Any> : A<T>
abstract class W<T> : A<T>
}
typealias Alias<R> = A<R!!>
typealias Alias<R> = A<R & Any>