Change Signature: Add support of type parameter substitutions in overriding members

This commit is contained in:
Alexey Sedunov
2014-12-02 14:02:15 +03:00
parent 250940c824
commit c917459926
29 changed files with 638 additions and 131 deletions
@@ -0,0 +1,23 @@
class U<A>
trait T<A, B> {
fun <caret>foofoofoo<C>(a: A, b: B, c: C): Int
}
abstract class T1<X, Y> : T<U<X>, U<Y>> {
override fun <C> foofoofoo(a: U<X>, b: U<Y>, c: C): Int {
throw UnsupportedOperationException()
}
}
abstract class T2<X> : T1<X, String>() {
override fun <C> foofoofoo(a: U<X>, b: U<String>, c: C): Int {
throw UnsupportedOperationException()
}
}
class T3 : T2<Any>() {
override fun foofoofoo<D>(a: U<Any>, b: U<String>, c: D): Int {
throw UnsupportedOperationException()
}
}