FIR. Refactor smart-cast representation in FIR tree

Make smart-casts non-transparent expression without delegation
to underlying FirQualifiedAccessExpression, as children delegation in
fir tree has unclear semantics
Remove two different kinds of tree nodes for smart-casts
This commit is contained in:
Simon Ogorodnik
2022-08-02 00:49:24 +02:00
committed by teamcity
parent bc9db58b3c
commit 513af2dfbc
154 changed files with 9573 additions and 9320 deletions
@@ -0,0 +1,18 @@
interface Foo {
fun Bar.foo()
}
interface Bar {}
inline fun <T, R> myWith(argument: T, lambda: T.() -> R): R {
argument.lambda()
}
fun Any.action(other: Any) {
if (this is Foo) {
with(other) {
this as Bar
<expr>foo</expr>()
}
}
}
@@ -0,0 +1,7 @@
expression: foo
isStable: null
smartCastType: null
receiver: DISPATCH
smartCastType: Foo
receiver: EXTENSION
smartCastType: Bar