[FIR] Refactor effective visibility calculation

Before this commit, we had effective visibility as a part of FIR status,
so it was integrated into the full pipeline. In this commit,
we introduced "effective visibility as a service" which is now used
only by exposed visibility checker. This allows us to make the thing
universal for all FIR nodes, including nodes for Java / deserialized.
This commit is contained in:
Nick
2020-07-15 17:23:21 +03:00
committed by Mikhail Glukhikh
parent b15e32936e
commit 7145caca40
95 changed files with 713 additions and 484 deletions
@@ -5,11 +5,11 @@ FILE: anonymousInDelegate.kt
}
public final val x: R|kotlin/Int|by R|kotlin/lazy|<R|kotlin/Int|>(<L> = lazy@fun <anonymous>(): R|kotlin/Int| {
lval foo: R|<anonymous>| = object : R|Foo| {
private[local] constructor(): R|<anonymous>| {
private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>()
}
public[local] final override fun bar(): R|kotlin/Int| {
public final override fun bar(): R|kotlin/Int| {
^bar Int(42)
}
@@ -24,15 +24,15 @@ FILE: delegateWithAnonymousObject.kt
public final var issueListView: R|IssueListView|by this@R|/IssuesListUserProfile|.R|/delegate|<R|IssuesListUserProfile|, R|IssuesListUserProfile|, R|IssueListView|>(<L> = delegate@fun <anonymous>(): R|kotlin/properties/ReadWriteProperty<IssuesListUserProfile, IssueListView>| {
^ object : R|kotlin/properties/ReadWriteProperty<IssuesListUserProfile, IssueListView>| {
private[local] constructor(): R|<anonymous>| {
private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>()
}
public[local] final override fun getValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|): R|IssueListView| {
public final override fun getValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|): R|IssueListView| {
^getValue R|/IssueListView.IssueListView|()
}
public[local] final override fun setValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|, value: R|IssueListView|): R|kotlin/Unit| {
public final override fun setValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|, value: R|IssueListView|): R|kotlin/Unit| {
^setValue R|/IssueListView.IssueListView|().R|/IssueListView.updateFrom|(R|<local>/value|)
}
@@ -27,17 +27,17 @@ FILE: hashTableWithForEach.kt
}
private final class Entry<K, V> : R|kotlin/collections/MutableMap.MutableEntry<K, V>| {
public[private] constructor<K, V>(key: R|K|, value: R|V|): R|SomeHashTable.Entry<K, V>| {
public constructor<K, V>(key: R|K|, value: R|V|): R|SomeHashTable.Entry<K, V>| {
super<R|kotlin/Any|>()
}
public[private] final override val key: R|K| = R|<local>/key|
public final override val key: R|K| = R|<local>/key|
public get(): R|K|
public[private] final override val value: R|V| = R|<local>/value|
public final override val value: R|V| = R|<local>/value|
public get(): R|V|
public[private] final override fun setValue(newValue: R|V|): R|V| {
public final override fun setValue(newValue: R|V|): R|V| {
^setValue throw R|java/lang/UnsupportedOperationException.UnsupportedOperationException|()
}
@@ -15,7 +15,7 @@ fun test(e: MyException, stream: PrintStream) {
val result = e.getLocalizedMessage()
}
fun test(e: YourException, stream: PrintStream) {
fun test(<!EXPOSED_PARAMETER_TYPE!>e: YourException<!>, stream: PrintStream) {
e.printStackTrace()
e.printStackTrace(stream)
val result = e.getLocalizedMessage()
@@ -2,14 +2,14 @@ FILE: problems.kt
public final val sb: R|java/lang/StringBuilder| = R|java/lang/StringBuilder.StringBuilder|()
public get(): R|java/lang/StringBuilder|
public final val o: R|<anonymous>| = object : R|kotlin/Any| {
private[local] constructor(): R|<anonymous>| {
private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>()
}
public[local] final val name: R|kotlin/String| = String(123)
public final val name: R|kotlin/String| = String(123)
public get(): R|kotlin/String|
public[local] final fun test(): R|kotlin/Unit| {
public final fun test(): R|kotlin/Unit| {
this@R|/<anonymous>|.R|/<anonymous>.name|
}
@@ -18,7 +18,7 @@ FILE: problems.kt
public get(): R|<anonymous>|
public final fun test(): R|kotlin/Unit| {
local final class Local : R|kotlin/Any| {
public[local] constructor(): R|Local| {
public constructor(): R|Local| {
super<R|kotlin/Any|>()
}