[FIR] Implement super resolve as a particular tower resolver case

This commit is contained in:
Mikhail Glukhikh
2020-01-29 12:41:45 +03:00
parent ee020ef290
commit 71b0840ef9
42 changed files with 211 additions and 71 deletions
@@ -11,28 +11,28 @@ interface GenericBaseInterface<T> {
class GenericDerivedClass<T> : GenericBaseClass<T>(), GenericBaseInterface<T> {
override fun foo(x: T): T = super.foo(x)
override fun bar(x: T): T = super.<!UNRESOLVED_REFERENCE!>bar<!>(x)
override fun bar(x: T): T = super.bar(x)
override fun ambiguous(x: T): T =
super.ambiguous(x)
super.<!AMBIGUITY!>ambiguous<!>(x)
}
class SpecializedDerivedClass : GenericBaseClass<Int>(), GenericBaseInterface<String> {
override fun foo(x: Int): Int = super.foo(x)
override fun bar(x: String): String = super.<!UNRESOLVED_REFERENCE!>bar<!>(x)
override fun bar(x: String): String = super.bar(x)
override fun ambiguous(x: String): String =
super.<!INAPPLICABLE_CANDIDATE!>ambiguous<!>(x)
super.ambiguous(x)
override fun ambiguous(x: Int): Int =
super.ambiguous(x)
}
class MixedDerivedClass<T> : GenericBaseClass<Int>(), GenericBaseInterface<T> {
override fun foo(x: Int): Int = super.foo(x)
override fun bar(x: T): T = super.<!UNRESOLVED_REFERENCE!>bar<!>(x)
override fun bar(x: T): T = super.bar(x)
override fun ambiguous(x: Int): Int =
super.ambiguous(x)
override fun ambiguous(x: T): T =
super.<!INAPPLICABLE_CANDIDATE!>ambiguous<!>(x)
super.ambiguous(x)
}