[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,7 @@
class Foo
class C {
val prop: <caret>Foo.Bar
}
@@ -0,0 +1,2 @@
Resolved to:
0: (in ROOT) class Foo
@@ -0,0 +1,7 @@
class Foo
class C {
val prop: <caret>Foo.Bar.
}
@@ -0,0 +1,9 @@
class Foo {
class Bar
}
class C {
val prop: <caret>Foo.Bar.Baz
}
@@ -0,0 +1,8 @@
class Foo {
class Bar
}
class C {
val prop: <caret>Foo.Bar.Baz.
}
@@ -0,0 +1,7 @@
class Foo
class C {
val prop: <caret>Foo.Bar.Baz
}
@@ -0,0 +1,9 @@
class Foo {
class Bar
}
class C {
val prop: <caret>Foo.Bar.Baz.Bazzzz
}
@@ -0,0 +1,7 @@
class Foo
class C {
val prop: <caret>Foo.Bar.Baz.
}
@@ -0,0 +1,9 @@
class Foo {
class Bar
}
class C {
val prop: Foo.<caret>Bar.Baz
}
@@ -0,0 +1,9 @@
class Foo {
class Bar
}
class C {
val prop: Foo.<caret>Bar.Baz.
}
@@ -0,0 +1,8 @@
class Foo {
class Bar
}
class C {
val prop: Foo.<caret>Bar.Baz.
}