diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt index 95042bfea42..db619a4b4f2 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt @@ -246,23 +246,25 @@ internal class ClassMemberGenerator( private fun FirDelegatedConstructorCall.toIrDelegatingConstructorCall(): IrExpression { val constructedIrType = constructedTypeRef.toIrType() - val constructorSymbol = (this.calleeReference as? FirResolvedNamedReference)?.resolvedSymbol as? FirConstructorSymbol + val referencedSymbol = (this.calleeReference as? FirResolvedNamedReference)?.resolvedSymbol as? FirConstructorSymbol ?: return convertWithOffsets { startOffset, endOffset -> IrErrorCallExpressionImpl( startOffset, endOffset, constructedIrType, "Cannot find delegated constructor call" ) } + val constructorSymbol = referencedSymbol.deepestMatchingOverriddenSymbol() as FirConstructorSymbol val firDispatchReceiver = dispatchReceiver return convertWithOffsets { startOffset, endOffset -> val irConstructorSymbol = declarationStorage.getIrFunctionSymbol(constructorSymbol) as IrConstructorSymbol val typeArguments = (constructedTypeRef as? FirResolvedTypeRef)?.type?.typeArguments - if (constructorSymbol.fir.isFromEnumClass || constructorSymbol.fir.returnTypeRef.isEnum) { + val constructor = constructorSymbol.fir + if (constructor.isFromEnumClass || constructor.returnTypeRef.isEnum) { IrEnumConstructorCallImpl( startOffset, endOffset, constructedIrType, irConstructorSymbol, typeArgumentsCount = typeArguments?.size ?: 0, - valueArgumentsCount = constructorSymbol.fir.valueParameters.size + valueArgumentsCount = constructor.valueParameters.size ).apply { } } else { diff --git a/compiler/testData/ir/irText/expressions/thisOfGenericOuterClass.fir.txt b/compiler/testData/ir/irText/expressions/thisOfGenericOuterClass.fir.txt index 52ee20f2a8b..7a0c8561375 100644 --- a/compiler/testData/ir/irText/expressions/thisOfGenericOuterClass.fir.txt +++ b/compiler/testData/ir/irText/expressions/thisOfGenericOuterClass.fir.txt @@ -72,7 +72,7 @@ FILE fqName: fileName:/thisOfGenericOuterClass.kt $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.test. CONSTRUCTOR visibility:private <> () returnType:.test. [primary] BLOCK_BODY - DELEGATING_CONSTRUCTOR_CALL 'public constructor (y: kotlin.Int) declared in .Outer.Inner' + DELEGATING_CONSTRUCTOR_CALL 'public constructor (y: kotlin.Int) [primary] declared in .Outer.Inner' <1>: kotlin.Int $this: GET_VAR ': .Outer declared in .test' type=.Outer origin=null y: CONST Int type=kotlin.Int value=42