b72293883d
Previously we inferred "open" if there was at least one open member in the hierarchy. However, that's not correct when that member is overridden by another member in the hierarchy which is abstract. This led to incorrect code being accepted by the front-end, and an exception during the bridge generation #KT-12467 Fixed
19 lines
299 B
Kotlin
Vendored
19 lines
299 B
Kotlin
Vendored
interface A {
|
|
fun foo() {}
|
|
}
|
|
|
|
interface B : A {
|
|
abstract override fun foo()
|
|
}
|
|
|
|
interface C : A {
|
|
abstract override fun foo()
|
|
}
|
|
|
|
interface D : A {
|
|
override fun foo() = super.foo()
|
|
}
|
|
|
|
// Fake override Z#foo should be open
|
|
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class Z<!> : B, C, D
|