[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,18 +773,24 @@ class NewResolvedCallImpl<D : CallableDescriptor>(
} }
is FunctionDescriptor -> candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor) is FunctionDescriptor -> candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
is PropertyDescriptor -> { is PropertyDescriptor -> {
if (candidateDescriptor.typeParameters.isNotEmpty())
candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
else {
val shouldForceApproximationAndSubstitution = candidateDescriptor.returnType?.let { type -> val shouldForceApproximationAndSubstitution = candidateDescriptor.returnType?.let { type ->
type.contains { it is NewCapturedType } || type.contains {
type.contains { it.constructor is IntegerLiteralTypeConstructor } || it is NewCapturedType ||
type.contains { it is DefinitelyNotNullType } || it.constructor is IntegerLiteralTypeConstructor ||
type.contains { it is StubType } it is DefinitelyNotNullType ||
it is StubType
}
} ?: false } ?: false
if (candidateDescriptor.typeParameters.isNotEmpty() || shouldForceApproximationAndSubstitution) if (shouldForceApproximationAndSubstitution)
candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor) candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
else else
candidateDescriptor candidateDescriptor
} }
}
else -> candidateDescriptor else -> candidateDescriptor
} }