Prohibit implicit overrides with lesser visibility

A non-abstract super-declaration is allowed to stand as 'an implementation' of
a fake override only if its visibility is not less than visibilities of all
other super-declarations

 #KT-2491 Fixed
This commit is contained in:
Alexander Udalov
2014-04-14 18:32:03 +04:00
parent 1706bd4a00
commit 3c3d120004
5 changed files with 40 additions and 13 deletions
@@ -0,0 +1,11 @@
trait T {
public fun foo()
}
open class C {
protected fun foo() {}
}
class <!CANNOT_INFER_VISIBILITY!>D<!> : C(), T
val obj: C = <!CANNOT_INFER_VISIBILITY!>object<!> : C(), T {}