046189087a
Implemented unqualified 'super' type resolution (in BasicExpressionTypingVisitor). No overload resolution of any kind is involved. Corresponding supertype is determined by the expected member name only: - 'super.foo(...)' - function or property (of possibly callable type) 'foo' - 'super.x' - property 'x' Supertype should provide a non-abstract implementation of such member. As a fall-back solution for diagnostics purposes, consider supertypes with abstract implementation of such member. Diagnostics: - AMBIGUOUS_SUPER on 'super', if multiple possible supertypes are available; - ABSTRACT_SUPER_CALL on selector expression, if the only available implementation is abstract. #KT-5963 Fixed
30 lines
582 B
Kotlin
Vendored
30 lines
582 B
Kotlin
Vendored
interface Interface {
|
|
fun foo(x: Int): Int
|
|
}
|
|
|
|
fun withLocalClasses(param: Int): Interface {
|
|
open class LocalBase {
|
|
open val param: Int
|
|
get() = 100
|
|
}
|
|
|
|
interface LocalInterface : Interface {
|
|
override fun foo(x: Int): Int =
|
|
x + param
|
|
}
|
|
|
|
return object : LocalBase(), LocalInterface {
|
|
override fun foo(x: Int): Int =
|
|
x + super.param
|
|
}
|
|
|
|
}
|
|
|
|
fun box(): String {
|
|
val t = withLocalClasses(1)
|
|
|
|
val test1 = t.foo(10)
|
|
if (test1 != 110) return "Fail: t.foo(10)==$test1"
|
|
|
|
return "OK"
|
|
} |