[IR] Fixed bug with type parameters of referenced constructor
This commit is contained in:
+6
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user