[NI] Force variable substitution for properties with stub types

This commit is contained in:
Mikhail Zarechenskiy
2020-02-17 04:46:26 +03:00
parent 155b716e7e
commit 724bb1b134
6 changed files with 418 additions and 3 deletions
@@ -773,13 +773,14 @@ class NewResolvedCallImpl<D : CallableDescriptor>(
}
is FunctionDescriptor -> candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
is PropertyDescriptor -> {
val shouldRunApproximation = candidateDescriptor.returnType?.let { type ->
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 DefinitelyNotNullType } ||
type.contains { it is StubType }
} ?: false
if (candidateDescriptor.typeParameters.isNotEmpty() || shouldRunApproximation)
if (candidateDescriptor.typeParameters.isNotEmpty() || shouldForceApproximationAndSubstitution)
candidateDescriptor.substituteInferredVariablesAndApproximate(substitutor)
else
candidateDescriptor