[NI] Remove unneeded computation of possible types for return type
This call was needed at some point for smartcasts on qualified
expressions but become obsolete (most likely after
daa27016ca).
Now `ComplexDataFlowBenchmark` has similar results for NI and OI
This commit is contained in:
-15
@@ -226,21 +226,6 @@ class KotlinResolutionCallbacksImpl(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createReceiverWithSmartCastInfo(resolvedAtom: ResolvedCallAtom): ReceiverValueWithSmartCastInfo? {
|
|
||||||
val returnType = resolvedAtom.candidateDescriptor.returnType ?: return null
|
|
||||||
val psiKotlinCall = resolvedAtom.atom.psiKotlinCall
|
|
||||||
val callElement = psiKotlinCall.psiCall.callElement.safeAs<KtExpression>() ?: return null
|
|
||||||
val expression = findCommonParent(callElement, resolvedAtom.atom.psiKotlinCall.explicitReceiver)
|
|
||||||
|
|
||||||
return transformToReceiverWithSmartCastInfo(
|
|
||||||
resolvedAtom.candidateDescriptor,
|
|
||||||
trace.bindingContext,
|
|
||||||
psiKotlinCall.resultDataFlowInfo,
|
|
||||||
ExpressionReceiver.create(expression, returnType, trace.bindingContext),
|
|
||||||
languageVersionSettings, dataFlowValueFactory
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isCompileTimeConstant(resolvedAtom: ResolvedCallAtom, expectedType: UnwrappedType): Boolean {
|
override fun isCompileTimeConstant(resolvedAtom: ResolvedCallAtom, expectedType: UnwrappedType): Boolean {
|
||||||
val descriptor = resolvedAtom.candidateDescriptor
|
val descriptor = resolvedAtom.candidateDescriptor
|
||||||
|
|
||||||
|
|||||||
-2
@@ -56,8 +56,6 @@ interface KotlinResolutionCallbacks {
|
|||||||
|
|
||||||
fun bindStubResolvedCallForCandidate(candidate: ResolvedCallAtom)
|
fun bindStubResolvedCallForCandidate(candidate: ResolvedCallAtom)
|
||||||
|
|
||||||
fun createReceiverWithSmartCastInfo(resolvedAtom: ResolvedCallAtom): ReceiverValueWithSmartCastInfo?
|
|
||||||
|
|
||||||
fun isCompileTimeConstant(resolvedAtom: ResolvedCallAtom, expectedType: UnwrappedType): Boolean
|
fun isCompileTimeConstant(resolvedAtom: ResolvedCallAtom, expectedType: UnwrappedType): Boolean
|
||||||
|
|
||||||
val inferenceSession: InferenceSession
|
val inferenceSession: InferenceSession
|
||||||
|
|||||||
+4
-13
@@ -41,7 +41,7 @@ class KotlinCallCompleter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val candidate = prepareCandidateForCompletion(factory, candidates, resolutionCallbacks)
|
val candidate = prepareCandidateForCompletion(factory, candidates, resolutionCallbacks)
|
||||||
val returnType = candidate.returnTypeWithSmartCastInfo(resolutionCallbacks)
|
val returnType = candidate.substitutedReturnType()
|
||||||
|
|
||||||
candidate.addExpectedTypeConstraint(returnType, expectedType)
|
candidate.addExpectedTypeConstraint(returnType, expectedType)
|
||||||
candidate.addExpectedTypeFromCastConstraint(returnType, resolutionCallbacks)
|
candidate.addExpectedTypeFromCastConstraint(returnType, resolutionCallbacks)
|
||||||
@@ -65,7 +65,7 @@ class KotlinCallCompleter(
|
|||||||
val diagnosticsHolder = KotlinDiagnosticsHolder.SimpleHolder()
|
val diagnosticsHolder = KotlinDiagnosticsHolder.SimpleHolder()
|
||||||
|
|
||||||
candidate.addExpectedTypeConstraint(
|
candidate.addExpectedTypeConstraint(
|
||||||
candidate.returnTypeWithSmartCastInfo(resolutionCallbacks), expectedType
|
candidate.substitutedReturnType(), expectedType
|
||||||
)
|
)
|
||||||
|
|
||||||
runCompletion(
|
runCompletion(
|
||||||
@@ -143,10 +143,9 @@ class KotlinCallCompleter(
|
|||||||
return candidate ?: factory.createErrorCandidate().forceResolution()
|
return candidate ?: factory.createErrorCandidate().forceResolution()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KotlinResolutionCandidate.returnTypeWithSmartCastInfo(resolutionCallbacks: KotlinResolutionCallbacks): UnwrappedType? {
|
private fun KotlinResolutionCandidate.substitutedReturnType(): UnwrappedType? {
|
||||||
val returnType = resolvedCall.candidateDescriptor.returnType?.unwrap() ?: return null
|
val returnType = resolvedCall.candidateDescriptor.returnType?.unwrap() ?: return null
|
||||||
val returnTypeWithSmartCastInfo = computeReturnTypeWithSmartCastInfo(returnType, resolutionCallbacks)
|
return resolvedCall.substitutor.safeSubstitute(returnType)
|
||||||
return resolvedCall.substitutor.safeSubstitute(returnTypeWithSmartCastInfo)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KotlinResolutionCandidate.addExpectedTypeConstraint(
|
private fun KotlinResolutionCandidate.addExpectedTypeConstraint(
|
||||||
@@ -250,14 +249,6 @@ class KotlinCallCompleter(
|
|||||||
private inline fun <T> Iterable<T>.anyOrAll(requireAll: Boolean, p: (T) -> Boolean): Boolean =
|
private inline fun <T> Iterable<T>.anyOrAll(requireAll: Boolean, p: (T) -> Boolean): Boolean =
|
||||||
if (requireAll) all(p) else any(p)
|
if (requireAll) all(p) else any(p)
|
||||||
|
|
||||||
private fun KotlinResolutionCandidate.computeReturnTypeWithSmartCastInfo(
|
|
||||||
returnType: UnwrappedType,
|
|
||||||
resolutionCallbacks: KotlinResolutionCallbacks
|
|
||||||
): UnwrappedType {
|
|
||||||
if (resolvedCall.atom.callKind != KotlinCallKind.VARIABLE) return returnType
|
|
||||||
return resolutionCallbacks.createReceiverWithSmartCastInfo(resolvedCall)?.stableType ?: returnType
|
|
||||||
}
|
|
||||||
|
|
||||||
fun KotlinResolutionCandidate.asCallResolutionResult(
|
fun KotlinResolutionCandidate.asCallResolutionResult(
|
||||||
type: ConstraintSystemCompletionMode,
|
type: ConstraintSystemCompletionMode,
|
||||||
diagnosticsHolder: KotlinDiagnosticsHolder.SimpleHolder
|
diagnosticsHolder: KotlinDiagnosticsHolder.SimpleHolder
|
||||||
|
|||||||
Reference in New Issue
Block a user