FIR: Reimplement implicit types calculator

Make it works through a single component tracking computation status
instead of storing it in the nodes
This commit is contained in:
Denis Zharkov
2020-01-23 11:35:56 +03:00
parent f256547cc8
commit c295f2dc25
11 changed files with 311 additions and 36 deletions
@@ -7,7 +7,7 @@ object Outer {
get() = 0
override fun get(index: Int): Char {
<!UNRESOLVED_REFERENCE!>checkSubtype<!><CharSequence>(x)
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><CharSequence>(x)
return ' '
}
@@ -17,7 +17,7 @@ object Outer {
}
}
set(q) {
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><CharSequence>(x)
checkSubtype<CharSequence>(x)
y = q
x = q
}
@@ -27,10 +27,10 @@ object Outer {
fun foo() {
x = y
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><CharSequence>(x)
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><CharSequence>(y)
checkSubtype<CharSequence>(x)
checkSubtype<CharSequence>(y)
x.<!UNRESOLVED_REFERENCE!>bar<!>()
y.<!UNRESOLVED_REFERENCE!>bar<!>()
x.bar()
y.bar()
}
}
@@ -10,8 +10,8 @@ class A {
val a get() = b
val b get() = a
val z1 get() = <!UNRESOLVED_REFERENCE!>id<!>(z1)
val z2 get() = <!UNRESOLVED_REFERENCE!>l<!>(z2)
val z1 get() = <!INAPPLICABLE_CANDIDATE!>id<!>(z1)
val z2 get() = <!INAPPLICABLE_CANDIDATE!>l<!>(z2)
val u get() = field
}