[FIR] Properly assign <local> packages to symbols

This prevents `FirConflictsExpressionChecker.kt`
from missing conflicting local functions. It used
to due to inconsistencies in assigning `<local>`,
and this commit makes it a bit more
straightforward.

The change in KtClassTypeQualifierRenderer
prevents `FirOverrideImplementTest.testLocalClass`
from failing in `intellij`. It didn't fail for
callables, because `KtCallableSignatureRenderer`
doesn't try to render packages.

^KT-59186 Fixed
This commit is contained in:
Nikolay Lunyak
2023-08-09 15:18:03 +03:00
committed by Space Team
parent cf655fd5ad
commit f9c6af4d2a
107 changed files with 733 additions and 891 deletions
@@ -239,7 +239,7 @@ digraph localClassesWithImplicit_kt {
115 [label="Access variable R|<local>/a|"];
116 [label="Smart cast: R|<local>/a|"];
117 [label="Access variable R|kotlin/String.length|"];
118 [label="Function call: this@R|/A|.R|<local>/baz|()" style="filled" fillcolor=yellow];
118 [label="Function call: this@R|<local>/A|.R|<local>/baz|()" style="filled" fillcolor=yellow];
119 [label="Exit block"];
}
120 [label="Exit function <anonymous>" style="filled" fillcolor=red];
@@ -249,7 +249,7 @@ digraph localClassesWithImplicit_kt {
123 [label="Jump: ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
R|<local>/b|.<Unresolved name: length>#
R|<local>/a|.R|kotlin/String.length|
^ this@R|/A|.R|<local>/baz|()
^ this@R|<local>/A|.R|<local>/baz|()
}
)"];
124 [label="Stub" style="filled" fillcolor=gray];
@@ -303,7 +303,7 @@ digraph localClassesWithImplicit_kt {
149 [label="Access variable R|<local>/b|"];
150 [label="Smart cast: R|<local>/b|"];
151 [label="Access variable R|kotlin/String.length|"];
152 [label="Function call: this@R|/A|.R|<local>/bar|()" style="filled" fillcolor=yellow];
152 [label="Function call: this@R|<local>/A|.R|<local>/bar|()" style="filled" fillcolor=yellow];
153 [label="Exit block"];
}
154 [label="Exit when branch result"];
@@ -320,7 +320,7 @@ digraph localClassesWithImplicit_kt {
^ when () {
(R|<local>/b| is R|kotlin/String|) -> {
R|<local>/b|.R|kotlin/String.length|
this@R|/A|.R|<local>/bar|()
this@R|<local>/A|.R|<local>/bar|()
}
else -> {
Int(1)