Use proper applicability for constraint warnings
^KT-47316 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
1224d28deb
commit
c3a5a7754d
+2
-2
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.resolve.calls.components.CallableReferenceCandidate
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintSystemError
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintError
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintWarning
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability.*
|
||||
import org.jetbrains.kotlin.types.TypeConstructor
|
||||
@@ -282,4 +282,4 @@ fun ConstraintSystemError.asDiagnostic(): KotlinConstraintSystemDiagnostic = Kot
|
||||
fun Collection<ConstraintSystemError>.asDiagnostics(): List<KotlinConstraintSystemDiagnostic> = map(ConstraintSystemError::asDiagnostic)
|
||||
|
||||
fun List<KotlinCallDiagnostic>.filterErrorDiagnostics() =
|
||||
filter { it !is KotlinConstraintSystemDiagnostic || (it.error as? NewConstraintError)?.isWarning != true }
|
||||
filter { it !is KotlinConstraintSystemDiagnostic || it.error !is NewConstraintWarning }
|
||||
|
||||
@@ -248,10 +248,13 @@ sealed class CallResolutionResult(
|
||||
fun completedDiagnostic(substitutor: NewTypeSubstitutor): List<KotlinCallDiagnostic> {
|
||||
return diagnostics.map {
|
||||
val error = it.constraintSystemError ?: return@map it
|
||||
if (error !is NewConstraintError) return@map it
|
||||
if (error !is NewConstraintMismatch) return@map it
|
||||
val lowerType = error.lowerType.safeAs<KotlinType>()?.unwrap() ?: return@map it
|
||||
val newLowerType = substitutor.safeSubstitute(lowerType.unCapture())
|
||||
NewConstraintError(newLowerType, error.upperType, error.position, error.isWarning).asDiagnostic()
|
||||
when (error) {
|
||||
is NewConstraintError -> NewConstraintError(newLowerType, error.upperType, error.position).asDiagnostic()
|
||||
is NewConstraintWarning -> NewConstraintWarning(newLowerType, error.upperType, error.position).asDiagnostic()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user