Introduce UnsafeVariance annotation

This commit is contained in:
Denis Zharkov
2015-10-07 10:28:11 +03:00
parent 013b257347
commit e800be18c6
8 changed files with 54 additions and 1 deletions
@@ -0,0 +1,17 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
class A<out T, in E> {
fun foo(x: @UnsafeVariance T) {}
fun foo(x: @UnsafeVariance T, y: List<@UnsafeVariance T>): @UnsafeVariance E = null!!
fun bar(): List<@UnsafeVariance E> = null!!
}
fun foo(x: A<String, Any?>, cs: CharSequence, ls: List<CharSequence>) {
val y: A<CharSequence, String> = x
y.foo(cs)
val s: String = y.foo(cs, ls)
val ls2: List<String> = y.bar()
}