[FIR] Apply argument mapping to delegated constructor calls
This commit is contained in:
+7
-4
@@ -260,10 +260,9 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
|
|
||||||
private fun Candidate.createArgumentsMapping(): ExpectedArgumentType? {
|
private fun Candidate.createArgumentsMapping(): ExpectedArgumentType? {
|
||||||
return argumentMapping?.map { (argument, valueParameter) ->
|
return argumentMapping?.map { (argument, valueParameter) ->
|
||||||
val expectedType = valueParameter.returnTypeRef.substitute(this)
|
val expectedType = valueParameter.returnTypeRef.substitute(this)
|
||||||
argument.unwrapArgument() to expectedType
|
argument.unwrapArgument() to expectedType
|
||||||
}
|
}?.toMap()?.toExpectedType()
|
||||||
?.toMap()?.toExpectedType()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformDelegatedConstructorCall(
|
override fun transformDelegatedConstructorCall(
|
||||||
@@ -272,8 +271,12 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
): CompositeTransformResult<FirStatement> {
|
): CompositeTransformResult<FirStatement> {
|
||||||
val calleeReference =
|
val calleeReference =
|
||||||
delegatedConstructorCall.calleeReference as? FirNamedReferenceWithCandidate ?: return delegatedConstructorCall.compose()
|
delegatedConstructorCall.calleeReference as? FirNamedReferenceWithCandidate ?: return delegatedConstructorCall.compose()
|
||||||
|
val subCandidate = calleeReference.candidate
|
||||||
|
|
||||||
delegatedConstructorCall.argumentList.transformArguments(this, calleeReference.candidate.createArgumentsMapping())
|
delegatedConstructorCall.argumentList.transformArguments(this, calleeReference.candidate.createArgumentsMapping())
|
||||||
|
subCandidate.argumentMapping?.let {
|
||||||
|
delegatedConstructorCall.replaceArgumentList(buildResolvedArgumentList(it))
|
||||||
|
}
|
||||||
return delegatedConstructorCall.transformCalleeReference(
|
return delegatedConstructorCall.transformCalleeReference(
|
||||||
StoreCalleeReference,
|
StoreCalleeReference,
|
||||||
buildResolvedNamedReference {
|
buildResolvedNamedReference {
|
||||||
|
|||||||
Reference in New Issue
Block a user