Type variable with non-trivial upper bound cannot capture 'in' projection

This commit is contained in:
Svetlana Isakova
2014-12-11 18:49:16 +03:00
parent 8b0707b15d
commit 1f6f607f40
6 changed files with 50 additions and 2 deletions
@@ -0,0 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
// !CHECK_TYPE
fun <T: Any> bar(a: Array<T>): Array<T?> = null!!
fun test1(a: Array<in Int>) {
val r: Array<in Int?> = <!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>bar<!>(a)
<!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>bar<!>(a)
}
fun <T: Any> foo(l: Array<T>): Array<Array<T?>> = null!!
fun test2(a: Array<in Int>) {
val r: Array<out Array<in Int?>> = <!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>foo<!>(a)
<!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>foo<!>(a)
}
@@ -0,0 +1,6 @@
package
internal fun </*0*/ T : kotlin.Any> bar(/*0*/ a: kotlin.Array<T>): kotlin.Array<T?>
internal fun </*0*/ T : kotlin.Any> foo(/*0*/ l: kotlin.Array<T>): kotlin.Array<kotlin.Array<T?>>
internal fun test1(/*0*/ a: kotlin.Array<in kotlin.Int>): kotlin.Unit
internal fun test2(/*0*/ a: kotlin.Array<in kotlin.Int>): kotlin.Unit