KT-10939 CANNOT_COMPLETE_RESOLVE for inherited generic interface method

'original' for value parameters of fake override is not a value parameter of unsubstituted fake override.
Match value parameters by index.
This commit is contained in:
Dmitry Petrov
2016-02-05 16:02:47 +03:00
parent 9f786c00a7
commit 5968ce96df
7 changed files with 130 additions and 4 deletions
+28
View File
@@ -0,0 +1,28 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
object X1
object X2
interface Base {
fun <T1> foo(a: T1): X1
fun <T2> foo(a: T2, vararg args: Any): X2
}
interface Derived : Base
fun testDerived(base: Base, derived: Derived) {
val test1: X1 = base.foo("")
val test2: X1 = derived.foo("")
}
interface GenericBase<T> {
fun <T1> foo(x: T, a: T1): X1
}
interface SpecializedDerived : GenericBase<String> {
fun <T2> foo(x: String, a: T2, vararg args: Any): X2
}
fun testSpecializedDerived(derived: SpecializedDerived) {
val test1: X1 = derived.foo("", "")
}