Introduce PureReifiable annotation

It prevents reporting unsafe substitution warning on expressions
like 'arrayOf(arrayOf(""))'
This commit is contained in:
Denis Zharkov
2016-01-21 19:09:46 +03:00
parent 32755a269c
commit 6c0cd70a22
16 changed files with 137 additions and 21 deletions
@@ -0,0 +1,12 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
inline fun <reified @kotlin.internal.PureReifiable T> foo(x: T) {}
fun test() {
foo<List<String>>(listOf(""))
foo(listOf(""))
foo<Array<String>>(arrayOf(""))
foo(arrayOf(""))
}
@@ -0,0 +1,4 @@
package
@kotlin.Suppress(names = {"INVISIBLE_MEMBER", "INVISIBLE_REFERENCE"}) public inline fun </*0*/ reified @kotlin.internal.PureReifiable() T> foo(/*0*/ x: T): kotlin.Unit
public fun test(): kotlin.Unit
@@ -0,0 +1,18 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
fun test() {
arrayOf<List<String>>(listOf(""))
arrayOf(listOf(""))
arrayOf<Array<String>>(arrayOf(""))
arrayOf(arrayOf(""))
arrayOfNulls<Array<String>>(1)
Array<Array<String>>(1) { arrayOf("") }
Array(1) { arrayOf("") }
Array(1) { arrayOf("") }
emptyArray<Array<String>>()
val x: Array<Array<String>> = emptyArray()
}
@@ -0,0 +1,3 @@
package
public fun test(): kotlin.Unit