[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
@@ -4,34 +4,34 @@ FILE: objectInnerClass.kt
super<R|kotlin/Any|>()
}
local final inner class Child : R|<anonymous>.Base| {
public <anonymous>.constructor(property: R|B|): R|<anonymous>.Child| {
this@R|/<anonymous>|.super<R|<anonymous>.Base|>(R|<local>/property|)
local final inner class Child : R|<local>/<anonymous>.Base| {
public <anonymous>.constructor(property: R|B|): R|<local>/<anonymous>.Child| {
this@R|/<anonymous>|.super<R|<local>/<anonymous>.Base|>(R|<local>/property|)
}
public final fun R|<anonymous>.Base|.zoo(): R|kotlin/Unit| {
public final fun R|<local>/<anonymous>.Base|.zoo(): R|kotlin/Unit| {
lval x: R|B| = this@R|<local>/zoo|.R|<local>/property|
}
public final fun foo(): R|kotlin/Unit| {
this@R|/<anonymous>.Child|.R|<local>/baseFun|()
lval x: R|B| = this@R|/<anonymous>.Child|.R|<local>/property|
(this@R|/<anonymous>.Child|, this@R|/<anonymous>.Child|).R|<local>/zoo|()
(this@R|/<anonymous>|, this@R|/<anonymous>.Child|).R|/<anonymous>.hoo|()
this@R|<local>/<anonymous>.Child|.R|<local>/baseFun|()
lval x: R|B| = this@R|<local>/<anonymous>.Child|.R|<local>/property|
(this@R|<local>/<anonymous>.Child|, this@R|<local>/<anonymous>.Child|).R|<local>/zoo|()
(this@R|/<anonymous>|, this@R|<local>/<anonymous>.Child|).R|/<anonymous>.hoo|()
}
}
public final fun R|<anonymous>.Child|.voo(): R|kotlin/Unit| {
public final fun R|<local>/<anonymous>.Child|.voo(): R|kotlin/Unit| {
lval x: R|B| = this@R|/<anonymous>.voo|.R|<local>/property|
}
public final fun R|<anonymous>.Base|.hoo(): R|kotlin/Unit| {
public final fun R|<local>/<anonymous>.Base|.hoo(): R|kotlin/Unit| {
lval x: R|B| = this@R|/<anonymous>.hoo|.R|<local>/property|
}
local open inner class Base : R|kotlin/Any| {
public <anonymous>.constructor(property: R|B|): R|<anonymous>.Base| {
public <anonymous>.constructor(property: R|B|): R|<local>/<anonymous>.Base| {
super<R|kotlin/Any|>()
}
@@ -44,14 +44,14 @@ FILE: objectInnerClass.kt
}
public final fun caseForBase(): R|kotlin/Unit| {
lval base: R|<anonymous>.Base| = this@R|/<anonymous>|.R|<local>/<anonymous>.Base.Base|(R|/B.B|())
lval base: R|<local>/<anonymous>.Base| = this@R|/<anonymous>|.R|<local>/<anonymous>.Base.Base|(R|/B.B|())
R|<local>/base|.R|<local>/baseFun|()
R|<local>/base|.R|<local>/property|
(this@R|/<anonymous>|, R|<local>/base|).R|/<anonymous>.hoo|()
}
public final fun caseForChild(): R|kotlin/Unit| {
lval child: R|<anonymous>.Child| = this@R|/<anonymous>|.R|<local>/<anonymous>.Child.Child|(R|/B.B|())
lval child: R|<local>/<anonymous>.Child| = this@R|/<anonymous>|.R|<local>/<anonymous>.Child.Child|(R|/B.B|())
R|<local>/child|.R|<local>/baseFun|()
R|<local>/child|.R|<local>/property|
R|<local>/child|.R|<local>/foo|()
@@ -129,34 +129,34 @@ FILE: objectInnerClass.kt
super<R|kotlin/Any|>()
}
local final inner class Child : R|Case3.<anonymous>.Base| {
public <anonymous>.constructor(property: R|B|): R|Case3.<anonymous>.Child| {
this@R|/<anonymous>|.super<R|Case3.<anonymous>.Base|>(R|<local>/property|)
local final inner class Child : R|<local>/<anonymous>.Base| {
public <anonymous>.constructor(property: R|B|): R|<local>/<anonymous>.Child| {
this@R|/<anonymous>|.super<R|<local>/<anonymous>.Base|>(R|<local>/property|)
}
public final fun R|Case3.<anonymous>.Base|.zoo(): R|kotlin/Unit| {
public final fun R|<local>/<anonymous>.Base|.zoo(): R|kotlin/Unit| {
lval x: R|B| = this@R|<local>/zoo|.R|<local>/property|
}
public final fun foo(): R|kotlin/Unit| {
this@R|/Case3.<anonymous>.Child|.R|<local>/baseFun|()
lval x: R|B| = this@R|/Case3.<anonymous>.Child|.R|<local>/property|
(this@R|/Case3.<anonymous>.Child|, this@R|/Case3.<anonymous>.Child|).R|<local>/zoo|()
(this@R|/<anonymous>|, this@R|/Case3.<anonymous>.Child|).R|/<anonymous>.hoo|()
this@R|<local>/<anonymous>.Child|.R|<local>/baseFun|()
lval x: R|B| = this@R|<local>/<anonymous>.Child|.R|<local>/property|
(this@R|<local>/<anonymous>.Child|, this@R|<local>/<anonymous>.Child|).R|<local>/zoo|()
(this@R|/<anonymous>|, this@R|<local>/<anonymous>.Child|).R|/<anonymous>.hoo|()
}
}
public final fun R|Case3.<anonymous>.Child|.voo(): R|kotlin/Unit| {
public final fun R|<local>/<anonymous>.Child|.voo(): R|kotlin/Unit| {
lval x: R|B| = this@R|/<anonymous>.voo|.R|<local>/property|
}
public final fun R|Case3.<anonymous>.Base|.hoo(): R|kotlin/Unit| {
public final fun R|<local>/<anonymous>.Base|.hoo(): R|kotlin/Unit| {
lval x: R|B| = this@R|/<anonymous>.hoo|.R|<local>/property|
}
local open inner class Base : R|kotlin/Any| {
public <anonymous>.constructor(property: R|B|): R|Case3.<anonymous>.Base| {
public <anonymous>.constructor(property: R|B|): R|<local>/<anonymous>.Base| {
super<R|kotlin/Any|>()
}
@@ -169,14 +169,14 @@ FILE: objectInnerClass.kt
}
public final fun caseForBase(): R|kotlin/Unit| {
lval base: R|Case3.<anonymous>.Base| = this@R|/<anonymous>|.R|<local>/Case3.<anonymous>.Base.Base|(R|/B.B|())
lval base: R|<local>/<anonymous>.Base| = this@R|/<anonymous>|.R|<local>/<anonymous>.Base.Base|(R|/B.B|())
R|<local>/base|.R|<local>/baseFun|()
R|<local>/base|.R|<local>/property|
(this@R|/<anonymous>|, R|<local>/base|).R|/<anonymous>.hoo|()
}
public final fun caseForChild(): R|kotlin/Unit| {
lval child: R|Case3.<anonymous>.Child| = this@R|/<anonymous>|.R|<local>/Case3.<anonymous>.Child.Child|(R|/B.B|())
lval child: R|<local>/<anonymous>.Child| = this@R|/<anonymous>|.R|<local>/<anonymous>.Child.Child|(R|/B.B|())
R|<local>/child|.R|<local>/baseFun|()
R|<local>/child|.R|<local>/property|
R|<local>/child|.R|<local>/foo|()