[FIR] Fix reporting of CANNOT_INFER_PARAMETER_TYPE on lambda parameters
^KT-56138 Fixed
This commit is contained in:
committed by
Space Team
parent
76d360d793
commit
f479a56f5e
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.inference
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeCannotInferParameterType
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeCannotInferTypeParameterType
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
@@ -459,7 +459,7 @@ class ConstraintSystemCompleter(components: BodyResolveComponents, private val c
|
||||
): ConeErrorType {
|
||||
val diagnostic = when (typeParameterSymbol) {
|
||||
null -> ConeSimpleDiagnostic(message, DiagnosticKind.CannotInferParameterType)
|
||||
else -> ConeCannotInferParameterType(
|
||||
else -> ConeCannotInferTypeParameterType(
|
||||
typeParameterSymbol,
|
||||
message,
|
||||
)
|
||||
|
||||
+1
-1
@@ -332,7 +332,7 @@ class FirCallCompleter(
|
||||
lambdaArgument.valueParameters.forEachIndexed { index, parameter ->
|
||||
val newReturnType = parameters[index].approximateLambdaInputType()
|
||||
val newReturnTypeRef = if (parameter.returnTypeRef is FirImplicitTypeRef) {
|
||||
newReturnType.toFirResolvedTypeRef(parameter.source)
|
||||
newReturnType.toFirResolvedTypeRef(parameter.source?.fakeElement(KtFakeSourceElementKind.ImplicitReturnTypeOfLambdaValueParameter))
|
||||
} else parameter.returnTypeRef.resolvedTypeFromPrototype(newReturnType)
|
||||
parameter.replaceReturnTypeRef(newReturnTypeRef)
|
||||
lookupTracker?.recordTypeResolveAsLookup(newReturnTypeRef, parameter.source, fileSource)
|
||||
|
||||
+2
-5
@@ -6,8 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.resolve.inference
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeCannotInferValueParameterType
|
||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
||||
@@ -85,9 +84,7 @@ fun extractLambdaInfoFromFunctionType(
|
||||
argumentValueParameters.mapIndexed { index, parameter ->
|
||||
parameter.returnTypeRef.coneTypeSafe()
|
||||
?: expectedParameters.getOrNull(index)
|
||||
?: ConeErrorType(
|
||||
ConeSimpleDiagnostic("Cannot infer type for parameter ${parameter.name}", DiagnosticKind.CannotInferParameterType)
|
||||
)
|
||||
?: ConeErrorType(ConeCannotInferValueParameterType(parameter.symbol))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user