[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
@@ -6,7 +6,7 @@ FILE: localClassAccessesContainingClass.kt
public final fun foo(): R|kotlin/Unit| {
local final class Local : R|kotlin/Any| {
public constructor(): R|Outer.Local| {
public constructor(): R|<local>/Local| {
super<R|kotlin/Any|>()
}
@@ -1,11 +1,11 @@
FILE: localConstructor.kt
public final fun test(): R|kotlin/Unit| {
local final class Local : R|kotlin/Any| {
public constructor(): R|Local| {
public constructor(): R|<local>/Local| {
super<R|kotlin/Any|>()
}
}
lval l: R|Local| = R|<local>/Local.Local|()
lval l: R|<local>/Local| = R|<local>/Local.Local|()
}
@@ -12,7 +12,7 @@ FILE: localInnerClass.kt
}
local final inner class Derived : R|Foo| {
public <anonymous>.constructor(x: R|kotlin/Int|): R|<anonymous>.Derived| {
public <anonymous>.constructor(x: R|kotlin/Int|): R|<local>/<anonymous>.Derived| {
super<R|kotlin/Any|>()
}
@@ -29,7 +29,7 @@ FILE: localObjects.kt
R|<local>/b|.R|/Foo.foo|()
local final object B : R|kotlin/Any| {
private constructor(): R|B| {
private constructor(): R|<local>/B| {
super<R|kotlin/Any|>()
}
@@ -38,7 +38,7 @@ FILE: localObjects.kt
}
Q|B|.R|<local>/foo|()
Q|<local>/B|.R|<local>/foo|()
}
public final val bb: <ERROR TYPE REF: Unresolved name: foo> = <Unresolved name: B>#.<Unresolved name: foo>#()
public get(): <ERROR TYPE REF: Unresolved name: foo>
@@ -10,7 +10,7 @@ FILE: localScopes.kt
}
public final fun test(): R|kotlin/Unit| {
local open class BaseLocal : R|Bar| {
public constructor(): R|BaseLocal| {
public constructor(): R|<local>/BaseLocal| {
super<R|Bar|>()
}
@@ -19,7 +19,7 @@ FILE: localScopes.kt
}
lval base: R|BaseLocal| = R|<local>/BaseLocal.BaseLocal|()
lval base: R|<local>/BaseLocal| = R|<local>/BaseLocal.BaseLocal|()
R|<local>/base|.R|<local>/baz|()
R|<local>/base|.R|/Bar.foo|()
lval anonymous: R|<anonymous>| = object : R|Bar| {
@@ -34,9 +34,9 @@ FILE: localScopes.kt
R|<local>/anonymous|.R|/<anonymous>.baz|()
R|<local>/anonymous|.R|/Bar.foo|()
local final class DerivedLocal : R|BaseLocal| {
public constructor(): R|DerivedLocal| {
super<R|BaseLocal|>()
local final class DerivedLocal : R|<local>/BaseLocal| {
public constructor(): R|<local>/DerivedLocal| {
super<R|<local>/BaseLocal|>()
}
public final fun gau(): R|kotlin/Unit| {
@@ -44,7 +44,7 @@ FILE: localScopes.kt
}
lval derived: R|DerivedLocal| = R|<local>/DerivedLocal.DerivedLocal|()
lval derived: R|<local>/DerivedLocal| = R|<local>/DerivedLocal.DerivedLocal|()
R|<local>/derived|.R|<local>/gau|()
R|<local>/derived|.R|<local>/baz|()
R|<local>/derived|.R|/Bar.foo|()
@@ -4,7 +4,7 @@ FILE: localTypes.kt
public final fun foo(): R|kotlin/Unit| {
lval x: R|kotlin/Int| = Int(1)
local final class Bar : R|Foo| {
public constructor(): R|Bar| {
public constructor(): R|<local>/Bar| {
super<R|kotlin/Any|>()
}
@@ -64,24 +64,24 @@ FILE: first.kt
}
public final fun withLocals(): R|kotlin/Unit| {
local final class Local : R|kotlin/Any| {
public constructor(): R|Local| {
public constructor(): R|<local>/Local| {
super<R|kotlin/Any|>()
}
private final fun bar(): R|kotlin/Unit|
public final fun baz(): R|kotlin/Unit| {
this@R|/Local|.R|<local>/bar|()
this@R|/Local|.R|<local>/Local.Inner.Inner|()
this@R|<local>/Local|.R|<local>/bar|()
this@R|<local>/Local|.R|<local>/Local.Inner.Inner|()
}
local final inner class Inner : R|kotlin/Any| {
public Local.constructor(): R|Local.Inner| {
public <local>/Local.constructor(): R|<local>/Local.Inner| {
super<R|kotlin/Any|>()
}
public final fun foo(): R|kotlin/Unit| {
this@R|/Local|.R|<local>/bar|()
this@R|<local>/Local|.R|<local>/bar|()
}
}