[NI] Minor optimisation: don't call extra contains checks

This commit is contained in:
Mikhail Zarechenskiy
2020-02-17 04:49:44 +03:00
parent 724bb1b134
commit f9129332b7
@@ -773,17 +773,23 @@ class NewResolvedCallImpl<D : CallableDescriptor>(
}
is FunctionDescriptor -> candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
is PropertyDescriptor -> {
val shouldForceApproximationAndSubstitution = candidateDescriptor.returnType?.let { type ->
type.contains { it is NewCapturedType } ||
type.contains { it.constructor is IntegerLiteralTypeConstructor } ||
type.contains { it is DefinitelyNotNullType } ||
type.contains { it is StubType }
} ?: false
if (candidateDescriptor.typeParameters.isNotEmpty() || shouldForceApproximationAndSubstitution)
if (candidateDescriptor.typeParameters.isNotEmpty())
candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
else
candidateDescriptor
else {
val shouldForceApproximationAndSubstitution = candidateDescriptor.returnType?.let { type ->
type.contains {
it is NewCapturedType ||
it.constructor is IntegerLiteralTypeConstructor ||
it is DefinitelyNotNullType ||
it is StubType
}
} ?: false
if (shouldForceApproximationAndSubstitution)
candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
else
candidateDescriptor
}
}
else -> candidateDescriptor
}