Implemented missed checks for local functions #KT-10449 Fixed

Relevant code/test fixes
This commit is contained in:
Mikhail Glukhikh
2015-12-23 11:35:25 +03:00
parent 15746cbf56
commit 99a32b93fb
14 changed files with 58 additions and 38 deletions
@@ -1,17 +1,19 @@
interface I
fun foo() {
abstract class T
<selection>fun <A, B, C> bar1(a: A, b: B, c: C): A where B: A, C: B, C: T = c</selection>
<selection>fun <A, B, C> bar1(a: A, b: B, c: C): I where B: A, C: I, C: T = c</selection>
fun <X, Y: X, Z> bar2(x: X, y: Y, z: Z): X where Z: Y, Z: T = z
fun <X, Y: X, Z> bar2(x: X, y: Y, z: Z): I where Z: I, Z: T = z
fun <X, Y, Z: Y> bar3(x: X, y: Y, z: Z): X where Y: X, Z: T = z
fun <X, Y, Z: I> bar3(x: X, y: Y, z: Z): T where Y: X, Z: T = z
fun <X, Y: X, Z: Y> bar4(x: X, y: Y, z: Z): X where Z: T = z
fun <X, Y: X, Z: I> bar4(x: X, y: Y, z: Z): T where Z: T = z
fun <X, Y: X, Z: T> bar5(x: X, y: Y, z: Z): X where Z: Y = z
fun <X, Y: X, Z: T> bar5(x: X, y: Y, z: Z): I where Z: I = z
fun <X, Z: Y, Y> bar6(x: X, y: Y, z: Z): X where Y: X, Z: T = z
fun <X, Z: I, Y> bar6(x: X, y: Y, z: Z): I where Y: X, Z: T = z
fun <X, Y: T, Z> bar7(x: X, y: Y, z: Z): X where Y: X, Z: Y, Z: T = z
fun <X, Y: T, Z> bar7(x: X, y: Y, z: Z): T where Y: I, Z: I, Z: T = z
}
@@ -1,9 +1,5 @@
fun <A, B, C> bar1(a: A, b: B, c: C): A where B: A, C: B, C: T = c
fun <A, B, C> bar1(a: A, b: B, c: C): I where B: A, C: I, C: T = c
fun <X, Y: X, Z> bar2(x: X, y: Y, z: Z): X where Z: Y, Z: T = z
fun <X, Y: X, Z> bar2(x: X, y: Y, z: Z): I where Z: I, Z: T = z
fun <X, Y, Z: Y> bar3(x: X, y: Y, z: Z): X where Y: X, Z: T = z
fun <X, Y: X, Z: Y> bar4(x: X, y: Y, z: Z): X where Z: T = z
fun <X, Y: X, Z: T> bar5(x: X, y: Y, z: Z): X where Z: Y = z
fun <X, Y: X, Z: T> bar5(x: X, y: Y, z: Z): I where Z: I = z