diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index d9a850e635c..5ec8868dc3c 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -390,18 +390,22 @@ class LocalDeclarationsLowering( val newCallee = oldCallee.transformed ?: return expression val newReflectionTarget = expression.reflectionTarget?.run { owner.transformed } + val typeParameters = if (newCallee is IrConstructor) + newCallee.parentAsClass.typeParameters + else + newCallee.typeParameters return IrFunctionReferenceImpl( expression.startOffset, expression.endOffset, expression.type, // TODO functional type for transformed descriptor newCallee.symbol, - typeArgumentsCount = newCallee.typeParameters.size, + typeArgumentsCount = typeParameters.size, valueArgumentsCount = newCallee.valueParameters.size, reflectionTarget = newReflectionTarget?.symbol, origin = expression.origin ).also { it.fillArguments2(expression, newCallee) it.setLocalTypeArguments(oldCallee) - it.copyTypeArgumentsFrom(expression, shift = newCallee.typeParameters.size - expression.typeArgumentsCount) + it.copyTypeArgumentsFrom(expression, shift = typeParameters.size - expression.typeArgumentsCount) it.copyAttributes(expression) } }