Don't allow fake override to inherit implementation with wrong return type

#KT-4763 Fixed
This commit is contained in:
Alexander Udalov
2014-03-28 23:09:52 +04:00
parent 05a04293ab
commit 9760f30c99
10 changed files with 128 additions and 18 deletions
@@ -0,0 +1,11 @@
trait A {
fun f(): String = "string"
}
open class B {
open fun f(): CharSequence = "charSequence"
}
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>C<!> : B(), A
val obj: A = <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>object<!> : B(), A {}
@@ -0,0 +1,11 @@
trait A {
fun f(): String
}
open class B {
open fun f(): CharSequence = "charSequence"
}
class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>C<!> : B(), A
val d: A = <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>object<!> : B(), A {}
@@ -0,0 +1,11 @@
trait P {
var f: Number
}
open class Q {
val x: Int = 42
}
class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>R<!> : P, Q()
val s: Q = <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>object<!> : Q(), P {}