FIR: Rework FirRegularTowerDataContexts

- Get rid of SPECIAL mode (just left REGULAR and class-related instead)
- Clear naming
- Restore contexts after lambda/callable reference are processed

The test has been failing before this change because after
callable reference is resolved, its tower data context has been left
erroneously in the SPECIAL-related entry
This commit is contained in:
Denis.Zharkov
2022-06-02 18:27:29 +03:00
committed by teamcity
parent 521d6c307c
commit eae673233b
8 changed files with 104 additions and 44 deletions
@@ -0,0 +1,21 @@
// SKIP_TXT
fun <T> T.myApply(block: T.() -> Unit): T = this
fun bar(): Int = 1
interface A : C
interface B : C
interface C {
fun baz()
}
fun Any.foo() = myApply {
when (this) {
is A -> ::bar
is B -> ::bar
else -> throw RuntimeException()
}
<!UNRESOLVED_REFERENCE!>baz<!>() // Smart cast should work
}