9b9c51bc8d
1. Inner class constructor should have its outer class as a dispatch receiver, since it is necessary for the call. Before it was null 2. Substituted inner class constructor should have its original dispatch receiver type with the proper substitution. Before it was set to the class itself (since the class was usually passed as a new dispatch receiver) Also, modify FIR renderer, so it properly renders the dispatch receiver of the constructors
200 lines
7.5 KiB
Plaintext
Vendored
200 lines
7.5 KiB
Plaintext
Vendored
FILE: objectInnerClass.kt
|
|
public final val case1: R|A| = object : R|A| {
|
|
private constructor(): R|<anonymous>| {
|
|
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|)
|
|
}
|
|
|
|
public final fun R|<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|()
|
|
}
|
|
|
|
}
|
|
|
|
public final fun R|<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| {
|
|
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| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
public final val property: R|B| = R|<local>/property|
|
|
public get(): R|B|
|
|
|
|
public final fun baseFun(): R|kotlin/Unit| {
|
|
}
|
|
|
|
}
|
|
|
|
public final fun caseForBase(): R|kotlin/Unit| {
|
|
lval base: R|<anonymous>.Base| = this@R|/<anonymous>|.R|/<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|/<anonymous>.Child.Child|(R|/B.B|())
|
|
R|<local>/child|.R|<local>/baseFun|()
|
|
R|<local>/child|.R|<local>/property|
|
|
R|<local>/child|.R|<local>/foo|()
|
|
(this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.hoo|()
|
|
(this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.voo|()
|
|
}
|
|
|
|
}
|
|
|
|
public get(): R|A|
|
|
public final class Case2 : R|kotlin/Any| {
|
|
public constructor(): R|Case2| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
public final val x: R|Case2.Base| = object : R|Case2.Base| {
|
|
private constructor(): R|<anonymous>| {
|
|
this@R|/Case2|.super<R|Case2.Base|>(R|/B.B|())
|
|
}
|
|
|
|
public final fun R|Case2.Base|.zoo(): R|kotlin/Unit| {
|
|
lval x: R|B| = this@R|/<anonymous>.zoo|.R|/Case2.Base.property|
|
|
}
|
|
|
|
public final fun foo(): R|kotlin/Unit| {
|
|
this@R|/<anonymous>|.R|/Case2.Base.baseFun|()
|
|
lval x: R|B| = this@R|/<anonymous>|.R|/Case2.Base.property|
|
|
(this@R|/<anonymous>|, this@R|/<anonymous>|).R|/<anonymous>.zoo|()
|
|
(this@R|/Case2|, this@R|/<anonymous>|).R|/Case2.hoo|()
|
|
}
|
|
|
|
}
|
|
|
|
public get(): R|Case2.Base|
|
|
|
|
public final fun R|Case2.Base|.hoo(): R|kotlin/Unit| {
|
|
lval x: R|B| = this@R|/Case2.hoo|.R|/Case2.Base.property|
|
|
}
|
|
|
|
public open inner class Base : R|kotlin/Any| {
|
|
public Case2.constructor(property: R|B|): R|Case2.Base| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
public final val property: R|B| = R|<local>/property|
|
|
public get(): R|B|
|
|
|
|
public final fun baseFun(): R|kotlin/Unit| {
|
|
}
|
|
|
|
}
|
|
|
|
public final fun caseForBase(): R|kotlin/Unit| {
|
|
lval base: R|Case2.Base| = this@R|/Case2|.R|/Case2.Base.Base|(R|/B.B|())
|
|
R|<local>/base|.R|/Case2.Base.baseFun|()
|
|
R|<local>/base|.R|/Case2.Base.property|
|
|
(this@R|/Case2|, R|<local>/base|).R|/Case2.hoo|()
|
|
}
|
|
|
|
public final fun caseForChild(): R|kotlin/Unit| {
|
|
lval child: R|Case2.Base| = this@R|/Case2|.R|/Case2.x|
|
|
R|<local>/child|.R|/Case2.Base.baseFun|()
|
|
R|<local>/child|.R|/Case2.Base.property|
|
|
(this@R|/Case2|, R|<local>/child|).R|/Case2.hoo|()
|
|
}
|
|
|
|
}
|
|
public final class Case3 : R|kotlin/Any| {
|
|
public constructor(): R|Case3| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
public final val x: R|A| = object : R|A| {
|
|
private constructor(): R|<anonymous>| {
|
|
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|)
|
|
}
|
|
|
|
public final fun R|Case3.<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|()
|
|
}
|
|
|
|
}
|
|
|
|
public final fun R|Case3.<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| {
|
|
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| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
public final val property: R|B| = R|<local>/property|
|
|
public get(): R|B|
|
|
|
|
public final fun baseFun(): R|kotlin/Unit| {
|
|
}
|
|
|
|
}
|
|
|
|
public final fun caseForBase(): R|kotlin/Unit| {
|
|
lval base: R|Case3.<anonymous>.Base| = this@R|/<anonymous>|.R|/Case3.<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|/Case3.<anonymous>.Child.Child|(R|/B.B|())
|
|
R|<local>/child|.R|<local>/baseFun|()
|
|
R|<local>/child|.R|<local>/property|
|
|
R|<local>/child|.R|<local>/foo|()
|
|
(this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.hoo|()
|
|
(this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.voo|()
|
|
}
|
|
|
|
}
|
|
|
|
public get(): R|A|
|
|
|
|
}
|
|
public abstract interface A : R|kotlin/Any| {
|
|
}
|
|
public final class B : R|kotlin/Any| {
|
|
public constructor(): R|B| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
}
|