[LL FIR] get rid of on-air resolve of partial type qualifiers

It's very slow and leads to performance problems (see KT-58125)

Instead, we do the following:

- For a fully resolved type qualifier, when we want to resolve its part,
 we are looking for the corresponding symbol by traversing nested classes
 bottom up.
 - For an error qualifier, we are trying to resolve the maximum possible
  qualifier in the types transformer where all the type scopes are
  already available.

^KT-58125 fixed
This commit is contained in:
Ilya Kirillov
2023-05-27 15:11:20 +02:00
committed by Space Team
parent 51cf0ce3e5
commit 481962d5f6
42 changed files with 600 additions and 33 deletions
@@ -0,0 +1,3 @@
FILE: incompleteUserType.kt
public final fun foo(a: <ERROR TYPE REF: Incomplete user type>): R|kotlin/Unit| {
}
@@ -0,0 +1 @@
fun foo(a : <!UNRESOLVED_REFERENCE!>Unresolved<!>.<!SYNTAX!><!>) {}
@@ -0,0 +1,9 @@
FILE: incompleteUserTypeWithUnresovledTypeArgument.kt
public final class A<T> : R|kotlin/Any| {
public constructor<T>(): R|A<T>| {
super<R|kotlin/Any|>()
}
}
public final fun foo(a: <ERROR TYPE REF: Incomplete user type>): R|kotlin/Unit| {
}
@@ -0,0 +1,3 @@
class A<T>
fun foo(a : A<<!UNRESOLVED_REFERENCE!>Unresolved<!>>.<!SYNTAX!><!>) {}