Report an error when variance is specified for a function or property type parameter

This commit is contained in:
Andrey Breslav
2012-11-22 11:03:09 +04:00
parent d8c9d19bd7
commit 12fd07af08
20 changed files with 58 additions and 72 deletions
@@ -0,0 +1,17 @@
fun <<!VARIANCE_ON_FUNCTION_OR_PROPERTY_PARAMETER!>in<!> T> f() {
}
fun <<!VARIANCE_ON_FUNCTION_OR_PROPERTY_PARAMETER!>out<!> T> g() {
}
fun <<!VARIANCE_ON_FUNCTION_OR_PROPERTY_PARAMETER!>out<!> T, <!VARIANCE_ON_FUNCTION_OR_PROPERTY_PARAMETER!>in<!> X, Y> h() {
}
val <<!VARIANCE_ON_FUNCTION_OR_PROPERTY_PARAMETER!>out<!> T> T.x: Int
get() = 1
val <<!VARIANCE_ON_FUNCTION_OR_PROPERTY_PARAMETER!>in<!> T> T.y: Int
get() = 1
@@ -22,7 +22,7 @@ fun test() {
fun arrayList<T>(vararg values: T) : ArrayList<T> = values.toCollection(ArrayList<T>(values.size))
fun <in T, C: MutableCollection<in T>> Array<T>.toCollection(result: C) : C {
fun <T, C: MutableCollection<in T>> Array<T>.toCollection(result: C) : C {
for (element in this) result.add(element)
return result
}
@@ -12,4 +12,4 @@ fun test() {
//from library
fun arrayList<T>(vararg <!UNUSED_PARAMETER!>values<!>: T) : ArrayList<T> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
fun <in T> Iterable<T>.plus(<!UNUSED_PARAMETER!>elements<!>: Iterable<T>): List<T> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
fun <T> Iterable<T>.plus(<!UNUSED_PARAMETER!>elements<!>: Iterable<T>): List<T> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
@@ -35,7 +35,7 @@ fun <T, R, C: MutableCollection<in R>> Collection<T>.mapTo(result: C, transform
return result
}
fun <in T, C: MutableCollection<in T>> Array<T>.toCollection(result: C) : C {
fun <T, C: MutableCollection<in T>> Array<T>.toCollection(result: C) : C {
for (element in this) result.add(element)
return result
}
@@ -27,7 +27,7 @@ fun assertEquals(<!UNUSED_PARAMETER!>expected<!>: Any?, <!UNUSED_PARAMETER!>actu
fun arrayList<T>(vararg values: T) : ArrayList<T> = values.toCollection(ArrayList<T>(values.size))
fun <in T, C: MutableCollection<in T>> Array<T>.toCollection(result: C) : C {
fun <T, C: MutableCollection<in T>> Array<T>.toCollection(result: C) : C {
for (element in this) result.add(element)
return result
}