FIR: introduce delegate field initializers

Before this commit we initialized delegate fields in primary constructor,
that could provoke NPE in case delegate is used in initializer of
some property backing field.
Now we initialize delegate fields directly instead.
This commit is contained in:
Mikhail Glukhikh
2021-02-02 17:51:11 +03:00
parent 2cbdad0bb1
commit d4b0688690
69 changed files with 928 additions and 356 deletions
@@ -13,13 +13,12 @@ FILE: delegatedSuperType.kt
} }
public final class C : R|A| { public final class C : R|A| {
local final field <$$delegate_0>: R|A|
public constructor(b: R|B|): R|C| { public constructor(b: R|B|): R|C| {
super<R|kotlin/Any|>() super<R|kotlin/Any|>()
this@R|/C|.R|<local>/<$$delegate_0>| = R|<local>/b|
} }
local final field <$$delegate_0>: R|A| = R|<local>/b|
public final val b: R|B| = R|<local>/b| public final val b: R|B| = R|<local>/b|
public get(): R|B| public get(): R|B|
@@ -9,25 +9,23 @@ FILE: anonymousObjectByDelegate.kt
} }
public final fun R|A|.test_1(): R|kotlin/Unit| { public final fun R|A|.test_1(): R|kotlin/Unit| {
object : R|B| { object : R|B| {
local final field <$$delegate_0>: R|B|
private constructor(): R|<anonymous>| { private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>() super<R|kotlin/Any|>()
this@R|/<anonymous>|.R|<local>/<$$delegate_0>| = this@R|/test_1|.R|/A.b|
} }
local final field <$$delegate_0>: R|B| = this@R|/test_1|.R|/A.b|
} }
} }
public final fun R|A|.test_2(): R|kotlin/Unit| { public final fun R|A|.test_2(): R|kotlin/Unit| {
object : R|B| { object : R|B| {
local final field <$$delegate_0>: R|B|
private constructor(): R|<anonymous>| { private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>() super<R|kotlin/Any|>()
this@R|/<anonymous>|.R|<local>/<$$delegate_0>| = this@R|/test_2|.R|/A.b|
} }
local final field <$$delegate_0>: R|B| = this@R|/test_2|.R|/A.b|
} }
} }
@@ -6,7 +6,7 @@ FILE: delegationInInterface.kt
} }
public abstract interface B : R|A| { public abstract interface B : R|A| {
local final field <$$delegate_0>: R|A| local final field <$$delegate_0>: R|A| = <Unresolved name: a>#
public abstract val a: R|A| public abstract val a: R|A|
public get(): R|A| public get(): R|A|
@@ -15,6 +15,6 @@ FILE: delegationInInterface.kt
public final val test: R|A| = R|/A.A|() public final val test: R|A| = R|/A.A|()
public get(): R|A| public get(): R|A|
public abstract interface C : R|A| { public abstract interface C : R|A| {
local final field <$$delegate_0>: R|A| local final field <$$delegate_0>: R|A| = R|/test|
} }
@@ -1,6 +1,6 @@
class A class A
interface B : <!DELEGATION_IN_INTERFACE, INTERFACE_WITH_SUPERCLASS!>A<!> by a { interface B : <!DELEGATION_IN_INTERFACE, INTERFACE_WITH_SUPERCLASS!>A<!> by <!UNRESOLVED_REFERENCE!>a<!> {
val a: A val a: A
} }
@@ -4,13 +4,12 @@ FILE: superCallWithDelegation.kt
} }
public open class B : R|A| { public open class B : R|A| {
local final field <$$delegate_0>: R|A|
public constructor(a: R|A|): R|B| { public constructor(a: R|A|): R|B| {
super<R|kotlin/Any|>() super<R|kotlin/Any|>()
this@R|/B|.R|<local>/<$$delegate_0>| = R|<local>/a|
} }
local final field <$$delegate_0>: R|A| = R|<local>/a|
private final val a: R|A| = R|<local>/a| private final val a: R|A| = R|<local>/a|
private get(): R|A| private get(): R|A|
@@ -93,7 +93,7 @@ class Fir2IrConverter(
} }
val processedCallableNames = mutableSetOf<Name>() val processedCallableNames = mutableSetOf<Name>()
val classes = mutableListOf<FirRegularClass>() val classes = mutableListOf<FirRegularClass>()
for (declaration in sortBySynthetic(anonymousObject.declarations)) { for (declaration in syntheticPropertiesLast(anonymousObject.declarations)) {
val irDeclaration = if (declaration is FirRegularClass) { val irDeclaration = if (declaration is FirRegularClass) {
classes += declaration classes += declaration
registerClassAndNestedClasses(declaration, irClass) registerClassAndNestedClasses(declaration, irClass)
@@ -129,7 +129,7 @@ class Fir2IrConverter(
irClass.declarations += irConstructor irClass.declarations += irConstructor
} }
val allDeclarations = regularClass.declarations.toMutableList() val allDeclarations = regularClass.declarations.toMutableList()
for (declaration in sortBySynthetic(regularClass.declarations)) { for (declaration in syntheticPropertiesLast(regularClass.declarations)) {
val irDeclaration = processMemberDeclaration(declaration, regularClass, irClass) ?: continue val irDeclaration = processMemberDeclaration(declaration, regularClass, irClass) ?: continue
irClass.declarations += irDeclaration irClass.declarations += irDeclaration
} }
@@ -167,8 +167,8 @@ class Fir2IrConverter(
// Sort declarations so that all non-synthetic declarations are before synthetic ones. // Sort declarations so that all non-synthetic declarations are before synthetic ones.
// This is needed because converting synthetic fields for implementation delegation needs to know // This is needed because converting synthetic fields for implementation delegation needs to know
// existing declarations in the class to avoid adding redundant delegated members. // existing declarations in the class to avoid adding redundant delegated members.
private fun sortBySynthetic(declarations: List<FirDeclaration>): Iterable<FirDeclaration> { private fun syntheticPropertiesLast(declarations: List<FirDeclaration>): Iterable<FirDeclaration> {
return declarations.sortedBy { it.isSynthetic } return declarations.sortedBy { it !is FirField && it.isSynthetic }
} }
private fun registerClassAndNestedClasses(regularClass: FirRegularClass, parent: IrDeclarationParent): IrClass { private fun registerClassAndNestedClasses(regularClass: FirRegularClass, parent: IrDeclarationParent): IrClass {
@@ -273,7 +273,7 @@ class Fir2IrConverter(
val classifierStorage = Fir2IrClassifierStorage(components) val classifierStorage = Fir2IrClassifierStorage(components)
val converter = Fir2IrConverter(moduleDescriptor, sourceManager, components) val converter = Fir2IrConverter(moduleDescriptor, sourceManager, components)
val fir2irVisitor = Fir2IrVisitor(converter, components, conversionScope) val fir2irVisitor = Fir2IrVisitor(converter, components, conversionScope)
val declarationStorage = Fir2IrDeclarationStorage(components, fir2irVisitor, moduleDescriptor) val declarationStorage = Fir2IrDeclarationStorage(components, moduleDescriptor)
val typeConverter = Fir2IrTypeConverter(components) val typeConverter = Fir2IrTypeConverter(components)
val builtIns = Fir2IrBuiltIns(components, specialSymbolProvider) val builtIns = Fir2IrBuiltIns(components, specialSymbolProvider)
val annotationGenerator = AnnotationGenerator(components) val annotationGenerator = AnnotationGenerator(components)
@@ -39,7 +39,6 @@ import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass
import org.jetbrains.kotlin.ir.descriptors.*
import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrSyntheticBodyKind import org.jetbrains.kotlin.ir.expressions.IrSyntheticBodyKind
import org.jetbrains.kotlin.ir.expressions.impl.IrErrorExpressionImpl import org.jetbrains.kotlin.ir.expressions.impl.IrErrorExpressionImpl
@@ -56,7 +55,6 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
@OptIn(ObsoleteDescriptorBasedAPI::class) @OptIn(ObsoleteDescriptorBasedAPI::class)
class Fir2IrDeclarationStorage( class Fir2IrDeclarationStorage(
private val components: Fir2IrComponents, private val components: Fir2IrComponents,
private val visitor: Fir2IrVisitor,
private val moduleDescriptor: FirModuleDescriptor private val moduleDescriptor: FirModuleDescriptor
) : Fir2IrComponents by components { ) : Fir2IrComponents by components {
@@ -850,12 +848,11 @@ class Fir2IrDeclarationStorage(
isExternal = false, isExternal = false,
isStatic = field.isStatic isStatic = field.isStatic
).apply { ).apply {
field.initializer?.let {
val expression = visitor.convertToIrExpression(it)
expression.type = type
initializer = irFactory.createExpressionBody(expression)
}
fieldCache[field] = this fieldCache[field] = this
val initializer = field.initializer
if (initializer is FirConstExpression<*>) {
this.initializer = factory.createExpressionBody(initializer.toIrConst(type))
}
} }
} }
} }
@@ -67,7 +67,9 @@ class Fir2IrVisitor(
override fun visitField(field: FirField, data: Any?): IrField { override fun visitField(field: FirField, data: Any?): IrField {
if (field.isSynthetic) { if (field.isSynthetic) {
return declarationStorage.getCachedIrField(field)!! return declarationStorage.getCachedIrField(field)!!.apply {
memberGenerator.convertFieldContent(this, field)
}
} else { } else {
throw AssertionError("Unexpected field: ${field.render()}") throw AssertionError("Unexpected field: ${field.render()}")
} }
@@ -174,6 +174,18 @@ internal class ClassMemberGenerator(
return irProperty return irProperty
} }
fun convertFieldContent(irField: IrField, field: FirField): IrField {
conversionScope.withParent(irField) {
declarationStorage.enterScope(irField)
val initializerExpression = field.initializer
if (irField.initializer == null && initializerExpression != null) {
irField.initializer = irFactory.createExpressionBody(visitor.convertToIrExpression(initializerExpression))
}
declarationStorage.leaveScope(irField)
}
return irField
}
private fun IrProperty.initializeBackingField( private fun IrProperty.initializeBackingField(
property: FirProperty, property: FirProperty,
initializerExpression: FirExpression? initializerExpression: FirExpression?
@@ -14840,6 +14840,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt"); runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt");
} }
@Test
@TestMetadata("Fir2IrClassifierStorage.kt")
public void testFir2IrClassifierStorage() throws Exception {
runTest("compiler/testData/codegen/box/fir/Fir2IrClassifierStorage.kt");
}
@Test @Test
@TestMetadata("IrBuiltIns.kt") @TestMetadata("IrBuiltIns.kt")
public void testIrBuiltIns() throws Exception { public void testIrBuiltIns() throws Exception {
@@ -2116,6 +2116,12 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
runTest("compiler/testData/ir/irText/firProblems/deprecated.kt"); runTest("compiler/testData/ir/irText/firProblems/deprecated.kt");
} }
@Test
@TestMetadata("Fir2IrClassifierStorage.kt")
public void testFir2IrClassifierStorage() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/Fir2IrClassifierStorage.kt");
}
@Test @Test
@TestMetadata("FirBuilder.kt") @TestMetadata("FirBuilder.kt")
public void testFirBuilder() throws Exception { public void testFirBuilder() throws Exception {
@@ -148,7 +148,6 @@ internal class FirJavaFieldBuilder : FirFieldBuilder() {
var modality: Modality? = null var modality: Modality? = null
lateinit var visibility: Visibility lateinit var visibility: Visibility
var isStatic: Boolean by Delegates.notNull() var isStatic: Boolean by Delegates.notNull()
var initializer: FirExpression? = null
lateinit var annotationBuilder: () -> List<FirAnnotationCall> lateinit var annotationBuilder: () -> List<FirAnnotationCall>
override var resolvePhase: FirResolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES override var resolvePhase: FirResolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
@@ -37,12 +37,9 @@ import org.jetbrains.kotlin.fir.lightTree.fir.modifier.Modifier
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeModifier import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeModifier
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeParameterModifier import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeParameterModifier
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeProjectionModifier import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeProjectionModifier
import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
import org.jetbrains.kotlin.fir.references.builder.buildSimpleNamedReference import org.jetbrains.kotlin.fir.references.builder.buildSimpleNamedReference
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.LocalCallableIdConstructor import org.jetbrains.kotlin.fir.symbols.LocalCallableIdConstructor
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
@@ -432,10 +429,9 @@ class DeclarationsConverter(
val selfType = classNode.toDelegatedSelfType(this) val selfType = classNode.toDelegatedSelfType(this)
registerSelfType(selfType) registerSelfType(selfType)
val delegationSpecifiers = superTypeList?.let { convertDelegationSpecifiers(it, symbol, selfType) } val delegationSpecifiers = superTypeList?.let { convertDelegationSpecifiers(it) }
var delegatedSuperTypeRef: FirTypeRef? = delegationSpecifiers?.delegatedSuperTypeRef var delegatedSuperTypeRef: FirTypeRef? = delegationSpecifiers?.delegatedSuperTypeRef
val delegatedConstructorSource: FirLightSourceElement? = delegationSpecifiers?.delegatedConstructorSource val delegatedConstructorSource: FirLightSourceElement? = delegationSpecifiers?.delegatedConstructorSource
delegationSpecifiers?.delegateFields?.map { declarations += it }
val superTypeCallEntry = delegationSpecifiers?.delegatedConstructorArguments.orEmpty() val superTypeCallEntry = delegationSpecifiers?.delegatedConstructorArguments.orEmpty()
val superTypeRefs = mutableListOf<FirTypeRef>() val superTypeRefs = mutableListOf<FirTypeRef>()
@@ -479,11 +475,11 @@ class DeclarationsConverter(
) )
//parse primary constructor //parse primary constructor
val primaryConstructorWrapper = convertPrimaryConstructor( val primaryConstructorWrapper = convertPrimaryConstructor(
primaryConstructor, selfType.source, classWrapper, delegatedConstructorSource, primaryConstructor, selfType.source, classWrapper, delegatedConstructorSource
delegationSpecifiers?.primaryConstructorBody
) )
val firPrimaryConstructor = primaryConstructorWrapper?.firConstructor val firPrimaryConstructor = primaryConstructorWrapper?.firConstructor
firPrimaryConstructor?.let { declarations += it } firPrimaryConstructor?.let { declarations += it }
delegationSpecifiers?.delegateFields?.map { declarations += it }
val properties = mutableListOf<FirProperty>() val properties = mutableListOf<FirProperty>()
if (primaryConstructor != null && firPrimaryConstructor != null) { if (primaryConstructor != null && firPrimaryConstructor != null) {
@@ -558,19 +554,17 @@ class DeclarationsConverter(
var classBody: LighterASTNode? = null var classBody: LighterASTNode? = null
var delegatedConstructorSource: FirLightSourceElement? = null var delegatedConstructorSource: FirLightSourceElement? = null
var delegateFields: List<FirField>? = null var delegateFields: List<FirField>? = null
var primaryConstructorBody: FirBlock? = null
objectLiteral.getChildNodesByType(OBJECT_DECLARATION).first().forEachChildren { objectLiteral.getChildNodesByType(OBJECT_DECLARATION).first().forEachChildren {
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it) MODIFIER_LIST -> modifiers = convertModifierList(it)
PRIMARY_CONSTRUCTOR -> primaryConstructor = it PRIMARY_CONSTRUCTOR -> primaryConstructor = it
SUPER_TYPE_LIST -> convertDelegationSpecifiers(it, symbol, delegatedSelfType).let { SUPER_TYPE_LIST -> convertDelegationSpecifiers(it).let { specifiers ->
delegatedSuperTypeRef = it.delegatedSuperTypeRef delegatedSuperTypeRef = specifiers.delegatedSuperTypeRef
superTypeRefs += it.superTypesRef superTypeRefs += specifiers.superTypesRef
superTypeCallEntry += it.delegatedConstructorArguments superTypeCallEntry += specifiers.delegatedConstructorArguments
delegatedConstructorSource = it.delegatedConstructorSource delegatedConstructorSource = specifiers.delegatedConstructorSource
delegateFields = it.delegateFields delegateFields = specifiers.delegateFields
primaryConstructorBody = it.primaryConstructorBody
} }
CLASS_BODY -> classBody = it CLASS_BODY -> classBody = it
} }
@@ -586,7 +580,6 @@ class DeclarationsConverter(
this.superTypeRefs += superTypeRefs this.superTypeRefs += superTypeRefs
typeRef = delegatedSelfType typeRef = delegatedSelfType
delegateFields?.map { this.declarations += it }
val classWrapper = ClassWrapper( val classWrapper = ClassWrapper(
SpecialNames.NO_NAME_PROVIDED, modifiers, ClassKind.OBJECT, this, SpecialNames.NO_NAME_PROVIDED, modifiers, ClassKind.OBJECT, this,
hasPrimaryConstructor = false, hasPrimaryConstructor = false,
@@ -597,8 +590,10 @@ class DeclarationsConverter(
superTypeCallEntry = superTypeCallEntry superTypeCallEntry = superTypeCallEntry
) )
//parse primary constructor //parse primary constructor
convertPrimaryConstructor(primaryConstructor, typeRef.source, classWrapper, delegatedConstructorSource, primaryConstructorBody) convertPrimaryConstructor(
?.let { this.declarations += it.firConstructor } primaryConstructor, typeRef.source, classWrapper, delegatedConstructorSource
)?.let { this.declarations += it.firConstructor }
delegateFields?.let { this.declarations += it }
//parse declarations //parse declarations
classBody?.let { classBody?.let {
@@ -724,7 +719,6 @@ class DeclarationsConverter(
selfTypeSource: FirSourceElement?, selfTypeSource: FirSourceElement?,
classWrapper: ClassWrapper, classWrapper: ClassWrapper,
delegatedConstructorSource: FirLightSourceElement?, delegatedConstructorSource: FirLightSourceElement?,
body: FirBlock? = null
): PrimaryConstructor? { ): PrimaryConstructor? {
if (primaryConstructor == null && !classWrapper.isEnumEntry() && classWrapper.hasSecondaryConstructor) return null if (primaryConstructor == null && !classWrapper.isEnumEntry() && classWrapper.hasSecondaryConstructor) return null
if (classWrapper.isInterface()) return null if (classWrapper.isInterface()) return null
@@ -768,7 +762,7 @@ class DeclarationsConverter(
typeParameters += constructorTypeParametersFromConstructedClass(classWrapper.classBuilder.typeParameters) typeParameters += constructorTypeParametersFromConstructedClass(classWrapper.classBuilder.typeParameters)
this.valueParameters += valueParameters.map { it.firValueParameter } this.valueParameters += valueParameters.map { it.firValueParameter }
delegatedConstructor = firDelegatedCall delegatedConstructor = firDelegatedCall
this.body = body this.body = null
}.apply { }.apply {
containingClassAttr = currentDispatchReceiverType()!!.lookupTag containingClassAttr = currentDispatchReceiverType()!!.lookupTag
}, valueParameters }, valueParameters
@@ -1437,21 +1431,14 @@ class DeclarationsConverter(
val delegatedConstructorArguments: List<FirExpression>, val delegatedConstructorArguments: List<FirExpression>,
val delegatedConstructorSource: FirLightSourceElement?, val delegatedConstructorSource: FirLightSourceElement?,
val delegateFields: List<FirField>, val delegateFields: List<FirField>,
val primaryConstructorBody: FirBlock?
) )
private fun convertDelegationSpecifiers( private fun convertDelegationSpecifiers(delegationSpecifiers: LighterASTNode): DelegationSpecifiers {
delegationSpecifiers: LighterASTNode,
containerSymbol: AbstractFirBasedSymbol<*>,
delegatedTypeRef: FirTypeRef
): DelegationSpecifiers {
val superTypeRefs = mutableListOf<FirTypeRef>() val superTypeRefs = mutableListOf<FirTypeRef>()
val superTypeCallEntry = mutableListOf<FirExpression>() val superTypeCallEntry = mutableListOf<FirExpression>()
var delegatedSuperTypeRef: FirTypeRef? = null var delegatedSuperTypeRef: FirTypeRef? = null
var delegateConstructorSource: FirLightSourceElement? = null var delegateConstructorSource: FirLightSourceElement? = null
val delegateFields = mutableListOf<FirField>() val delegateFields = mutableListOf<FirField>()
val initializeDelegateStatements = mutableListOf<FirStatement>()
var delegateNumber = 0
delegationSpecifiers.forEachChildren { delegationSpecifiers.forEachChildren {
when (it.tokenType) { when (it.tokenType) {
SUPER_TYPE_ENTRY -> { SUPER_TYPE_ENTRY -> {
@@ -1464,28 +1451,12 @@ class DeclarationsConverter(
delegateConstructorSource = it.toFirSourceElement(FirFakeSourceElementKind.DelegatingConstructorCall) delegateConstructorSource = it.toFirSourceElement(FirFakeSourceElementKind.DelegatingConstructorCall)
} }
DELEGATED_SUPER_TYPE_ENTRY -> { DELEGATED_SUPER_TYPE_ENTRY -> {
superTypeRefs += convertExplicitDelegation( superTypeRefs += convertExplicitDelegation(it, delegateFields)
it,
delegateNumber,
delegateFields,
initializeDelegateStatements,
containerSymbol,
delegatedTypeRef
)
delegateNumber++
} }
} }
} }
val body = if (initializeDelegateStatements.isNotEmpty()) {
buildBlock {
for (statement in initializeDelegateStatements) {
statements += statement
}
}
} else null
return DelegationSpecifiers( return DelegationSpecifiers(
delegatedSuperTypeRef, superTypeRefs, superTypeCallEntry, delegateConstructorSource, delegatedSuperTypeRef, superTypeRefs, superTypeCallEntry, delegateConstructorSource, delegateFields
delegateFields, body
) )
} }
@@ -1515,14 +1486,7 @@ class DeclarationsConverter(
* : userType "by" element * : userType "by" element
* ; * ;
*/ */
private fun convertExplicitDelegation( private fun convertExplicitDelegation(explicitDelegation: LighterASTNode, delegateFields: MutableList<FirField>): FirTypeRef {
explicitDelegation: LighterASTNode,
delegateNumber: Int,
delegateFields: MutableList<FirField>,
initializeDelegateStatements: MutableList<FirStatement>,
containerSymbol: AbstractFirBasedSymbol<*>,
delegatedSelfTypeRef: FirTypeRef
): FirTypeRef {
lateinit var firTypeRef: FirTypeRef lateinit var firTypeRef: FirTypeRef
var firExpression: FirExpression? = buildErrorExpression( var firExpression: FirExpression? = buildErrorExpression(
explicitDelegation.toFirSourceElement(), ConeSimpleDiagnostic("Should have delegate", DiagnosticKind.Syntax) explicitDelegation.toFirSourceElement(), ConeSimpleDiagnostic("Should have delegate", DiagnosticKind.Syntax)
@@ -1534,7 +1498,7 @@ class DeclarationsConverter(
} }
} }
val delegateName = Name.special("<\$\$delegate_$delegateNumber>") val delegateName = Name.special("<\$\$delegate_${delegateFields.size}>")
delegateFields.add( delegateFields.add(
buildField { buildField {
source = firExpression!!.source source = firExpression!!.source
@@ -1545,24 +1509,7 @@ class DeclarationsConverter(
symbol = FirFieldSymbol(@OptIn(LocalCallableIdConstructor::class) CallableId(name)) symbol = FirFieldSymbol(@OptIn(LocalCallableIdConstructor::class) CallableId(name))
isVar = false isVar = false
status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL) status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL)
} initializer = firExpression
)
initializeDelegateStatements.add(
buildVariableAssignment {
source = firExpression!!.source
calleeReference =
buildResolvedNamedReference {
name = delegateName
resolvedSymbol = delegateFields[delegateNumber].symbol
}
rValue = firExpression!!
dispatchReceiver = buildThisReceiverExpression {
source = firExpression!!.source
calleeReference = buildImplicitThisReference {
boundSymbol = containerSymbol
}
typeRef = delegatedSelfTypeRef
}
} }
) )
return firTypeRef return firTypeRef
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.fir.expressions.builder.*
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
import org.jetbrains.kotlin.fir.references.builder.* import org.jetbrains.kotlin.fir.references.builder.*
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.LocalCallableIdConstructor import org.jetbrains.kotlin.fir.symbols.LocalCallableIdConstructor
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
@@ -544,13 +543,11 @@ class RawFirBuilder(
delegatedSelfTypeRef: FirTypeRef?, delegatedSelfTypeRef: FirTypeRef?,
delegatedEnumSuperTypeRef: FirTypeRef?, delegatedEnumSuperTypeRef: FirTypeRef?,
classKind: ClassKind, classKind: ClassKind,
containerTypeParameters: List<FirTypeParameterRef>, containerTypeParameters: List<FirTypeParameterRef>
containerSymbol: AbstractFirBasedSymbol<*>
): FirTypeRef { ): FirTypeRef {
var superTypeCallEntry: KtSuperTypeCallEntry? = null var superTypeCallEntry: KtSuperTypeCallEntry? = null
var delegatedSuperTypeRef: FirTypeRef? = null var delegatedSuperTypeRef: FirTypeRef? = null
var delegateNumber = 0 val delegateFields = mutableListOf<FirField>()
val initializeDelegateStatements = mutableListOf<FirStatement>()
for (superTypeListEntry in superTypeListEntries) { for (superTypeListEntry in superTypeListEntries) {
when (superTypeListEntry) { when (superTypeListEntry) {
is KtSuperTypeEntry -> { is KtSuperTypeEntry -> {
@@ -565,7 +562,7 @@ class RawFirBuilder(
val type = superTypeListEntry.typeReference.toFirOrErrorType() val type = superTypeListEntry.typeReference.toFirOrErrorType()
val delegateExpression = { superTypeListEntry.delegateExpression }.toFirExpression("Should have delegate") val delegateExpression = { superTypeListEntry.delegateExpression }.toFirExpression("Should have delegate")
container.superTypeRefs += type container.superTypeRefs += type
val delegateName = Name.special("<\$\$delegate_$delegateNumber>") val delegateName = Name.special("<\$\$delegate_${delegateFields.size}>")
val delegateSource = superTypeListEntry.delegateExpression?.toFirSourceElement() val delegateSource = superTypeListEntry.delegateExpression?.toFirSourceElement()
val delegateField = buildField { val delegateField = buildField {
source = delegateSource source = delegateSource
@@ -576,28 +573,9 @@ class RawFirBuilder(
symbol = FirFieldSymbol(@OptIn(LocalCallableIdConstructor::class) CallableId(name)) symbol = FirFieldSymbol(@OptIn(LocalCallableIdConstructor::class) CallableId(name))
isVar = false isVar = false
status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL) status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL)
initializer = delegateExpression
} }
initializeDelegateStatements.add( delegateFields.add(delegateField)
buildVariableAssignment {
source = delegateSource
calleeReference =
buildResolvedNamedReference {
source = delegateSource
name = delegateName
resolvedSymbol = delegateField.symbol
}
rValue = delegateExpression
dispatchReceiver = buildThisReceiverExpression {
source = delegateSource
calleeReference = buildImplicitThisReference {
boundSymbol = containerSymbol
}
delegatedSelfTypeRef?.let { typeRef = it }
}
}
)
container.declarations.add(delegateField)
delegateNumber++
} }
} }
} }
@@ -637,27 +615,22 @@ class RawFirBuilder(
container.superTypeRefs += implicitAnyType container.superTypeRefs += implicitAnyType
delegatedSuperTypeRef = implicitAnyType delegatedSuperTypeRef = implicitAnyType
} }
if (this is KtClass && this.isInterface()) return delegatedSuperTypeRef ?: implicitAnyType
// TODO: in case we have no primary constructor, // TODO: in case we have no primary constructor,
// it may be not possible to determine delegated super type right here // it may be not possible to determine delegated super type right here
delegatedSuperTypeRef = delegatedSuperTypeRef ?: defaultDelegatedSuperTypeRef delegatedSuperTypeRef = delegatedSuperTypeRef ?: defaultDelegatedSuperTypeRef
if (!this.hasPrimaryConstructor()) return delegatedSuperTypeRef if ((this !is KtClass || !this.isInterface()) && this.hasPrimaryConstructor()) {
val firPrimaryConstructor = primaryConstructor.toFirConstructor(
val firPrimaryConstructor = primaryConstructor.toFirConstructor( superTypeCallEntry,
superTypeCallEntry, delegatedSuperTypeRef,
delegatedSuperTypeRef, delegatedSelfTypeRef ?: delegatedSuperTypeRef,
delegatedSelfTypeRef ?: delegatedSuperTypeRef, owner = this,
owner = this, containerTypeParameters,
containerTypeParameters, body = null
body = if (initializeDelegateStatements.isNotEmpty()) buildBlock { )
for (statement in initializeDelegateStatements) { container.declarations += firPrimaryConstructor
statements += statement }
} container.declarations += delegateFields
} else null
)
container.declarations += firPrimaryConstructor
return delegatedSuperTypeRef return delegatedSuperTypeRef
} }
@@ -861,8 +834,7 @@ class RawFirBuilder(
delegatedSelfType, delegatedSelfType,
null, null,
classKind, classKind,
typeParameters, typeParameters
symbol
) )
val primaryConstructor = classOrObject.primaryConstructor val primaryConstructor = classOrObject.primaryConstructor
@@ -947,8 +919,7 @@ class RawFirBuilder(
delegatedSelfType, delegatedSelfType,
null, null,
ClassKind.CLASS, ClassKind.CLASS,
containerTypeParameters = emptyList(), containerTypeParameters = emptyList()
symbol
) )
typeRef = delegatedSelfType typeRef = delegatedSelfType
@@ -268,6 +268,18 @@ abstract class FirDataFlowAnalyzer<FLOW : Flow>(
return graph return graph
} }
// ----------------------------------- Field -----------------------------------
fun enterField(field: FirField) {
graphBuilder.enterField(field)?.mergeIncomingFlow()
}
fun exitField(field: FirField): ControlFlowGraph? {
val (node, graph) = graphBuilder.exitField(field) ?: return null
node.mergeIncomingFlow()
return graph
}
// ----------------------------------- Delegate ----------------------------------- // ----------------------------------- Delegate -----------------------------------
fun enterDelegateExpression() { fun enterDelegateExpression() {
@@ -280,6 +280,27 @@ class PropertyInitializerExitNode(owner: ControlFlowGraph, override val fir: Fir
} }
} }
// ----------------------------------- Field -----------------------------------
class FieldInitializerEnterNode(owner: ControlFlowGraph, override val fir: FirField, level: Int, id: Int) : CFGNode<FirField>(owner, level, id), EnterNodeMarker {
init {
owner.enterNode = this
}
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
return visitor.visitFieldInitializerEnterNode(this, data)
}
}
class FieldInitializerExitNode(owner: ControlFlowGraph, override val fir: FirField, level: Int, id: Int) : CFGNode<FirField>(owner, level, id), ExitNodeMarker {
init {
owner.exitNode = this
}
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
return visitor.visitFieldInitializerExitNode(this, data)
}
}
// ----------------------------------- Init ----------------------------------- // ----------------------------------- Init -----------------------------------
class InitBlockEnterNode(owner: ControlFlowGraph, override val fir: FirAnonymousInitializer, level: Int, id: Int) : CFGNode<FirAnonymousInitializer>(owner, level, id), EnterNodeMarker { class InitBlockEnterNode(owner: ControlFlowGraph, override val fir: FirAnonymousInitializer, level: Int, id: Int) : CFGNode<FirAnonymousInitializer>(owner, level, id), EnterNodeMarker {
@@ -85,6 +85,8 @@ fun CFGNode<*>.render(): String =
is PartOfClassInitializationNode -> "Part of class initialization" is PartOfClassInitializationNode -> "Part of class initialization"
is PropertyInitializerEnterNode -> "Enter property" is PropertyInitializerEnterNode -> "Enter property"
is PropertyInitializerExitNode -> "Exit property" is PropertyInitializerExitNode -> "Exit property"
is FieldInitializerEnterNode -> "Enter field"
is FieldInitializerExitNode -> "Exit field"
is InitBlockEnterNode -> "Enter init block" is InitBlockEnterNode -> "Enter init block"
is InitBlockExitNode -> "Exit init block" is InitBlockExitNode -> "Exit init block"
is AnnotationEnterNode -> "Enter annotation" is AnnotationEnterNode -> "Enter annotation"
@@ -80,6 +80,7 @@ class ControlFlowGraph(val declaration: FirDeclaration?, val name: String, val k
AnonymousFunction(withBody = true), AnonymousFunction(withBody = true),
ClassInitializer(withBody = true), ClassInitializer(withBody = true),
PropertyInitializer(withBody = true), PropertyInitializer(withBody = true),
FieldInitializer(withBody = true),
TopLevel(withBody = false), TopLevel(withBody = false),
AnnotationCall(withBody = true), AnnotationCall(withBody = true),
DefaultArgument(withBody = false), DefaultArgument(withBody = false),
@@ -58,7 +58,7 @@ class ControlFlowGraphBuilder {
private val shouldPassFlowFromInplaceLambda: Stack<Boolean> = stackOf(true) private val shouldPassFlowFromInplaceLambda: Stack<Boolean> = stackOf(true)
private enum class Mode { private enum class Mode {
Function, TopLevel, Body, ClassInitializer, PropertyInitializer Function, TopLevel, Body, ClassInitializer, PropertyInitializer, FieldInitializer
} }
// ----------------------------------- Node caches ----------------------------------- // ----------------------------------- Node caches -----------------------------------
@@ -522,6 +522,35 @@ class ControlFlowGraphBuilder {
return exitNode to graph return exitNode to graph
} }
// ----------------------------------- Field -----------------------------------
fun enterField(field: FirField): FieldInitializerEnterNode? {
if (field.initializer == null) return null
val graph = ControlFlowGraph(field, "val ${field.name}", ControlFlowGraph.Kind.FieldInitializer)
pushGraph(graph, Mode.FieldInitializer)
val enterNode = createFieldInitializerEnterNode(field)
val exitNode = createFieldInitializerExitNode(field)
exitTargetsForTry.push(exitNode)
enterToLocalClassesMembers[field.symbol]?.let {
addEdge(it, enterNode, preferredKind = EdgeKind.DfgForward)
}
lastNodes.push(enterNode)
return enterNode
}
fun exitField(field: FirField): Pair<FieldInitializerExitNode, ControlFlowGraph>? {
if (field.initializer == null) return null
val exitNode = exitTargetsForTry.pop() as FieldInitializerExitNode
popAndAddEdge(exitNode)
val graph = popGraph()
assert(exitNode == graph.exitNode)
return exitNode to graph
}
// ----------------------------------- Delegate ----------------------------------- // ----------------------------------- Delegate -----------------------------------
fun enterDelegateExpression() { fun enterDelegateExpression() {
@@ -58,6 +58,12 @@ fun ControlFlowGraphBuilder.createPropertyInitializerExitNode(fir: FirProperty):
fun ControlFlowGraphBuilder.createPropertyInitializerEnterNode(fir: FirProperty): PropertyInitializerEnterNode = fun ControlFlowGraphBuilder.createPropertyInitializerEnterNode(fir: FirProperty): PropertyInitializerEnterNode =
PropertyInitializerEnterNode(currentGraph, fir, levelCounter, createId()) PropertyInitializerEnterNode(currentGraph, fir, levelCounter, createId())
fun ControlFlowGraphBuilder.createFieldInitializerExitNode(fir: FirField): FieldInitializerExitNode =
FieldInitializerExitNode(currentGraph, fir, levelCounter, createId())
fun ControlFlowGraphBuilder.createFieldInitializerEnterNode(fir: FirField): FieldInitializerEnterNode =
FieldInitializerEnterNode(currentGraph, fir, levelCounter, createId())
fun ControlFlowGraphBuilder.createFunctionEnterNode(fir: FirFunction<*>): FunctionEnterNode = fun ControlFlowGraphBuilder.createFunctionEnterNode(fir: FirFunction<*>): FunctionEnterNode =
FunctionEnterNode(currentGraph, fir, levelCounter, createId()).also { FunctionEnterNode(currentGraph, fir, levelCounter, createId()).also {
currentGraph.enterNode = it currentGraph.enterNode = it
@@ -80,6 +80,16 @@ abstract class ControlFlowGraphVisitor<out R, in D> {
return visitNode(node, data) return visitNode(node, data)
} }
// ----------------------------------- Field -----------------------------------
open fun visitFieldInitializerEnterNode(node: FieldInitializerEnterNode, data: D): R {
return visitNode(node, data)
}
open fun visitFieldInitializerExitNode(node: FieldInitializerExitNode, data: D): R {
return visitNode(node, data)
}
// ----------------------------------- Init ----------------------------------- // ----------------------------------- Init -----------------------------------
open fun visitInitBlockEnterNode(node: InitBlockEnterNode, data: D): R { open fun visitInitBlockEnterNode(node: InitBlockEnterNode, data: D): R {
@@ -19,7 +19,10 @@ import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.compose import org.jetbrains.kotlin.fir.visitors.compose
class FirTypeResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) { class FirTypeResolveProcessor(
session: FirSession,
scopeSession: ScopeSession
) : FirTransformerBasedResolveProcessor(session, scopeSession) {
override val transformer = FirTypeResolveTransformer(session, scopeSession) override val transformer = FirTypeResolveTransformer(session, scopeSession)
} }
@@ -116,6 +119,14 @@ class FirTypeResolveTransformer(
} }
} }
override fun transformField(field: FirField, data: Nothing?): CompositeTransformResult<FirDeclaration> {
return withScopeCleanup {
field.replaceResolvePhase(FirResolvePhase.TYPES)
field.transformReturnTypeRef(this, data).transformAnnotations(this, data)
field.compose()
}
}
override fun transformSimpleFunction(simpleFunction: FirSimpleFunction, data: Nothing?): CompositeTransformResult<FirDeclaration> { override fun transformSimpleFunction(simpleFunction: FirSimpleFunction, data: Nothing?): CompositeTransformResult<FirDeclaration> {
return withScopeCleanup { return withScopeCleanup {
simpleFunction.addTypeParametersScope() simpleFunction.addTypeParametersScope()
@@ -259,6 +259,10 @@ open class FirBodyResolveTransformer(
return declarationsTransformer.transformProperty(property, data) return declarationsTransformer.transformProperty(property, data)
} }
override fun transformField(field: FirField, data: ResolutionMode): CompositeTransformResult<FirDeclaration> {
return declarationsTransformer.transformField(field, data)
}
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> { override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> {
return declarationsTransformer.transformRegularClass(regularClass, data) return declarationsTransformer.transformRegularClass(regularClass, data)
} }
@@ -160,6 +160,36 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
} }
} }
override fun transformField(field: FirField, data: ResolutionMode): CompositeTransformResult<FirDeclaration> {
val returnTypeRef = field.returnTypeRef
if (implicitTypeOnly) return field.compose()
if (field.resolvePhase == transformerPhase) return field.compose()
if (field.resolvePhase == FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE && transformerPhase == FirResolvePhase.BODY_RESOLVE) {
transformer.replaceDeclarationResolvePhaseIfNeeded(field, transformerPhase)
return field.compose()
}
dataFlowAnalyzer.enterField(field)
return withFullBodyResolve {
withLocalScopeCleanup {
val primaryConstructorParametersScope = context.getPrimaryConstructorAllParametersScope()
context.withTowerDataContext(context.getTowerDataContextForConstructorResolution()) {
context.withContainer(field) {
withLocalScopeCleanup {
addLocalScope(primaryConstructorParametersScope)
field.transformChildren(transformer, withExpectedType(returnTypeRef))
}
if (field.initializer != null) {
storeVariableReturnType(field)
}
}
}
transformer.replaceDeclarationResolvePhaseIfNeeded(field, transformerPhase)
dataFlowAnalyzer.exitField(field)
field.compose()
}
}
}
private fun FirFunctionCall.replacePropertyReferenceTypeInDelegateAccessors(property: FirProperty) { private fun FirFunctionCall.replacePropertyReferenceTypeInDelegateAccessors(property: FirProperty) {
// var someProperty: SomeType // var someProperty: SomeType
// get() = delegate.getValue(thisRef, kProperty: KProperty0/1/2<..., SomeType>) // get() = delegate.getValue(thisRef, kProperty: KProperty0/1/2<..., SomeType>)
@@ -102,6 +102,11 @@ open class FirContractResolveTransformer(
return property.compose() return property.compose()
} }
override fun transformField(field: FirField, data: ResolutionMode): CompositeTransformResult<FirDeclaration> {
field.updatePhase()
return field.compose()
}
private fun transformPropertyAccessor( private fun transformPropertyAccessor(
propertyAccessor: FirPropertyAccessor, propertyAccessor: FirPropertyAccessor,
owner: FirProperty owner: FirProperty
@@ -34,7 +34,7 @@ class FirClassDeclaredMemberScope(
is FirCallableMemberDeclaration<*> -> { is FirCallableMemberDeclaration<*> -> {
val name = when (declaration) { val name = when (declaration) {
is FirConstructor -> CONSTRUCTOR_NAME is FirConstructor -> CONSTRUCTOR_NAME
is FirVariable<*> -> declaration.name is FirVariable<*> -> if (declaration.isSynthetic) continue@loop else declaration.name
is FirSimpleFunction -> declaration.name is FirSimpleFunction -> declaration.name
else -> continue@loop else -> continue@loop
} }
@@ -43,6 +43,7 @@ open class FirFieldBuilder : FirAnnotationContainerBuilder {
open lateinit var returnTypeRef: FirTypeRef open lateinit var returnTypeRef: FirTypeRef
open lateinit var name: Name open lateinit var name: Name
open lateinit var symbol: FirVariableSymbol<FirField> open lateinit var symbol: FirVariableSymbol<FirField>
open var initializer: FirExpression? = null
open var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>() open var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
open val typeParameters: MutableList<FirTypeParameter> = mutableListOf() open val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
@@ -60,6 +61,7 @@ open class FirFieldBuilder : FirAnnotationContainerBuilder {
returnTypeRef, returnTypeRef,
name, name,
symbol, symbol,
initializer,
isVar, isVar,
annotations, annotations,
typeParameters, typeParameters,
@@ -38,6 +38,7 @@ internal class FirFieldImpl(
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override val name: Name, override val name: Name,
override val symbol: FirVariableSymbol<FirField>, override val symbol: FirVariableSymbol<FirField>,
override var initializer: FirExpression?,
override val isVar: Boolean, override val isVar: Boolean,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val typeParameters: MutableList<FirTypeParameter>, override val typeParameters: MutableList<FirTypeParameter>,
@@ -46,7 +47,6 @@ internal class FirFieldImpl(
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
) : FirField() { ) : FirField() {
override val receiverTypeRef: FirTypeRef? get() = null override val receiverTypeRef: FirTypeRef? get() = null
override val initializer: FirExpression? get() = null
override val delegate: FirExpression? get() = null override val delegate: FirExpression? get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirField>? get() = null override val delegateFieldSymbol: FirDelegateFieldSymbol<FirField>? get() = null
override val isVal: Boolean get() = !isVar override val isVal: Boolean get() = !isVar
@@ -60,6 +60,7 @@ internal class FirFieldImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
initializer?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
@@ -67,6 +68,7 @@ internal class FirFieldImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirFieldImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirFieldImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformInitializer(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
@@ -83,6 +85,7 @@ internal class FirFieldImpl(
} }
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirFieldImpl { override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirFieldImpl {
initializer = initializer?.transformSingle(transformer, data)
return this return this
} }
@@ -128,5 +131,7 @@ internal class FirFieldImpl(
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
override fun replaceInitializer(newInitializer: FirExpression?) {} override fun replaceInitializer(newInitializer: FirExpression?) {
initializer = newInitializer
}
} }
@@ -210,7 +210,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
withGetter = true withGetter = true
} }
defaultNull("delegateFieldSymbol", "receiverTypeRef", "initializer", "delegate", "getter", "setter", withGetter = true) defaultNull("delegateFieldSymbol", "receiverTypeRef", "delegate", "getter", "setter", withGetter = true)
} }
impl(enumEntry) { impl(enumEntry) {
@@ -0,0 +1,28 @@
// TARGET_BACKEND: JVM
class FirSession(val name: String)
interface Fir2IrComponents {
val session: FirSession
val classifierStorage: Fir2IrClassifierStorage
}
class Fir2IrComponentsStorage(
override val session: FirSession
) : Fir2IrComponents {
override lateinit var classifierStorage: Fir2IrClassifierStorage
}
class Fir2IrClassifierStorage(
private val components: Fir2IrComponents
) : Fir2IrComponents by components {
private val name = session.name
}
fun box(): String {
val session = FirSession("OK")
val components = Fir2IrComponentsStorage(session)
val classifierStorage = Fir2IrClassifierStorage(components)
components.classifierStorage = classifierStorage
return classifierStorage.session.name
}
@@ -14,7 +14,6 @@ class Test1<E : Any?> : IBase<E> {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = i
} }
override fun <B : Any?> foo(a: E, b: B) { override fun <B : Any?> foo(a: E, b: B) {
@@ -34,7 +33,7 @@ class Test1<E : Any?> : IBase<E> {
(<this>.#<$$delegate_0>, <this>).<set-x></* null */>(<set-?> = <set-?>) (<this>.#<$$delegate_0>, <this>).<set-x></* null */>(<set-?> = <set-?>)
} }
local /* final field */ val <$$delegate_0>: IBase<E> local /* final field */ val <$$delegate_0>: IBase<E> = i
} }
@@ -43,14 +42,8 @@ class Test2 : IBase<String> {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = j
} }
var j: IBase<String>
field = j
get
set
override fun <B : Any?> foo(a: String, b: B) { override fun <B : Any?> foo(a: String, b: B) {
<this>.#<$$delegate_0>.foo</* null */>(a = a, b = b) <this>.#<$$delegate_0>.foo</* null */>(a = a, b = b)
} }
@@ -68,7 +61,11 @@ class Test2 : IBase<String> {
(<this>.#<$$delegate_0>, <this>).<set-x></* null */>(<set-?> = <set-?>) (<this>.#<$$delegate_0>, <this>).<set-x></* null */>(<set-?> = <set-?>)
} }
local /* final field */ val <$$delegate_0>: IBase<String> local /* final field */ val <$$delegate_0>: IBase<String> = j
var j: IBase<String>
field = j
get
set
} }
@@ -46,9 +46,6 @@ FILE fqName:<root> fileName:/delegatedGenericImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[<root>.IBase<E of <root>.Test1>]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[<root>.IBase<E of <root>.Test1>]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<E of <root>.Test1> visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Test1<E of <root>.Test1> declared in <root>.Test1' type=<root>.Test1<E of <root>.Test1> origin=null
value: GET_VAR 'i: <root>.IBase<E of <root>.Test1> declared in <root>.Test1.<init>' type=<root>.IBase<E of <root>.Test1> origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <B> ($this:<root>.Test1<E of <root>.Test1>, a:E of <root>.Test1, b:B of <root>.Test1.foo) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <B> ($this:<root>.Test1<E of <root>.Test1>, a:E of <root>.Test1, b:B of <root>.Test1.foo) returnType:kotlin.Unit
overridden: overridden:
public abstract fun foo <B> (a: A of <root>.IBase, b: B of <root>.IBase.foo): kotlin.Unit declared in <root>.IBase public abstract fun foo <B> (a: A of <root>.IBase, b: B of <root>.IBase.foo): kotlin.Unit declared in <root>.IBase
@@ -109,6 +106,8 @@ FILE fqName:<root> fileName:/delegatedGenericImplementation.kt
$receiver: GET_VAR '<this>: kotlin.collections.List<D of <root>.Test1.<get-x>> declared in <root>.Test1.<set-x>' type=kotlin.collections.List<D of <root>.Test1.<get-x>> origin=null $receiver: GET_VAR '<this>: kotlin.collections.List<D of <root>.Test1.<get-x>> declared in <root>.Test1.<set-x>' type=kotlin.collections.List<D of <root>.Test1.<get-x>> origin=null
<set-?>: GET_VAR '<set-?>: D of <root>.Test1.<set-x>? declared in <root>.Test1.<set-x>' type=D of <root>.Test1.<set-x>? origin=null <set-?>: GET_VAR '<set-?>: D of <root>.Test1.<set-x>? declared in <root>.Test1.<set-x>' type=D of <root>.Test1.<set-x>? origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<E of <root>.Test1> visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<E of <root>.Test1> visibility:local [final]
EXPRESSION_BODY
GET_VAR 'i: <root>.IBase<E of <root>.Test1> declared in <root>.Test1.<init>' type=<root>.IBase<E of <root>.Test1> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -129,28 +128,6 @@ FILE fqName:<root> fileName:/delegatedGenericImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[<root>.IBase<kotlin.String>]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[<root>.IBase<kotlin.String>]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<kotlin.String> visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2' type=<root>.Test2 origin=null
value: GET_VAR 'j: <root>.IBase<kotlin.String> declared in <root>.Test2.<init>' type=<root>.IBase<kotlin.String> origin=null
PROPERTY name:j visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:j type:<root>.IBase<kotlin.String> visibility:private
EXPRESSION_BODY
GET_VAR 'j: <root>.IBase<kotlin.String> declared in <root>.Test2.<init>' type=<root>.IBase<kotlin.String> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-j> visibility:public modality:FINAL <> ($this:<root>.Test2) returnType:<root>.IBase<kotlin.String>
correspondingProperty: PROPERTY name:j visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-j> (): <root>.IBase<kotlin.String> declared in <root>.Test2'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:<root>.IBase<kotlin.String> visibility:private' type=<root>.IBase<kotlin.String> origin=null
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.<get-j>' type=<root>.Test2 origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-j> visibility:public modality:FINAL <> ($this:<root>.Test2, <set-?>:<root>.IBase<kotlin.String>) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:j visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
VALUE_PARAMETER name:<set-?> index:0 type:<root>.IBase<kotlin.String>
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:<root>.IBase<kotlin.String> visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.<set-j>' type=<root>.Test2 origin=null
value: GET_VAR '<set-?>: <root>.IBase<kotlin.String> declared in <root>.Test2.<set-j>' type=<root>.IBase<kotlin.String> origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <B> ($this:<root>.Test2, a:kotlin.String, b:B of <root>.Test2.foo) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <B> ($this:<root>.Test2, a:kotlin.String, b:B of <root>.Test2.foo) returnType:kotlin.Unit
overridden: overridden:
public abstract fun foo <B> (a: A of <root>.IBase, b: B of <root>.IBase.foo): kotlin.Unit declared in <root>.IBase public abstract fun foo <B> (a: A of <root>.IBase, b: B of <root>.IBase.foo): kotlin.Unit declared in <root>.IBase
@@ -211,6 +188,27 @@ FILE fqName:<root> fileName:/delegatedGenericImplementation.kt
$receiver: GET_VAR '<this>: kotlin.collections.List<D of <root>.Test2.<get-x>> declared in <root>.Test2.<set-x>' type=kotlin.collections.List<D of <root>.Test2.<get-x>> origin=null $receiver: GET_VAR '<this>: kotlin.collections.List<D of <root>.Test2.<get-x>> declared in <root>.Test2.<set-x>' type=kotlin.collections.List<D of <root>.Test2.<get-x>> origin=null
<set-?>: GET_VAR '<set-?>: D of <root>.Test2.<set-x>? declared in <root>.Test2.<set-x>' type=D of <root>.Test2.<set-x>? origin=null <set-?>: GET_VAR '<set-?>: D of <root>.Test2.<set-x>? declared in <root>.Test2.<set-x>' type=D of <root>.Test2.<set-x>? origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<kotlin.String> visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<kotlin.String> visibility:local [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.IBase<kotlin.String> declared in <root>.Test2.<init>' type=<root>.IBase<kotlin.String> origin=null
PROPERTY name:j visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:j type:<root>.IBase<kotlin.String> visibility:private
EXPRESSION_BODY
GET_VAR 'j: <root>.IBase<kotlin.String> declared in <root>.Test2.<init>' type=<root>.IBase<kotlin.String> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-j> visibility:public modality:FINAL <> ($this:<root>.Test2) returnType:<root>.IBase<kotlin.String>
correspondingProperty: PROPERTY name:j visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-j> (): <root>.IBase<kotlin.String> declared in <root>.Test2'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:<root>.IBase<kotlin.String> visibility:private' type=<root>.IBase<kotlin.String> origin=null
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.<get-j>' type=<root>.Test2 origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-j> visibility:public modality:FINAL <> ($this:<root>.Test2, <set-?>:<root>.IBase<kotlin.String>) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:j visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
VALUE_PARAMETER name:<set-?> index:0 type:<root>.IBase<kotlin.String>
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:<root>.IBase<kotlin.String> visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.<set-j>' type=<root>.Test2 origin=null
value: GET_VAR '<set-?>: <root>.IBase<kotlin.String> declared in <root>.Test2.<set-j>' type=<root>.IBase<kotlin.String> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -82,7 +82,6 @@ class Test1 : IBase {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = BaseImpl
} }
override fun foo(x: Int, s: String) { override fun foo(x: Int, s: String) {
@@ -97,7 +96,7 @@ class Test1 : IBase {
(<this>.#<$$delegate_0>, <this>).qux() (<this>.#<$$delegate_0>, <this>).qux()
} }
local /* final field */ val <$$delegate_0>: IBase local /* final field */ val <$$delegate_0>: IBase = BaseImpl
} }
@@ -106,8 +105,6 @@ class Test2 : IBase, IOther {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = BaseImpl
<this>.#<$$delegate_1> = otherImpl(x0 = "", y0 = 42)
} }
override fun foo(x: Int, s: String) { override fun foo(x: Int, s: String) {
@@ -122,7 +119,7 @@ class Test2 : IBase, IOther {
(<this>.#<$$delegate_0>, <this>).qux() (<this>.#<$$delegate_0>, <this>).qux()
} }
local /* final field */ val <$$delegate_0>: IBase local /* final field */ val <$$delegate_0>: IBase = BaseImpl
override val x: String override val x: String
override get(): String { override get(): String {
return <this>.#<$$delegate_1>.<get-x>() return <this>.#<$$delegate_1>.<get-x>()
@@ -149,7 +146,7 @@ class Test2 : IBase, IOther {
(<this>.#<$$delegate_1>, <this>).<set-z2>(<set-?> = <set-?>) (<this>.#<$$delegate_1>, <this>).<set-z2>(<set-?> = <set-?>)
} }
local /* final field */ val <$$delegate_1>: IOther local /* final field */ val <$$delegate_1>: IOther = otherImpl(x0 = "", y0 = 42)
} }
@@ -200,9 +200,6 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[<root>.IBase]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[<root>.IBase]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
value: GET_OBJECT 'CLASS OBJECT name:BaseImpl modality:FINAL visibility:public superTypes:[<root>.IBase]' type=<root>.BaseImpl
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.Test1, x:kotlin.Int, s:kotlin.String) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.Test1, x:kotlin.Int, s:kotlin.String) returnType:kotlin.Unit
overridden: overridden:
public abstract fun foo (x: kotlin.Int, s: kotlin.String): kotlin.Unit declared in <root>.IBase public abstract fun foo (x: kotlin.Int, s: kotlin.String): kotlin.Unit declared in <root>.IBase
@@ -235,6 +232,8 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.qux' type=<root>.Test1 origin=null receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.qux' type=<root>.Test1 origin=null
$receiver: GET_VAR '<this>: kotlin.String declared in <root>.Test1.qux' type=kotlin.String origin=null $receiver: GET_VAR '<this>: kotlin.String declared in <root>.Test1.qux' type=kotlin.String origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase visibility:local [final]
EXPRESSION_BODY
GET_OBJECT 'CLASS OBJECT name:BaseImpl modality:FINAL visibility:public superTypes:[<root>.IBase]' type=<root>.BaseImpl
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -254,14 +253,6 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[<root>.IBase; <root>.IOther]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[<root>.IBase; <root>.IOther]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2' type=<root>.Test2 origin=null
value: GET_OBJECT 'CLASS OBJECT name:BaseImpl modality:FINAL visibility:public superTypes:[<root>.IBase]' type=<root>.BaseImpl
SET_FIELD 'FIELD DELEGATE name:<$$delegate_1> type:<root>.IOther visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2' type=<root>.Test2 origin=null
value: CALL 'public final fun otherImpl (x0: kotlin.String, y0: kotlin.Int): <root>.IOther declared in <root>' type=<root>.IOther origin=null
x0: CONST String type=kotlin.String value=""
y0: CONST Int type=kotlin.Int value=42
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.Test2, x:kotlin.Int, s:kotlin.String) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.Test2, x:kotlin.Int, s:kotlin.String) returnType:kotlin.Unit
overridden: overridden:
public abstract fun foo (x: kotlin.Int, s: kotlin.String): kotlin.Unit declared in <root>.IBase public abstract fun foo (x: kotlin.Int, s: kotlin.String): kotlin.Unit declared in <root>.IBase
@@ -294,6 +285,8 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.qux' type=<root>.Test2 origin=null receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.qux' type=<root>.Test2 origin=null
$receiver: GET_VAR '<this>: kotlin.String declared in <root>.Test2.qux' type=kotlin.String origin=null $receiver: GET_VAR '<this>: kotlin.String declared in <root>.Test2.qux' type=kotlin.String origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase visibility:local [final]
EXPRESSION_BODY
GET_OBJECT 'CLASS OBJECT name:BaseImpl modality:FINAL visibility:public superTypes:[<root>.IBase]' type=<root>.BaseImpl
PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [val] PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-x> visibility:public modality:OPEN <> ($this:<root>.Test2) returnType:kotlin.String FUN DELEGATED_MEMBER name:<get-x> visibility:public modality:OPEN <> ($this:<root>.Test2) returnType:kotlin.String
correspondingProperty: PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [val] correspondingProperty: PROPERTY DELEGATED_MEMBER name:x visibility:public modality:OPEN [val]
@@ -367,6 +360,10 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
$receiver: GET_VAR '<this>: kotlin.Byte declared in <root>.Test2.<set-z2>' type=kotlin.Byte origin=null $receiver: GET_VAR '<this>: kotlin.Byte declared in <root>.Test2.<set-z2>' type=kotlin.Byte origin=null
<set-?>: GET_VAR '<set-?>: kotlin.Int declared in <root>.Test2.<set-z2>' type=kotlin.Int origin=null <set-?>: GET_VAR '<set-?>: kotlin.Int declared in <root>.Test2.<set-z2>' type=kotlin.Int origin=null
FIELD DELEGATE name:<$$delegate_1> type:<root>.IOther visibility:local [final] FIELD DELEGATE name:<$$delegate_1> type:<root>.IOther visibility:local [final]
EXPRESSION_BODY
CALL 'public final fun otherImpl (x0: kotlin.String, y0: kotlin.Int): <root>.IOther declared in <root>' type=<root>.IOther origin=null
x0: CONST String type=kotlin.String value=""
y0: CONST Int type=kotlin.Int value=42
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -3,13 +3,8 @@ class Test : J {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = j
} }
private val j: J
field = j
private get
override fun takeNotNull(x: @EnhancedNullability String) { override fun takeNotNull(x: @EnhancedNullability String) {
<this>.#<$$delegate_0>.takeNotNull(x = x) <this>.#<$$delegate_0>.takeNotNull(x = x)
} }
@@ -36,7 +31,10 @@ class Test : J {
return <this>.#<$$delegate_0>.returnsFlexible() return <this>.#<$$delegate_0>.returnsFlexible()
} }
local /* final field */ val <$$delegate_0>: J local /* final field */ val <$$delegate_0>: J = j
private val j: J
field = j
private get
} }
@@ -6,20 +6,6 @@ FILE fqName:<root> fileName:/delegatedImplementationOfJavaInterface.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[<root>.J]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[<root>.J]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Test declared in <root>.Test' type=<root>.Test origin=null
value: GET_VAR 'j: <root>.J declared in <root>.Test.<init>' type=<root>.J origin=null
PROPERTY name:j visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:j type:<root>.J visibility:private [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.J declared in <root>.Test.<init>' type=<root>.J origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-j> visibility:private modality:FINAL <> ($this:<root>.Test) returnType:<root>.J
correspondingProperty: PROPERTY name:j visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Test
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-j> (): <root>.J declared in <root>.Test'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:<root>.J visibility:private [final]' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.Test declared in <root>.Test.<get-j>' type=<root>.Test origin=null
FUN DELEGATED_MEMBER name:takeNotNull visibility:public modality:OPEN <> ($this:<root>.Test, x:@[EnhancedNullability] kotlin.String) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:takeNotNull visibility:public modality:OPEN <> ($this:<root>.Test, x:@[EnhancedNullability] kotlin.String) returnType:kotlin.Unit
overridden: overridden:
public abstract fun takeNotNull (x: @[EnhancedNullability] kotlin.String): kotlin.Unit declared in <root>.J public abstract fun takeNotNull (x: @[EnhancedNullability] kotlin.String): kotlin.Unit declared in <root>.J
@@ -82,6 +68,19 @@ FILE fqName:<root> fileName:/delegatedImplementationOfJavaInterface.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final]' type=<root>.J origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final]' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.Test declared in <root>.Test.returnsFlexible' type=<root>.Test origin=null receiver: GET_VAR '<this>: <root>.Test declared in <root>.Test.returnsFlexible' type=<root>.Test origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.J declared in <root>.Test.<init>' type=<root>.J origin=null
PROPERTY name:j visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:j type:<root>.J visibility:private [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.J declared in <root>.Test.<init>' type=<root>.J origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-j> visibility:private modality:FINAL <> ($this:<root>.Test) returnType:<root>.J
correspondingProperty: PROPERTY name:j visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Test
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-j> (): <root>.J declared in <root>.Test'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:j type:<root>.J visibility:private [final]' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.Test declared in <root>.Test.<get-j>' type=<root>.Test origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -24,17 +24,15 @@ class C : IFooBar {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = FooBarImpl
}
override fun bar() {
} }
override fun foo() { override fun foo() {
<this>.#<$$delegate_0>.foo() <this>.#<$$delegate_0>.foo()
} }
local /* final field */ val <$$delegate_0>: IFooBar local /* final field */ val <$$delegate_0>: IFooBar = FooBarImpl
override fun bar() {
}
} }
@@ -53,14 +53,6 @@ FILE fqName:<root> fileName:/delegatedImplementationWithExplicitOverride.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.IFooBar]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.IFooBar]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFooBar visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.C declared in <root>.C' type=<root>.C origin=null
value: GET_OBJECT 'CLASS OBJECT name:FooBarImpl modality:FINAL visibility:public superTypes:[<root>.IFooBar]' type=<root>.FooBarImpl
FUN name:bar visibility:public modality:FINAL <> ($this:<root>.C) returnType:kotlin.Unit
overridden:
public abstract fun bar (): kotlin.Unit declared in <root>.IFooBar
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.Unit
overridden: overridden:
public abstract fun foo (): kotlin.Unit declared in <root>.IFooBar public abstract fun foo (): kotlin.Unit declared in <root>.IFooBar
@@ -70,6 +62,13 @@ FILE fqName:<root> fileName:/delegatedImplementationWithExplicitOverride.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFooBar visibility:local [final]' type=<root>.IFooBar origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFooBar visibility:local [final]' type=<root>.IFooBar origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.foo' type=<root>.C origin=null receiver: GET_VAR '<this>: <root>.C declared in <root>.C.foo' type=<root>.C origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFooBar visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFooBar visibility:local [final]
EXPRESSION_BODY
GET_OBJECT 'CLASS OBJECT name:FooBarImpl modality:FINAL visibility:public superTypes:[<root>.IFooBar]' type=<root>.FooBarImpl
FUN name:bar visibility:public modality:FINAL <> ($this:<root>.C) returnType:kotlin.Unit
overridden:
public abstract fun bar (): kotlin.Unit declared in <root>.IFooBar
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -52,14 +52,13 @@ class TestJFoo : IFoo {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = JFoo()
} }
override fun foo(): String { override fun foo(): String {
return <this>.#<$$delegate_0>.foo() return <this>.#<$$delegate_0>.foo()
} }
local /* final field */ val <$$delegate_0>: IFoo local /* final field */ val <$$delegate_0>: IFoo = JFoo()
} }
@@ -68,14 +67,13 @@ class TestK1 : IFoo {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = K1()
} }
override fun foo(): String { override fun foo(): String {
return <this>.#<$$delegate_0>.foo() return <this>.#<$$delegate_0>.foo()
} }
local /* final field */ val <$$delegate_0>: IFoo local /* final field */ val <$$delegate_0>: IFoo = K1()
} }
@@ -84,14 +82,13 @@ class TestK2 : IFoo {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = K2()
} }
override fun foo(): String { override fun foo(): String {
return <this>.#<$$delegate_0>.foo() return <this>.#<$$delegate_0>.foo()
} }
local /* final field */ val <$$delegate_0>: IFoo local /* final field */ val <$$delegate_0>: IFoo = K2()
} }
@@ -100,14 +97,13 @@ class TestK3 : IFoo {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = K3()
} }
override fun foo(): String { override fun foo(): String {
return <this>.#<$$delegate_0>.foo() return <this>.#<$$delegate_0>.foo()
} }
local /* final field */ val <$$delegate_0>: IFoo local /* final field */ val <$$delegate_0>: IFoo = K3()
} }
@@ -116,14 +112,13 @@ class TestK4 : IFoo {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = K4()
} }
override fun foo(): String { override fun foo(): String {
return <this>.#<$$delegate_0>.foo() return <this>.#<$$delegate_0>.foo()
} }
local /* final field */ val <$$delegate_0>: IFoo local /* final field */ val <$$delegate_0>: IFoo = K4()
} }
@@ -124,9 +124,6 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestJFoo modality:FINAL visibility:public superTypes:[<root>.IFoo]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestJFoo modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.TestJFoo declared in <root>.TestJFoo' type=<root>.TestJFoo origin=null
value: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.JFoo' type=<root>.JFoo origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestJFoo) returnType:kotlin.String FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestJFoo) returnType:kotlin.String
overridden: overridden:
public abstract fun foo (): kotlin.String declared in <root>.IFoo public abstract fun foo (): kotlin.String declared in <root>.IFoo
@@ -137,6 +134,8 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.TestJFoo declared in <root>.TestJFoo.foo' type=<root>.TestJFoo origin=null receiver: GET_VAR '<this>: <root>.TestJFoo declared in <root>.TestJFoo.foo' type=<root>.TestJFoo origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
EXPRESSION_BODY
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.JFoo' type=<root>.JFoo origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -156,9 +155,6 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK1 modality:FINAL visibility:public superTypes:[<root>.IFoo]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK1 modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.TestK1 declared in <root>.TestK1' type=<root>.TestK1 origin=null
value: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K1' type=<root>.K1 origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK1) returnType:kotlin.String FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK1) returnType:kotlin.String
overridden: overridden:
public abstract fun foo (): kotlin.String declared in <root>.IFoo public abstract fun foo (): kotlin.String declared in <root>.IFoo
@@ -169,6 +165,8 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.TestK1 declared in <root>.TestK1.foo' type=<root>.TestK1 origin=null receiver: GET_VAR '<this>: <root>.TestK1 declared in <root>.TestK1.foo' type=<root>.TestK1 origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
EXPRESSION_BODY
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K1' type=<root>.K1 origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -188,9 +186,6 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK2 modality:FINAL visibility:public superTypes:[<root>.IFoo]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK2 modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.TestK2 declared in <root>.TestK2' type=<root>.TestK2 origin=null
value: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K2' type=<root>.K2 origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK2) returnType:kotlin.String FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK2) returnType:kotlin.String
overridden: overridden:
public abstract fun foo (): kotlin.String declared in <root>.IFoo public abstract fun foo (): kotlin.String declared in <root>.IFoo
@@ -201,6 +196,8 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.TestK2 declared in <root>.TestK2.foo' type=<root>.TestK2 origin=null receiver: GET_VAR '<this>: <root>.TestK2 declared in <root>.TestK2.foo' type=<root>.TestK2 origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
EXPRESSION_BODY
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K2' type=<root>.K2 origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -220,9 +217,6 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK3 modality:FINAL visibility:public superTypes:[<root>.IFoo]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK3 modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.TestK3 declared in <root>.TestK3' type=<root>.TestK3 origin=null
value: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K3' type=<root>.K3 origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK3) returnType:kotlin.String FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK3) returnType:kotlin.String
overridden: overridden:
public abstract fun foo (): kotlin.String declared in <root>.IFoo public abstract fun foo (): kotlin.String declared in <root>.IFoo
@@ -233,6 +227,8 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.TestK3 declared in <root>.TestK3.foo' type=<root>.TestK3 origin=null receiver: GET_VAR '<this>: <root>.TestK3 declared in <root>.TestK3.foo' type=<root>.TestK3 origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
EXPRESSION_BODY
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K3' type=<root>.K3 origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -252,9 +248,6 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK4 modality:FINAL visibility:public superTypes:[<root>.IFoo]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TestK4 modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.TestK4 declared in <root>.TestK4' type=<root>.TestK4 origin=null
value: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K4' type=<root>.K4 origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK4) returnType:kotlin.String FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.TestK4) returnType:kotlin.String
overridden: overridden:
public abstract fun foo (): kotlin.String declared in <root>.IFoo public abstract fun foo (): kotlin.String declared in <root>.IFoo
@@ -265,6 +258,8 @@ FILE fqName:<root> fileName:/implicitNotNullOnDelegatedImplementation.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.TestK4 declared in <root>.TestK4.foo' type=<root>.TestK4 origin=null receiver: GET_VAR '<this>: <root>.TestK4 declared in <root>.TestK4.foo' type=<root>.TestK4 origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
EXPRESSION_BODY
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.K4' type=<root>.K4 origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -24,7 +24,6 @@ class DFoo : IFoo {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = d
} }
@Ann @Ann
@@ -49,7 +48,7 @@ class DFoo : IFoo {
return (<this>.#<$$delegate_0>, <this>).<get-testExtVal>() return (<this>.#<$$delegate_0>, <this>).<get-testExtVal>()
} }
local /* final field */ val <$$delegate_0>: IFoo local /* final field */ val <$$delegate_0>: IFoo = d
} }
@@ -59,9 +59,6 @@ FILE fqName:<root> fileName:/annotationsOnDelegatedMembers.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DFoo modality:FINAL visibility:public superTypes:[<root>.IFoo]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DFoo modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.DFoo declared in <root>.DFoo' type=<root>.DFoo origin=null
value: GET_VAR 'd: <root>.IFoo declared in <root>.DFoo.<init>' type=<root>.IFoo origin=null
FUN DELEGATED_MEMBER name:testFun visibility:public modality:OPEN <> ($this:<root>.DFoo) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:testFun visibility:public modality:OPEN <> ($this:<root>.DFoo) returnType:kotlin.Unit
annotations: annotations:
Ann Ann
@@ -113,6 +110,8 @@ FILE fqName:<root> fileName:/annotationsOnDelegatedMembers.kt
receiver: GET_VAR '<this>: <root>.DFoo declared in <root>.DFoo.<get-testExtVal>' type=<root>.DFoo origin=null receiver: GET_VAR '<this>: <root>.DFoo declared in <root>.DFoo.<get-testExtVal>' type=<root>.DFoo origin=null
$receiver: GET_VAR '<this>: kotlin.String declared in <root>.DFoo.<get-testExtVal>' type=kotlin.String origin=null $receiver: GET_VAR '<this>: kotlin.String declared in <root>.DFoo.<get-testExtVal>' type=kotlin.String origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
EXPRESSION_BODY
GET_VAR 'd: <root>.IFoo declared in <root>.DFoo.<init>' type=<root>.IFoo origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -18,7 +18,6 @@ class Delegated : IFoo {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = foo
} }
@Deprecated(message = "") @Deprecated(message = "")
@@ -33,7 +32,7 @@ class Delegated : IFoo {
return (<this>.#<$$delegate_0>, <this>).<get-extProp>() return (<this>.#<$$delegate_0>, <this>).<get-extProp>()
} }
local /* final field */ val <$$delegate_0>: IFoo local /* final field */ val <$$delegate_0>: IFoo = foo
} }
@@ -40,9 +40,6 @@ FILE fqName:<root> fileName:/inheritingDeprecation.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Delegated modality:FINAL visibility:public superTypes:[<root>.IFoo]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Delegated modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated' type=<root>.Delegated origin=null
value: GET_VAR 'foo: <root>.IFoo declared in <root>.Delegated.<init>' type=<root>.IFoo origin=null
PROPERTY DELEGATED_MEMBER name:prop visibility:public modality:OPEN [val] PROPERTY DELEGATED_MEMBER name:prop visibility:public modality:OPEN [val]
annotations: annotations:
Deprecated(message = '', replaceWith = <null>, level = <null>) Deprecated(message = '', replaceWith = <null>, level = <null>)
@@ -72,6 +69,8 @@ FILE fqName:<root> fileName:/inheritingDeprecation.kt
receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated.<get-extProp>' type=<root>.Delegated origin=null receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated.<get-extProp>' type=<root>.Delegated origin=null
$receiver: GET_VAR '<this>: kotlin.String declared in <root>.Delegated.<get-extProp>' type=kotlin.String origin=null $receiver: GET_VAR '<this>: kotlin.String declared in <root>.Delegated.<get-extProp>' type=kotlin.String origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
EXPRESSION_BODY
GET_VAR 'foo: <root>.IFoo declared in <root>.Delegated.<init>' type=<root>.IFoo origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -11,7 +11,6 @@ class A : I {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = i
} }
override val <T : Any?> T.id: T override val <T : Any?> T.id: T
@@ -19,7 +18,7 @@ class A : I {
return (<this>.#<$$delegate_0>, <this>).<get-id></* null */>() return (<this>.#<$$delegate_0>, <this>).<get-id></* null */>()
} }
local /* final field */ val <$$delegate_0>: I local /* final field */ val <$$delegate_0>: I = i
} }
+2 -3
View File
@@ -30,9 +30,6 @@ FILE fqName:<root> fileName:/kt35550.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:FINAL visibility:public superTypes:[<root>.I]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:FINAL visibility:public superTypes:[<root>.I]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.I visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.A declared in <root>.A' type=<root>.A origin=null
value: GET_VAR 'i: <root>.I declared in <root>.A.<init>' type=<root>.I origin=null
PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val] PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-id> visibility:public modality:OPEN <T> ($this:<root>.A, $receiver:T of <root>.A.<get-id>) returnType:T of <root>.A.<get-id> FUN DELEGATED_MEMBER name:<get-id> visibility:public modality:OPEN <T> ($this:<root>.A, $receiver:T of <root>.A.<get-id>) returnType:T of <root>.A.<get-id>
correspondingProperty: PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val] correspondingProperty: PROPERTY DELEGATED_MEMBER name:id visibility:public modality:OPEN [val]
@@ -49,6 +46,8 @@ FILE fqName:<root> fileName:/kt35550.kt
receiver: GET_VAR '<this>: <root>.A declared in <root>.A.<get-id>' type=<root>.A origin=null receiver: GET_VAR '<this>: <root>.A declared in <root>.A.<get-id>' type=<root>.A origin=null
$receiver: GET_VAR '<this>: T of <root>.A.<get-id> declared in <root>.A.<get-id>' type=T of <root>.A.<get-id> origin=null $receiver: GET_VAR '<this>: T of <root>.A.<get-id> declared in <root>.A.<get-id>' type=T of <root>.A.<get-id> origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.I visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.I visibility:local [final]
EXPRESSION_BODY
GET_VAR 'i: <root>.I declared in <root>.A.<init>' type=<root>.I origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -12,7 +12,6 @@ class Test<TT : Any?> : IBase<TT> {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = impl
} }
override fun foo(x: Int) { override fun foo(x: Int) {
@@ -28,7 +27,7 @@ class Test<TT : Any?> : IBase<TT> {
return <this>.#<$$delegate_0>.<get-bar>() return <this>.#<$$delegate_0>.<get-bar>()
} }
local /* final field */ val <$$delegate_0>: IBase<TT> local /* final field */ val <$$delegate_0>: IBase<TT> = impl
} }
@@ -35,9 +35,6 @@ FILE fqName:<root> fileName:/delegatedMembers.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[<root>.IBase<TT of <root>.Test>]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[<root>.IBase<TT of <root>.Test>]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<TT of <root>.Test> visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Test<TT of <root>.Test> declared in <root>.Test' type=<root>.Test<TT of <root>.Test> origin=null
value: GET_VAR 'impl: <root>.IBase<TT of <root>.Test> declared in <root>.Test.<init>' type=<root>.IBase<TT of <root>.Test> origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.Test<TT of <root>.Test>, x:kotlin.Int) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:<root>.Test<TT of <root>.Test>, x:kotlin.Int) returnType:kotlin.Unit
overridden: overridden:
public abstract fun foo (x: kotlin.Int): kotlin.Unit declared in <root>.IBase public abstract fun foo (x: kotlin.Int): kotlin.Unit declared in <root>.IBase
@@ -74,6 +71,8 @@ FILE fqName:<root> fileName:/delegatedMembers.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<TT of <root>.Test> visibility:local [final]' type=<root>.IBase<TT of <root>.Test> origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<TT of <root>.Test> visibility:local [final]' type=<root>.IBase<TT of <root>.Test> origin=null
receiver: GET_VAR '<this>: <root>.Test<TT of <root>.Test> declared in <root>.Test.<get-bar>' type=<root>.Test<TT of <root>.Test> origin=null receiver: GET_VAR '<this>: <root>.Test<TT of <root>.Test> declared in <root>.Test.<get-bar>' type=<root>.Test<TT of <root>.Test> origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<TT of <root>.Test> visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.IBase<TT of <root>.Test> visibility:local [final]
EXPRESSION_BODY
GET_VAR 'impl: <root>.IBase<TT of <root>.Test> declared in <root>.Test.<init>' type=<root>.IBase<TT of <root>.Test> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -56,10 +56,6 @@ class AnnotationLoader {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = visitor
}
override fun visit() {
} }
override fun visitArray(): Visitor? { override fun visitArray(): Visitor? {
@@ -70,7 +66,9 @@ class AnnotationLoader {
return <this>.#<$$delegate_0>.visitAnnotation() return <this>.#<$$delegate_0>.visitAnnotation()
} }
local /* final field */ val <$$delegate_0>: Visitor local /* final field */ val <$$delegate_0>: Visitor = visitor
override fun visit() {
}
} }
@@ -108,14 +108,6 @@ FILE fqName:<root> fileName:/AnnotationLoader.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
value: GET_VAR 'val visitor: <root>.Visitor [val] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation' type=<root>.Visitor origin=null
FUN name:visit visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
FUN DELEGATED_MEMBER name:visitArray visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:<root>.Visitor? FUN DELEGATED_MEMBER name:visitArray visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden: overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
@@ -135,6 +127,13 @@ FILE fqName:<root> fileName:/AnnotationLoader.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=<root>.Visitor origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=<root>.Visitor origin=null
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>.visitAnnotation' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>.visitAnnotation' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]
EXPRESSION_BODY
GET_VAR 'val visitor: <root>.Visitor [val] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation' type=<root>.Visitor origin=null
FUN name:visit visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -3,7 +3,6 @@ class Impl : A, B {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = b
} }
override fun add(element: String?): Boolean { override fun add(element: String?): Boolean {
@@ -51,7 +50,7 @@ class Impl : A, B {
return <this>.#<$$delegate_0>.<get-size>() return <this>.#<$$delegate_0>.<get-size>()
} }
local /* final field */ val <$$delegate_0>: B local /* final field */ val <$$delegate_0>: B = b
} }
@@ -6,9 +6,6 @@ FILE fqName:<root> fileName:/DelegationAndInheritanceFromJava.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Impl modality:FINAL visibility:public superTypes:[<root>.Foo.A; <root>.Foo.B]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Impl modality:FINAL visibility:public superTypes:[<root>.Foo.A; <root>.Foo.B]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Impl declared in <root>.Impl' type=<root>.Impl origin=null
value: GET_VAR 'b: <root>.Foo.B declared in <root>.Impl.<init>' type=<root>.Foo.B origin=null
FUN DELEGATED_MEMBER name:add visibility:public modality:OPEN <> ($this:<root>.Impl, element:kotlin.String?) returnType:kotlin.Boolean FUN DELEGATED_MEMBER name:add visibility:public modality:OPEN <> ($this:<root>.Impl, element:kotlin.String?) returnType:kotlin.Boolean
overridden: overridden:
public abstract fun add (element: E of kotlin.collections.MutableSet): kotlin.Boolean declared in kotlin.collections.MutableSet public abstract fun add (element: E of kotlin.collections.MutableSet): kotlin.Boolean declared in kotlin.collections.MutableSet
@@ -124,6 +121,8 @@ FILE fqName:<root> fileName:/DelegationAndInheritanceFromJava.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final]' type=<root>.Foo.B origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final]' type=<root>.Foo.B origin=null
receiver: GET_VAR '<this>: <root>.Impl declared in <root>.Impl.<get-size>' type=<root>.Impl origin=null receiver: GET_VAR '<this>: <root>.Impl declared in <root>.Impl.<get-size>' type=<root>.Impl origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final]
EXPRESSION_BODY
GET_VAR 'b: <root>.Foo.B declared in <root>.Impl.<init>' type=<root>.Foo.B origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -0,0 +1,66 @@
class FirSession {
constructor(name: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val name: String
field = name
get
}
interface Fir2IrComponents {
abstract val session: FirSession
abstract get
abstract val classifierStorage: Fir2IrClassifierStorage
abstract get
}
class Fir2IrComponentsStorage : Fir2IrComponents {
constructor(session: FirSession) /* primary */ {
super/*Any*/()
/* <init>() */
}
override val session: FirSession
field = session
override get
override lateinit var classifierStorage: Fir2IrClassifierStorage
override get
set
}
class Fir2IrClassifierStorage : Fir2IrComponents {
constructor(components: Fir2IrComponents) /* primary */ {
super/*Any*/()
/* <init>() */
}
override val session: FirSession
override get(): FirSession {
return <this>.#<$$delegate_0>.<get-session>()
}
override val classifierStorage: Fir2IrClassifierStorage
override get(): Fir2IrClassifierStorage {
return <this>.#<$$delegate_0>.<get-classifierStorage>()
}
local /* final field */ val <$$delegate_0>: Fir2IrComponents = components
private val components: Fir2IrComponents
field = components
private get
private val name: String
field = <this>.<get-session>().<get-name>()
private get
}
@@ -0,0 +1,176 @@
FILE fqName:<root> fileName:/Fir2IrClassifierStorage.kt
CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSession
CONSTRUCTOR visibility:public <> (name:kotlin.String) returnType:<root>.FirSession [primary]
VALUE_PARAMETER name:name index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:name visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 'name: kotlin.String declared in <root>.FirSession.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:public modality:FINAL <> ($this:<root>.FirSession) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.FirSession
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-name> (): kotlin.String declared in <root>.FirSession'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.FirSession declared in <root>.FirSession.<get-name>' type=<root>.FirSession origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:Fir2IrComponents modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:session visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponentsStorage
CONSTRUCTOR visibility:public <> (session:<root>.FirSession) returnType:<root>.Fir2IrComponentsStorage [primary]
VALUE_PARAMETER name:session index:0 type:<root>.FirSession
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY name:session visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]
EXPRESSION_BODY
GET_VAR 'session: <root>.FirSession declared in <root>.Fir2IrComponentsStorage.<init>' type=<root>.FirSession origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:FINAL <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:FINAL [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]' type=<root>.FirSession origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-session>' type=<root>.Fir2IrComponentsStorage origin=null
PROPERTY name:classifierStorage visibility:public modality:FINAL [lateinit,var]
FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:FINAL <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:FINAL [lateinit,var]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=<root>.Fir2IrClassifierStorage origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-classifierStorage> visibility:public modality:FINAL <> ($this:<root>.Fir2IrComponentsStorage, <set-?>:<root>.Fir2IrClassifierStorage) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:FINAL [lateinit,var]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
VALUE_PARAMETER name:<set-?> index:0 type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
value: GET_VAR '<set-?>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrClassifierStorage origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrClassifierStorage
CONSTRUCTOR visibility:public <> (components:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage [primary]
VALUE_PARAMETER name:components index:0 type:<root>.Fir2IrComponents
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-session> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents' type=<root>.FirSession origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Fir2IrComponents visibility:local [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-session>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents' type=<root>.Fir2IrClassifierStorage origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Fir2IrComponents visibility:local [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-classifierStorage>' type=<root>.Fir2IrClassifierStorage origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Fir2IrComponents visibility:local [final]
EXPRESSION_BODY
GET_VAR 'components: <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage.<init>' type=<root>.Fir2IrComponents origin=null
PROPERTY name:components visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]
EXPRESSION_BODY
GET_VAR 'components: <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage.<init>' type=<root>.Fir2IrComponents origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-components> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrComponents
correspondingProperty: PROPERTY name:components visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-components> (): <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-components>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY name:name visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun <get-name> (): kotlin.String declared in <root>.FirSession' type=kotlin.String origin=GET_PROPERTY
$this: CALL 'public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage' type=<root>.FirSession origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage' type=<root>.Fir2IrClassifierStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-name> (): kotlin.String declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-name>' type=<root>.Fir2IrClassifierStorage origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -0,0 +1,18 @@
class FirSession(val name: String)
interface Fir2IrComponents {
val session: FirSession
val classifierStorage: Fir2IrClassifierStorage
}
class Fir2IrComponentsStorage(
override val session: FirSession
) : Fir2IrComponents {
override lateinit var classifierStorage: Fir2IrClassifierStorage
}
class Fir2IrClassifierStorage(
private val components: Fir2IrComponents
) : Fir2IrComponents by components {
private val name = session.name
}
@@ -0,0 +1,65 @@
class FirSession {
constructor(name: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val name: String
field = name
get
}
interface Fir2IrComponents {
abstract val session: FirSession
abstract get
abstract val classifierStorage: Fir2IrClassifierStorage
abstract get
}
class Fir2IrComponentsStorage : Fir2IrComponents {
constructor(session: FirSession) /* primary */ {
super/*Any*/()
/* <init>() */
}
override val session: FirSession
field = session
override get
override lateinit var classifierStorage: Fir2IrClassifierStorage
override get
open set
}
class Fir2IrClassifierStorage : Fir2IrComponents {
constructor(components: Fir2IrComponents) /* primary */ {
super/*Any*/()
/* <init>() */
}
private val components: Fir2IrComponents
field = components
private get
override val classifierStorage: Fir2IrClassifierStorage
override get(): Fir2IrClassifierStorage {
return <this>.#components.<get-classifierStorage>()
}
override val session: FirSession
override get(): FirSession {
return <this>.#components.<get-session>()
}
private val name: String
field = <this>.<get-session>().<get-name>()
private get
}
@@ -0,0 +1,173 @@
FILE fqName:<root> fileName:/Fir2IrClassifierStorage.kt
CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSession
CONSTRUCTOR visibility:public <> (name:kotlin.String) returnType:<root>.FirSession [primary]
VALUE_PARAMETER name:name index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:name visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 'name: kotlin.String declared in <root>.FirSession.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:public modality:FINAL <> ($this:<root>.FirSession) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.FirSession
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-name> (): kotlin.String declared in <root>.FirSession'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.FirSession declared in <root>.FirSession.<get-name>' type=<root>.FirSession origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:Fir2IrComponents modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:session visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponentsStorage
CONSTRUCTOR visibility:public <> (session:<root>.FirSession) returnType:<root>.Fir2IrComponentsStorage [primary]
VALUE_PARAMETER name:session index:0 type:<root>.FirSession
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY name:session visibility:public modality:OPEN [val]
FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]
EXPRESSION_BODY
GET_VAR 'session: <root>.FirSession declared in <root>.Fir2IrComponentsStorage.<init>' type=<root>.FirSession origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:OPEN <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]' type=<root>.FirSession origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-session>' type=<root>.Fir2IrComponentsStorage origin=null
PROPERTY name:classifierStorage visibility:public modality:OPEN [lateinit,var]
FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:OPEN [lateinit,var]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=<root>.Fir2IrClassifierStorage origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrComponentsStorage, <set-?>:<root>.Fir2IrClassifierStorage) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:OPEN [lateinit,var]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
VALUE_PARAMETER name:<set-?> index:0 type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
value: GET_VAR '<set-?>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrClassifierStorage origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrClassifierStorage
CONSTRUCTOR visibility:public <> (components:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage [primary]
VALUE_PARAMETER name:components index:0 type:<root>.Fir2IrComponents
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY name:components visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]
EXPRESSION_BODY
GET_VAR 'components: <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage.<init>' type=<root>.Fir2IrComponents origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-components> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrComponents
correspondingProperty: PROPERTY name:components visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-components> (): <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-components>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents' type=<root>.Fir2IrClassifierStorage origin=null
$this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-classifierStorage>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-session> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents' type=<root>.FirSession origin=null
$this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-session>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY name:name visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun <get-name> (): kotlin.String declared in <root>.FirSession' type=kotlin.String origin=GET_PROPERTY
$this: CALL 'public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage' type=<root>.FirSession origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage' type=<root>.Fir2IrClassifierStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-name> (): kotlin.String declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-name>' type=<root>.Fir2IrClassifierStorage origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -34,9 +34,13 @@ data class DataClass : Derived, Delegate {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = delegate
} }
override fun bar() {
<this>.#<$$delegate_0>.bar()
}
local /* final field */ val <$$delegate_0>: Delegate = delegate
val delegate: Delegate val delegate: Delegate
field = delegate field = delegate
get get
@@ -49,11 +53,6 @@ data class DataClass : Derived, Delegate {
return DataClass(delegate = delegate) return DataClass(delegate = delegate)
} }
override fun bar() {
<this>.#<$$delegate_0>.bar()
}
local /* final field */ val <$$delegate_0>: Delegate
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
when { when {
EQEQEQ(arg0 = <this>, arg1 = other) -> return true EQEQEQ(arg0 = <this>, arg1 = other) -> return true
@@ -90,9 +90,17 @@ FILE fqName:<root> fileName:/SignatureClash.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DataClass modality:FINAL visibility:public [data] superTypes:[<root>.Derived; <root>.Delegate]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DataClass modality:FINAL visibility:public [data] superTypes:[<root>.Derived; <root>.Delegate]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]' type=kotlin.Unit origin=EQ FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:<root>.DataClass) returnType:kotlin.Unit
receiver: GET_VAR '<this>: <root>.DataClass declared in <root>.DataClass' type=<root>.DataClass origin=null overridden:
value: GET_VAR 'delegate: <root>.Delegate declared in <root>.DataClass.<init>' type=<root>.Delegate origin=null public abstract fun bar (): kotlin.Unit declared in <root>.Delegate
$this: VALUE_PARAMETER name:<this> type:<root>.DataClass
BLOCK_BODY
CALL 'public abstract fun bar (): kotlin.Unit declared in <root>.Delegate' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]' type=<root>.Delegate origin=null
receiver: GET_VAR '<this>: <root>.DataClass declared in <root>.DataClass.bar' type=<root>.DataClass origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]
EXPRESSION_BODY
GET_VAR 'delegate: <root>.Delegate declared in <root>.DataClass.<init>' type=<root>.Delegate origin=null
PROPERTY name:delegate visibility:public modality:FINAL [val] PROPERTY name:delegate visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:delegate type:<root>.Delegate visibility:private [final] FIELD PROPERTY_BACKING_FIELD name:delegate type:<root>.Delegate visibility:private [final]
EXPRESSION_BODY EXPRESSION_BODY
@@ -120,15 +128,6 @@ FILE fqName:<root> fileName:/SignatureClash.kt
RETURN type=kotlin.Nothing from='public final fun copy (delegate: <root>.Delegate): <root>.DataClass declared in <root>.DataClass' RETURN type=kotlin.Nothing from='public final fun copy (delegate: <root>.Delegate): <root>.DataClass declared in <root>.DataClass'
CONSTRUCTOR_CALL 'public constructor <init> (delegate: <root>.Delegate) [primary] declared in <root>.DataClass' type=<root>.DataClass origin=null CONSTRUCTOR_CALL 'public constructor <init> (delegate: <root>.Delegate) [primary] declared in <root>.DataClass' type=<root>.DataClass origin=null
delegate: GET_VAR 'delegate: <root>.Delegate declared in <root>.DataClass.copy' type=<root>.Delegate origin=null delegate: GET_VAR 'delegate: <root>.Delegate declared in <root>.DataClass.copy' type=<root>.Delegate origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:<root>.DataClass) returnType:kotlin.Unit
overridden:
public abstract fun bar (): kotlin.Unit declared in <root>.Delegate
$this: VALUE_PARAMETER name:<this> type:<root>.DataClass
BLOCK_BODY
CALL 'public abstract fun bar (): kotlin.Unit declared in <root>.Delegate' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]' type=<root>.Delegate origin=null
receiver: GET_VAR '<this>: <root>.DataClass declared in <root>.DataClass.bar' type=<root>.DataClass origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]
FUN GENERATED_DATA_CLASS_MEMBER name:equals visibility:public modality:OPEN <> ($this:<root>.DataClass, other:kotlin.Any?) returnType:kotlin.Boolean FUN GENERATED_DATA_CLASS_MEMBER name:equals visibility:public modality:OPEN <> ($this:<root>.DataClass, other:kotlin.Any?) returnType:kotlin.Boolean
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
+4 -6
View File
@@ -3,13 +3,8 @@ open class ControlFlowInfo<K : Any?, V : Any?> : Map<K, V> {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = map
} }
val map: Map<K, V>
field = map
get
override fun containsKey(key: K): Boolean { override fun containsKey(key: K): Boolean {
return <this>.#<$$delegate_0>.containsKey(key = key) return <this>.#<$$delegate_0>.containsKey(key = key)
} }
@@ -52,7 +47,10 @@ open class ControlFlowInfo<K : Any?, V : Any?> : Map<K, V> {
return <this>.#<$$delegate_0>.<get-values>() return <this>.#<$$delegate_0>.<get-values>()
} }
local /* final field */ val <$$delegate_0>: Map<K, V> local /* final field */ val <$$delegate_0>: Map<K, V> = map
val map: Map<K, V>
field = map
get
} }
+13 -14
View File
@@ -8,20 +8,6 @@ FILE fqName:<root> fileName:/kt43342.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ControlFlowInfo modality:OPEN visibility:public superTypes:[kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ControlFlowInfo modality:OPEN visibility:public superTypes:[kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
value: GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
PROPERTY name:map visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]
EXPRESSION_BODY
GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-map> visibility:public modality:FINAL <> ($this:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>) returnType:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
correspondingProperty: PROPERTY name:map visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-map> (): kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-map>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
FUN DELEGATED_MEMBER name:containsKey visibility:public modality:OPEN <> ($this:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>, key:K of <root>.ControlFlowInfo) returnType:kotlin.Boolean FUN DELEGATED_MEMBER name:containsKey visibility:public modality:OPEN <> ($this:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>, key:K of <root>.ControlFlowInfo) returnType:kotlin.Boolean
overridden: overridden:
public abstract fun containsKey (key: K of kotlin.collections.Map): kotlin.Boolean declared in kotlin.collections.Map public abstract fun containsKey (key: K of kotlin.collections.Map): kotlin.Boolean declared in kotlin.collections.Map
@@ -125,6 +111,19 @@ FILE fqName:<root> fileName:/kt43342.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-values>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-values>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final]
EXPRESSION_BODY
GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
PROPERTY name:map visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]
EXPRESSION_BODY
GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-map> visibility:public modality:FINAL <> ($this:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>) returnType:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
correspondingProperty: PROPERTY name:map visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-map> (): kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-map>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -11,8 +11,6 @@ class C : J, K {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = j
<this>.#<$$delegate_1> = k
} }
override fun jf1(): Collection<out CharSequence?>? { override fun jf1(): Collection<out CharSequence?>? {
@@ -31,7 +29,7 @@ class C : J, K {
<this>.#<$$delegate_0>.jg2(c = c) <this>.#<$$delegate_0>.jg2(c = c)
} }
local /* final field */ val <$$delegate_0>: J local /* final field */ val <$$delegate_0>: J = j
override fun kf1(): Collection<out CharSequence> { override fun kf1(): Collection<out CharSequence> {
return <this>.#<$$delegate_1>.kf1() return <this>.#<$$delegate_1>.kf1()
} }
@@ -48,7 +46,7 @@ class C : J, K {
<this>.#<$$delegate_1>.kg2(c = c) <this>.#<$$delegate_1>.kg2(c = c)
} }
local /* final field */ val <$$delegate_1>: K local /* final field */ val <$$delegate_1>: K = k
} }
+4 -6
View File
@@ -32,12 +32,6 @@ FILE fqName:<root> fileName:/javaWildcardType.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.J; <root>.K]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.J; <root>.K]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.C declared in <root>.C' type=<root>.C origin=null
value: GET_VAR 'j: <root>.J declared in <root>.C.<init>' type=<root>.J origin=null
SET_FIELD 'FIELD DELEGATE name:<$$delegate_1> type:<root>.K visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.C declared in <root>.C' type=<root>.C origin=null
value: GET_VAR 'k: <root>.K declared in <root>.C.<init>' type=<root>.K origin=null
FUN DELEGATED_MEMBER name:jf1 visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.collections.Collection<out kotlin.CharSequence?>? FUN DELEGATED_MEMBER name:jf1 visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.collections.Collection<out kotlin.CharSequence?>?
overridden: overridden:
public abstract fun jf1 (): kotlin.collections.Collection<out kotlin.CharSequence?>? declared in <root>.J public abstract fun jf1 (): kotlin.collections.Collection<out kotlin.CharSequence?>? declared in <root>.J
@@ -77,6 +71,8 @@ FILE fqName:<root> fileName:/javaWildcardType.kt
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.jg2' type=<root>.C origin=null receiver: GET_VAR '<this>: <root>.C declared in <root>.C.jg2' type=<root>.C origin=null
c: GET_VAR 'c: kotlin.collections.Collection<kotlin.CharSequence?>? declared in <root>.C.jg2' type=kotlin.collections.Collection<kotlin.CharSequence?>? origin=null c: GET_VAR 'c: kotlin.collections.Collection<kotlin.CharSequence?>? declared in <root>.C.jg2' type=kotlin.collections.Collection<kotlin.CharSequence?>? origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.J visibility:local [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.J declared in <root>.C.<init>' type=<root>.J origin=null
FUN DELEGATED_MEMBER name:kf1 visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.collections.Collection<out kotlin.CharSequence> FUN DELEGATED_MEMBER name:kf1 visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.collections.Collection<out kotlin.CharSequence>
overridden: overridden:
public abstract fun kf1 (): kotlin.collections.Collection<out kotlin.CharSequence> declared in <root>.K public abstract fun kf1 (): kotlin.collections.Collection<out kotlin.CharSequence> declared in <root>.K
@@ -116,6 +112,8 @@ FILE fqName:<root> fileName:/javaWildcardType.kt
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.kg2' type=<root>.C origin=null receiver: GET_VAR '<this>: <root>.C declared in <root>.C.kg2' type=<root>.C origin=null
c: GET_VAR 'c: kotlin.collections.Collection<kotlin.CharSequence> declared in <root>.C.kg2' type=kotlin.collections.Collection<kotlin.CharSequence> origin=null c: GET_VAR 'c: kotlin.collections.Collection<kotlin.CharSequence> declared in <root>.C.kg2' type=kotlin.collections.Collection<kotlin.CharSequence> origin=null
FIELD DELEGATE name:<$$delegate_1> type:<root>.K visibility:local [final] FIELD DELEGATE name:<$$delegate_1> type:<root>.K visibility:local [final]
EXPRESSION_BODY
GET_VAR 'k: <root>.K declared in <root>.C.<init>' type=<root>.K origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -42,7 +42,6 @@ class KRaw : JRaw {
super/*Any*/() super/*Any*/()
/* <init>() */ /* <init>() */
<this>.#<$$delegate_0> = j
} }
override fun takesRawList(list: List<*>?) { override fun takesRawList(list: List<*>?) {
@@ -77,7 +76,7 @@ class KRaw : JRaw {
return <this>.#<$$delegate_0>.returnsRawGenericOut() return <this>.#<$$delegate_0>.returnsRawGenericOut()
} }
local /* final field */ val <$$delegate_0>: JRaw local /* final field */ val <$$delegate_0>: JRaw = j
} }
@@ -84,9 +84,6 @@ FILE fqName:<root> fileName:/rawTypeInSignature.kt
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any' DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:KRaw modality:FINAL visibility:public superTypes:[<root>.JRaw]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:KRaw modality:FINAL visibility:public superTypes:[<root>.JRaw]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.JRaw visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw' type=<root>.KRaw origin=null
value: GET_VAR 'j: <root>.JRaw declared in <root>.KRaw.<init>' type=<root>.JRaw origin=null
FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:<root>.KRaw, list:kotlin.collections.List<*>?) returnType:kotlin.Unit FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:<root>.KRaw, list:kotlin.collections.List<*>?) returnType:kotlin.Unit
overridden: overridden:
public abstract fun takesRawList (list: kotlin.collections.List<*>?): kotlin.Unit declared in <root>.JRaw public abstract fun takesRawList (list: kotlin.collections.List<*>?): kotlin.Unit declared in <root>.JRaw
@@ -164,6 +161,8 @@ FILE fqName:<root> fileName:/rawTypeInSignature.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.JRaw visibility:local [final]' type=<root>.JRaw origin=null $this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.JRaw visibility:local [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawGenericOut' type=<root>.KRaw origin=null receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawGenericOut' type=<root>.KRaw origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.JRaw visibility:local [final] FIELD DELEGATE name:<$$delegate_0> type:<root>.JRaw visibility:local [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.JRaw declared in <root>.KRaw.<init>' type=<root>.JRaw origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -14840,6 +14840,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt"); runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt");
} }
@Test
@TestMetadata("Fir2IrClassifierStorage.kt")
public void testFir2IrClassifierStorage() throws Exception {
runTest("compiler/testData/codegen/box/fir/Fir2IrClassifierStorage.kt");
}
@Test @Test
@TestMetadata("IrBuiltIns.kt") @TestMetadata("IrBuiltIns.kt")
public void testIrBuiltIns() throws Exception { public void testIrBuiltIns() throws Exception {
@@ -14840,6 +14840,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt"); runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt");
} }
@Test
@TestMetadata("Fir2IrClassifierStorage.kt")
public void testFir2IrClassifierStorage() throws Exception {
runTest("compiler/testData/codegen/box/fir/Fir2IrClassifierStorage.kt");
}
@Test @Test
@TestMetadata("IrBuiltIns.kt") @TestMetadata("IrBuiltIns.kt")
public void testIrBuiltIns() throws Exception { public void testIrBuiltIns() throws Exception {
@@ -2116,6 +2116,12 @@ public class IrTextTestGenerated extends AbstractIrTextTest {
runTest("compiler/testData/ir/irText/firProblems/deprecated.kt"); runTest("compiler/testData/ir/irText/firProblems/deprecated.kt");
} }
@Test
@TestMetadata("Fir2IrClassifierStorage.kt")
public void testFir2IrClassifierStorage() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/Fir2IrClassifierStorage.kt");
}
@Test @Test
@TestMetadata("FirBuilder.kt") @TestMetadata("FirBuilder.kt")
public void testFirBuilder() throws Exception { public void testFirBuilder() throws Exception {
@@ -12273,6 +12273,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt"); runTest("compiler/testData/codegen/box/fir/FakeOverrideBuilder.kt");
} }
@TestMetadata("Fir2IrClassifierStorage.kt")
public void testFir2IrClassifierStorage() throws Exception {
runTest("compiler/testData/codegen/box/fir/Fir2IrClassifierStorage.kt");
}
@TestMetadata("IrBuiltIns.kt") @TestMetadata("IrBuiltIns.kt")
public void testIrBuiltIns() throws Exception { public void testIrBuiltIns() throws Exception {
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt"); runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");