[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
@@ -5,14 +5,14 @@ FILE: kt53819.kt
private get(): R|kotlin/Int|
private set(value: R|kotlin/Int|): R|kotlin/Unit|
public constructor(x: R|kotlin/Int|): R|Foo| {
public constructor(x: R|kotlin/Int|): R|<local>/Foo| {
super<R|kotlin/Any|>()
this@R|/Foo|.R|<local>/_x| = R|<local>/x|
this@R|<local>/Foo|.R|<local>/_x| = R|<local>/x|
}
public final val x: R|kotlin/Int|
public get(): R|kotlin/Int| {
^ this@R|/Foo|.R|<local>/_x|
^ this@R|<local>/Foo|.R|<local>/_x|
}
}
@@ -13,7 +13,7 @@ FILE: annotatedLocalClass.kt
}
@R|Ann|() local final class Local : R|kotlin/Any| {
public constructor(): R|Local| {
public constructor(): R|<local>/Local| {
super<R|kotlin/Any|>()
}
@@ -5,7 +5,7 @@ FILE: innerClassInAnonymousObject.kt
}
local final class Nested : R|kotlin/Any| {
public constructor(): R|<anonymous>.Nested| {
public constructor(): R|<local>/<anonymous>.Nested| {
super<R|kotlin/Any|>()
}
@@ -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)
@@ -10,7 +10,7 @@ FILE: localClassesWithImplicit.kt
}
local final class A : R|kotlin/Any| {
public constructor(): R|A| {
public constructor(): R|<local>/A| {
super<R|kotlin/Any|>()
}
@@ -20,7 +20,7 @@ FILE: 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)
@@ -35,7 +35,7 @@ FILE: localClassesWithImplicit.kt
^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|()
}
)
}
@@ -18,7 +18,7 @@ FILE: propertiesAndInitBlocks.kt
}
local final class InitializerLocalClass : R|kotlin/Any| {
public constructor(): R|InitializerLocalClass| {
public constructor(): R|<local>/InitializerLocalClass| {
super<R|kotlin/Any|>()
}
@@ -34,7 +34,7 @@ FILE: propertiesAndInitBlocks.kt
)
public get(): R|kotlin/Unit| {
local final class GetterLocalClass : R|kotlin/Any| {
public constructor(): R|GetterLocalClass| {
public constructor(): R|<local>/GetterLocalClass| {
super<R|kotlin/Any|>()
}
@@ -1,19 +1,19 @@
FILE: localAnnotationClass.kt
public final fun foo(): R|kotlin/Unit| {
local final annotation class Ann : R|kotlin/Annotation| {
public constructor(): R|Ann| {
public constructor(): R|<local>/Ann| {
super<R|kotlin/Any|>()
}
}
@R|Ann|() local final class Local : R|kotlin/Any| {
public constructor(): R|Local| {
@R|<local>/Ann|() local final class Local : R|kotlin/Any| {
public constructor(): R|<local>/Local| {
super<R|kotlin/Any|>()
}
local final annotation class Nested : R|kotlin/Annotation| {
public constructor(): R|Local.Nested| {
public constructor(): R|<local>/Local.Nested| {
super<R|kotlin/Any|>()
}
@@ -27,12 +27,12 @@ FILE: localEntitytNotAllowed.kt
}
local final object D : R|kotlin/Any| {
private constructor(): R|A.<anonymous>.D| {
private constructor(): R|<local>/<anonymous>.D| {
super<R|kotlin/Any|>()
}
local final object G : R|kotlin/Any| {
private constructor(): R|A.<anonymous>.D.G| {
private constructor(): R|<local>/<anonymous>.D.G| {
super<R|kotlin/Any|>()
}
@@ -52,12 +52,12 @@ FILE: localEntitytNotAllowed.kt
public final fun b(): R|kotlin/Unit| {
local final object E : R|kotlin/Any| {
private constructor(): R|A.E| {
private constructor(): R|<local>/E| {
super<R|kotlin/Any|>()
}
local final object F : R|kotlin/Any| {
private constructor(): R|A.E.F| {
private constructor(): R|<local>/E.F| {
super<R|kotlin/Any|>()
}
@@ -101,7 +101,7 @@ FILE: sealedSupertype.kt
}
public final fun test(): R|kotlin/Unit| {
local final class L : R|P| {
public constructor(): R|L| {
public constructor(): R|<local>/L| {
super<R|P|>()
}
@@ -101,7 +101,7 @@ FILE: sealedSupertype.ll.kt
}
public final fun test(): R|kotlin/Unit| {
local final class L : R|P| {
public constructor(): R|L| {
public constructor(): R|<local>/L| {
super<R|P|>()
}
@@ -27,7 +27,7 @@ FILE: typeParametersInObject.kt
}
public final fun test(): R|kotlin/Unit| {
local final object M<H> : R|kotlin/Any| {
private constructor<H>(): R|M<H>| {
private constructor<H>(): R|<local>/M<H>| {
super<R|kotlin/Any|>()
}
@@ -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|()
}
}
@@ -2,7 +2,7 @@ FILE: RedundantVisibilityModifierChecker.kt
public final fun f(): R|kotlin/Unit| {
lvar baz: R|kotlin/Int| = Int(0)
local final class LocalClass : R|kotlin/Any| {
public constructor(): R|LocalClass| {
public constructor(): R|<local>/LocalClass| {
super<R|kotlin/Any|>()
}
@@ -1,7 +1,7 @@
FILE: RedundantVisibilityModifierCheckerWithExplicitApiMode.kt
public final fun f1(): R|kotlin/Unit| {
local final class LocalClass : R|kotlin/Any| {
public constructor(): R|LocalClass| {
public constructor(): R|<local>/LocalClass| {
super<R|kotlin/Any|>()
}
@@ -6,7 +6,7 @@ FILE: localVariable.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|>()
}
@@ -2,15 +2,15 @@ FILE: localVariableInSecondaryConstructor.kt
public final fun main(): R|kotlin/Unit| {
lval localVariable: R|kotlin/Int| = Int(0)
local final class LocalClass : R|kotlin/Any| {
public constructor(arg: R|kotlin/Int|): R|LocalClass| {
public constructor(arg: R|kotlin/Int|): R|<local>/LocalClass| {
super<R|kotlin/Any|>()
}
public final val arg: R|kotlin/Int| = R|<local>/arg|
public get(): R|kotlin/Int|
public constructor(): R|LocalClass| {
this<R|LocalClass|>(R|<local>/localVariable|)
public constructor(): R|<local>/LocalClass| {
this<R|<local>/LocalClass|>(R|<local>/localVariable|)
}
}
@@ -4,7 +4,7 @@ FILE: callableReferenceToLocalClass.kt
}
public final fun test_1(): R|kotlin/Unit| {
local final class Data : R|kotlin/Any| {
public constructor(x: R|kotlin/Int|): R|Data| {
public constructor(x: R|kotlin/Int|): R|<local>/Data| {
super<R|kotlin/Any|>()
}
@@ -13,6 +13,6 @@ FILE: callableReferenceToLocalClass.kt
}
lval datas: R|kotlin/collections/List<Data>| = Null(null)!!
lval xs: R|kotlin/collections/List<kotlin/Int>| = R|<local>/datas|.R|/myMap|<R|Data|, R|kotlin/Int|>(Q|Data|::R|<local>/x|)
lval datas: R|kotlin/collections/List<<local>/Data>| = Null(null)!!
lval xs: R|kotlin/collections/List<kotlin/Int>| = R|<local>/datas|.R|/myMap|<R|<local>/Data|, R|kotlin/Int|>(Q|<local>/Data|::R|<local>/x|)
}
@@ -16,7 +16,7 @@ FILE: inlineClassDeclaration.kt
public final fun foo(): R|kotlin/Unit| {
local final inline class C : R|kotlin/Any| {
public constructor(x: R|kotlin/Int|): R|A.C| {
public constructor(x: R|kotlin/Int|): R|<local>/C| {
super<R|kotlin/Any|>()
}
@@ -3,71 +3,71 @@ FILE: implicitInLocalClasses.kt
}
public final fun main(): R|kotlin/Unit| {
local final class A : R|kotlin/Any| {
public constructor(): R|A| {
public constructor(): R|<local>/A| {
super<R|kotlin/Any|>()
}
public final fun foo(x: R|kotlin/Int|): R|kotlin/Boolean| {
^foo this@R|/A|.R|<local>/bar|(R|<local>/x|)
^foo this@R|<local>/A|.R|<local>/bar|(R|<local>/x|)
}
public final fun bar(y: R|kotlin/Int|): R|kotlin/Boolean| {
^bar CMP(>, this@R|/A|.R|kotlin/Any.hashCode|().R|kotlin/Int.plus|(R|<local>/y|).R|kotlin/Int.compareTo|(Int(0)))
^bar CMP(>, this@R|<local>/A|.R|kotlin/Any.hashCode|().R|kotlin/Int.plus|(R|<local>/y|).R|kotlin/Int.compareTo|(Int(0)))
}
public final val w: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ this@R|/A|.R|<local>/z|
^ this@R|<local>/A|.R|<local>/z|
}
public final val z: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ ==(this@R|/A|.R|kotlin/Any.hashCode|(), Int(0))
^ ==(this@R|<local>/A|.R|kotlin/Any.hashCode|(), Int(0))
}
}
lval a: R|A| = R|<local>/A.A|()
lval a: R|<local>/A| = R|<local>/A.A|()
R|/useBoolean|(R|<local>/a|.R|<local>/foo|(Int(1)))
R|/useBoolean|(R|<local>/a|.R|<local>/bar|(Int(1)))
R|/useBoolean|(R|<local>/a|.R|<local>/w|)
R|/useBoolean|(R|<local>/a|.R|<local>/z|)
local final class B : R|kotlin/Any| {
public constructor(): R|B| {
public constructor(): R|<local>/B| {
super<R|kotlin/Any|>()
}
public final fun foo(x: R|kotlin/Int|): R|kotlin/Boolean| {
^foo this@R|/B|.R|<local>/inner|.R|<local>/w|
^foo this@R|<local>/B|.R|<local>/inner|.R|<local>/w|
}
public final fun bar(y: R|kotlin/Int|): R|kotlin/Boolean| {
^bar CMP(>, this@R|/B|.R|kotlin/Any.hashCode|().R|kotlin/Int.plus|(R|<local>/y|).R|kotlin/Int.compareTo|(Int(0)))
^bar CMP(>, this@R|<local>/B|.R|kotlin/Any.hashCode|().R|kotlin/Int.plus|(R|<local>/y|).R|kotlin/Int.compareTo|(Int(0)))
}
public final val inner: R|B.Inner| = this@R|/B|.R|<local>/B.Inner.Inner|()
public get(): R|B.Inner|
public final val inner: R|<local>/B.Inner| = this@R|<local>/B|.R|<local>/B.Inner.Inner|()
public get(): R|<local>/B.Inner|
local final inner class Inner : R|kotlin/Any| {
public B.constructor(): R|B.Inner| {
public <local>/B.constructor(): R|<local>/B.Inner| {
super<R|kotlin/Any|>()
}
public final val w: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ this@R|/B.Inner|.R|<local>/z|
^ this@R|<local>/B.Inner|.R|<local>/z|
}
public final val z: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ this@R|/B|.R|<local>/bar|(Int(1))
^ this@R|<local>/B|.R|<local>/bar|(Int(1))
}
}
}
lval b: R|B| = R|<local>/B.B|()
lval b: R|<local>/B| = R|<local>/B.B|()
R|/useBoolean|(R|<local>/b|.R|<local>/foo|(Int(1)))
R|/useBoolean|(R|<local>/b|.R|<local>/bar|(Int(1)))
R|/useBoolean|(R|<local>/b|.R|<local>/inner|.R|<local>/w|)
@@ -1,7 +1,7 @@
FILE: a.kt
public final fun main(): R|kotlin/Unit| {
local final class Local : R|B| {
public constructor(): R|Local| {
public constructor(): R|<local>/Local| {
super<R|B|>()
}
@@ -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|()
@@ -9,7 +9,7 @@ FILE: test.kt
private get(): R|kotlin/String|
local final inner class S : R|kotlin/Any| {
public <anonymous>.constructor(): R|<anonymous>.S| {
public <anonymous>.constructor(): R|<local>/<anonymous>.S| {
super<R|kotlin/Any|>()
}
@@ -40,7 +40,7 @@ FILE: throwableSubclass.kt
public final fun foo(): R|kotlin/Unit| {
local final class Test7<Outer(T), Outer(B)> : R|kotlin/Throwable| {
public constructor(): R|Test5.Test7<T, B>| {
public constructor(): R|<local>/Test7<T, B>| {
super<R|kotlin/Throwable|>()
}
@@ -51,7 +51,7 @@ FILE: throwableSubclass.kt
}
public final fun <Z> topLevelFun(): R|kotlin/Unit| {
local final class Test8<Outer(Z)> : R|kotlin/Error| {
public constructor(): R|Test8<Z>| {
public constructor(): R|<local>/Test8<Z>| {
super<R|kotlin/Error|>()
}