[FIR] Rework resolution of declaration statuses

There is introduced algorithm of resolution with jumps: before
  resolution of some class we resolve all status of members of its
  supertypes, so we can properly determine inherited visibility
  and modifiers
This commit is contained in:
Dmitriy Novozhilov
2020-09-28 15:30:51 +03:00
parent 0b8116dff0
commit bf1a00c73a
35 changed files with 858 additions and 180 deletions
@@ -15,5 +15,5 @@ class B : A() {
}
fun test(b: B) {
b.foo("")
}
b.<!HIDDEN!>foo<!>("")
}
@@ -4,11 +4,11 @@ FILE: main.kt
super<R|A|>()
}
public final override fun foo(s: R|kotlin/String|): R|kotlin/Any?| {
protected final override fun foo(s: R|kotlin/String|): R|kotlin/Any?| {
^foo Null(null)
}
}
public final fun test(b: R|B|): R|kotlin/Unit| {
R|<local>/b|.R|/B.foo|(String())
R|<local>/b|.<HIDDEN: /B.foo is invisible>#(String())
}