From 3f3873dc50b8a6f71bfddf19d24df7decb74edc8 Mon Sep 17 00:00:00 2001 From: Mark Punzalan Date: Mon, 7 Feb 2022 23:18:25 +0000 Subject: [PATCH] Analysis API: Return KtCallCandidateInfo instead of KtCallInfo in KtCallResolver.collectAllCandidates(). --- .../components/KtFe10CallResolver.kt | 2 +- .../api/fir/components/KtFirCallResolver.kt | 67 ++++--- .../AbstractResolveCandidatesTest.kt | 9 +- .../impl/base/test/components/testUtils.kt | 160 ++++++++------- .../kotlin/analysis/api/calls/KtCall.kt | 43 ++++ .../analysis/api/components/KtCallResolver.kt | 7 +- .../multipleCandidates/ambiguous.txt | 153 +++++++-------- .../ambiguousImplicitInvoke.txt | 125 ++++++------ .../ambiguousWithExplicitTypeParameters.txt | 183 +++++++++--------- .../ambiguousWithInferredTypeParameters.txt | 183 +++++++++--------- .../multipleCandidates/implicitInvoke.txt | 119 ++++++------ .../implicitInvokeWithReceiver.txt | 60 +++--- .../noCandidates/hiddenDeprecated.txt | 2 +- .../unresolvableOperator_elvis_1.txt | 2 +- .../unresolvableOperator_elvis_2.txt | 2 +- .../unresolvableOperator_eqeqeq_1.txt | 2 +- .../unresolvableOperator_eqeqeq_2.txt | 2 +- .../unresolvableOperator_excleqeq_1.txt | 2 +- .../unresolvableOperator_excleqeq_2.txt | 2 +- .../noCandidates/unresolvedReference.txt | 2 +- .../singleCandidate/arrayOfInAnnotation.txt | 5 +- .../singleCandidate/builderInference.txt | 5 +- .../singleCandidate/checkNotNullCall.txt | 5 +- .../checkNotNullCallAsCallee.txt | 5 +- .../singleCandidate/comparisonCall.txt | 5 +- .../consecutiveImplicitInvoke1.txt | 71 ++++--- .../consecutiveImplicitInvoke2.txt | 71 ++++--- .../consecutiveImplicitInvoke3.txt | 75 ++++--- .../singleCandidate/eqEqCall_fromAny.txt | 5 +- .../eqEqCall_fromSuperType.txt | 5 +- .../singleCandidate/eqEqCall_overridden.txt | 5 +- .../functionCallInTheSameFile.txt | 5 +- ...llWithExtensionReceiverAndTypeArgument.txt | 5 +- .../functionCallWithLambdaArgument.txt | 5 +- .../functionCallWithNamedArgument.txt | 5 +- ...ctionCallWithNonTrailingLambdaArgument.txt | 5 +- .../functionCallWithSpreadArgument.txt | 5 +- .../functionCallWithTypeArgument.txt | 5 +- .../functionCallWithVarargArgument.txt | 5 +- ...ctionTypeVariableCall_dispatchReceiver.txt | 5 +- ...tionTypeVariableCall_extensionReceiver.txt | 5 +- .../functionWithReceiverCall.txt | 5 +- .../functionWithReceiverSafeCall.txt | 5 +- .../singleCandidate/hiddenConstructor.txt | 27 ++- .../implicitConstructorDelegationCall.txt | 5 +- .../implicitConstuctorCall.txt | 5 +- .../implicitJavaConstuctorCall.txt | 5 +- .../singleCandidate/indexedGet.txt | 5 +- .../indexedGetWithNotEnoughArgs.txt | 65 +++---- .../indexedGetWithTooManyArgs.txt | 75 ++++--- .../singleCandidate/indexedSet.txt | 5 +- .../indexedSetWithNotEnoughArgs.txt | 85 ++++---- .../indexedSetWithTooManyArgs.txt | 95 +++++---- .../intArrayOfInAnnotation.txt | 5 +- .../singleCandidate/javaFunctionCall.txt | 5 +- .../memberFunctionCallWithTypeArgument.txt | 5 +- .../singleCandidate/privateMember.txt | 31 ++- .../resolveCallInSuperConstructorParam.txt | 5 +- .../singleCandidate/samConstructorCall.txt | 5 +- .../simpleCallWithNonMatchingArgs.txt | 27 ++- .../smartCastExplicitExtensionReceiver.txt | 5 +- .../singleCandidate/variableAsFunction.txt | 5 +- .../variableAsFunctionLikeCall.txt | 5 +- .../variableAsFunctionWithParameterName.txt | 5 +- ...eAsFunctionWithParameterNameAnnotation.txt | 5 +- ...ionWithParameterNameAnnotationConflict.txt | 5 +- ...ableAsFunctionWithParameterNameGeneric.txt | 5 +- ...tionWithParameterNameInNonFunctionType.txt | 5 +- ...riableAsFunctionWithParameterNameMixed.txt | 5 +- .../variableWithExtensionInvoke.txt | 5 +- ...ithInvokeFunctionCall_dispatchReceiver.txt | 5 +- ...thInvokeFunctionCall_extensionReceiver.txt | 5 +- .../variableWithMemberInvoke.txt | 5 +- 73 files changed, 1017 insertions(+), 947 deletions(-) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt index 7b1e3e96dd4..137c66d7276 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt @@ -147,7 +147,7 @@ internal class KtFe10CallResolver( } // TODO: See Call.resolveCandidates() in plugins/kotlin/core/src/org/jetbrains/kotlin/idea/core/Utils.kt - override fun collectCallCandidates(psi: KtElement): List = TODO() + override fun collectCallCandidates(psi: KtElement): List = TODO() private fun handleAsCompoundAssignment(context: BindingContext, binaryExpression: KtBinaryExpression): KtCallInfo? { val left = binaryExpression.left ?: return null diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt index 7e10d3f084c..906f10a1045 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt @@ -79,7 +79,7 @@ internal class KtFirCallResolver( } override fun resolveCall(psi: KtElement): KtCallInfo? = withValidityAssertion { - val ktCallInfos = getKtCallInfos(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall -> + val ktCallInfos = getCallInfo(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall -> listOfNotNull( toKtCallInfo( psiToResolve, @@ -92,14 +92,14 @@ internal class KtFirCallResolver( return ktCallInfos.singleOrNull() } - private inline fun getKtCallInfos( + private inline fun getCallInfo( psi: KtElement, - getKtCallInfos: FirElement.( + getCallInfo: FirElement.( psiToResolve: KtElement, resolveCalleeExpressionOfFunctionCall: Boolean, resolveFragmentOfCall: Boolean - ) -> List - ): List { + ) -> List + ): List { if (psi.isNotResolvable()) return emptyList() val containingCallExpressionForCalleeExpression = psi.getContainingCallExpressionForCalleeExpression() @@ -111,7 +111,7 @@ internal class KtFirCallResolver( ?: containingUnaryExpressionForIncOrDec ?: psi val fir = psiToResolve.getOrBuildFir(analysisSession.firResolveState) ?: return emptyList() - return fir.getKtCallInfos( + return fir.getCallInfo( psiToResolve, psiToResolve == containingCallExpressionForCalleeExpression, psiToResolve == containingBinaryExpressionForLhs || psiToResolve == containingUnaryExpressionForIncOrDec @@ -693,8 +693,8 @@ internal class KtFirCallResolver( private fun FirValueParameterSymbol.toKtSymbol(): KtValueParameterSymbol = firSymbolBuilder.variableLikeBuilder.buildValueParameterSymbol(this) - override fun collectCallCandidates(psi: KtElement): List = withValidityAssertion { - getKtCallInfos(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall -> + override fun collectCallCandidates(psi: KtElement): List = withValidityAssertion { + getCallInfo(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall -> collectCallCandidates( psiToResolve, resolveCalleeExpressionOfFunctionCall, @@ -708,9 +708,14 @@ internal class KtFirCallResolver( psi: KtElement, resolveCalleeExpressionOfFunctionCall: Boolean, resolveFragmentOfCall: Boolean, - ): List { + ): List { if (this is FirCheckNotNullCall) - return listOf(KtSuccessCallInfo(KtCheckNotNullCall(token, argumentList.arguments.first().psi as KtExpression))) + return listOf( + KtApplicableCallCandidateInfo( + KtCheckNotNullCall(token, argumentList.arguments.first().psi as KtExpression), + isInBestCandidates = true + ) + ) if (resolveCalleeExpressionOfFunctionCall && this is FirImplicitInvokeCall) { // For implicit invoke, we resolve the calleeExpression of the CallExpression to the call that creates the receiver of this // implicit invoke call. For example, @@ -734,13 +739,7 @@ internal class KtFirCallResolver( resolveFragmentOfCall ) is FirArrayOfCall, is FirComparisonExpression, is FirEqualityOperatorCall -> { - listOfNotNull( - toKtCallInfo( - psi, - resolveCalleeExpressionOfFunctionCall, - resolveFragmentOfCall - ) - ) + toKtCallInfo(psi, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall).toKtCallCandidateInfos() } else -> { // TODO: FirDelegatedConstructorCall, FirAnnotationCall, FirPropertyAccessExpression, FirVariableAssignment @@ -752,7 +751,7 @@ internal class KtFirCallResolver( private fun FirFunctionCall.collectCallCandidates( psi: KtElement, resolveFragmentOfCall: Boolean - ): List { + ): List { // If a function call is resolved to an implicit invoke call, the FirImplicitInvokeCall will have the `invoke()` function as the // callee and the variable as the explicit receiver. To correctly get all candidates, we need to get the original function // call's explicit receiver (if there is any) and callee (i.e., the variable). @@ -783,7 +782,7 @@ internal class KtFirCallResolver( psi ) return candidates.mapNotNull { - convertToKtCallInfo( + convertToKtCallCandidateInfo( originalFunctionCall, psi, it.candidate, @@ -793,25 +792,33 @@ internal class KtFirCallResolver( } } - private fun convertToKtCallInfo( + private fun KtCallInfo?.toKtCallCandidateInfos(): List { + return when (this) { + is KtSuccessCallInfo -> listOf(KtApplicableCallCandidateInfo(call, isInBestCandidates = true)) + is KtErrorCallInfo -> candidateCalls.map { KtInapplicableCallCandidateInfo(it, isInBestCandidates = true, diagnostic) } + null -> emptyList() + } + } + + private fun convertToKtCallCandidateInfo( functionCall: FirFunctionCall, element: KtElement, candidate: Candidate, isInBestCandidates: Boolean, resolveFragmentOfCall: Boolean - ): KtCallInfo? { + ): KtCallCandidateInfo? { val call = createKtCall(element, functionCall, candidate, resolveFragmentOfCall) ?: error("expect `createKtCall` to succeed for candidate") - return if (candidate.isSuccessful && isInBestCandidates) { - KtSuccessCallInfo(call) - } else { - val diagnostic = createConeDiagnosticForCandidateWithError(candidate.currentApplicability, candidate) - if (diagnostic is ConeHiddenCandidateError) return null - val ktDiagnostic = - functionCall.source?.let { diagnostic.asKtDiagnostic(it, element.toKtPsiSourceElement(), diagnosticCache) } - ?: KtNonBoundToPsiErrorDiagnostic(factoryName = null, diagnostic.reason, token) - KtErrorCallInfo(listOf(call), ktDiagnostic, token) + if (candidate.isSuccessful) { + return KtApplicableCallCandidateInfo(call, isInBestCandidates) } + + val diagnostic = createConeDiagnosticForCandidateWithError(candidate.currentApplicability, candidate) + if (diagnostic is ConeHiddenCandidateError) return null + val ktDiagnostic = + functionCall.source?.let { diagnostic.asKtDiagnostic(it, element.toKtPsiSourceElement(), diagnosticCache) } + ?: KtNonBoundToPsiErrorDiagnostic(factoryName = null, diagnostic.reason, token) + return KtInapplicableCallCandidateInfo(call, isInBestCandidates, ktDiagnostic) } private val FirResolvable.calleeOrCandidateName: Name? diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/AbstractResolveCandidatesTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/AbstractResolveCandidatesTest.kt index 861eca618a6..168e3a7c0b2 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/AbstractResolveCandidatesTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/AbstractResolveCandidatesTest.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.api.impl.base.test.components import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KtAnalysisSession -import org.jetbrains.kotlin.analysis.api.calls.KtCallInfo +import org.jetbrains.kotlin.analysis.api.calls.KtCallCandidateInfo import org.jetbrains.kotlin.analysis.api.impl.barebone.test.expressionMarkerProvider import org.jetbrains.kotlin.analysis.api.impl.base.test.test.framework.AbstractHLApiSingleModuleTest import org.jetbrains.kotlin.psi.* @@ -26,14 +26,17 @@ abstract class AbstractResolveCandidatesTest : AbstractHLApiSingleModuleTest() { if (candidates.isEmpty()) { "NO_CANDIDATES" } else { - candidates.joinToString("\n\n") { stringRepresentation(it) } + val sortedCandidates = candidates.sortedWith { candidate1, candidate2 -> + compareCalls(candidate1.candidate, candidate2.candidate) + } + sortedCandidates.joinToString("\n\n") { stringRepresentation(it) } } } } testServices.assertions.assertEqualsToTestDataFileSibling(actual) } - private fun KtAnalysisSession.collectCallCandidates(element: PsiElement): List = when (element) { + private fun KtAnalysisSession.collectCallCandidates(element: PsiElement): List = when (element) { is KtValueArgument -> this@collectCallCandidates.collectCallCandidates(element.getArgumentExpression()!!) is KtDeclarationModifierList -> { val annotationEntry = element.annotationEntries.singleOrNull() diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/testUtils.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/testUtils.kt index 0940a99c080..e5b35d2dea3 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/testUtils.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/components/testUtils.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.api.impl.base.test.components import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.calls.KtCall -import org.jetbrains.kotlin.analysis.api.calls.KtCallInfo import org.jetbrains.kotlin.analysis.api.calls.KtCallableMemberCall import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnostic import org.jetbrains.kotlin.analysis.api.impl.base.KtMapBackedSubstitutor @@ -20,93 +19,90 @@ import kotlin.reflect.KProperty1 import kotlin.reflect.KVisibility import kotlin.reflect.full.memberProperties -internal fun KtAnalysisSession.stringRepresentation(call: KtCallInfo): String { - fun Any.stringValue(): String { - fun KtType.render() = asStringForDebugging().replace('/', '.') - fun String.indented() = replace("\n", "\n ") - return when (this) { - is KtFunctionLikeSymbol -> buildString { - append( - when (this@stringValue) { - is KtFunctionSymbol -> callableIdIfNonLocal ?: name - is KtSamConstructorSymbol -> callableIdIfNonLocal ?: name - is KtConstructorSymbol -> "" - is KtPropertyGetterSymbol -> callableIdIfNonLocal ?: "" - is KtPropertySetterSymbol -> callableIdIfNonLocal ?: "" - else -> error("unexpected symbol kind in KtCall: ${this@stringValue::class.java}") - } - ) - append("(") - (this@stringValue as? KtFunctionSymbol)?.receiverType?.let { receiver -> - append(": ${receiver.render()}") - if (valueParameters.isNotEmpty()) append(", ") +internal fun KtAnalysisSession.stringRepresentation(any: Any): String = with(any) { + fun KtType.render() = asStringForDebugging().replace('/', '.') + fun String.indented() = replace("\n", "\n ") + return when (this) { + is KtFunctionLikeSymbol -> buildString { + append( + when (this@with) { + is KtFunctionSymbol -> callableIdIfNonLocal ?: name + is KtSamConstructorSymbol -> callableIdIfNonLocal ?: name + is KtConstructorSymbol -> "" + is KtPropertyGetterSymbol -> callableIdIfNonLocal ?: "" + is KtPropertySetterSymbol -> callableIdIfNonLocal ?: "" + else -> error("unexpected symbol kind in KtCall: ${this@with::class.java}") } + ) + append("(") + (this@with as? KtFunctionSymbol)?.receiverType?.let { receiver -> + append(": ${receiver.render()}") + if (valueParameters.isNotEmpty()) append(", ") + } - @Suppress("DEPRECATION") - (this@stringValue as? KtCallableSymbol)?.getDispatchReceiverType()?.let { dispatchReceiverType -> - append(": ${dispatchReceiverType.render()}") - if (valueParameters.isNotEmpty()) append(", ") - } - valueParameters.joinTo(this) { it.stringValue() } - append(")") - append(": ${returnType.render()}") + @Suppress("DEPRECATION") + (this@with as? KtCallableSymbol)?.getDispatchReceiverType()?.let { dispatchReceiverType -> + append(": ${dispatchReceiverType.render()}") + if (valueParameters.isNotEmpty()) append(", ") } - is KtValueParameterSymbol -> "${if (isVararg) "vararg " else ""}$name: ${returnType.render()}" - is KtTypeParameterSymbol -> this.nameOrAnonymous.asString() - is KtVariableSymbol -> "${if (isVal) "val" else "var"} $name: ${returnType.render()}" - is KtSymbol -> DebugSymbolRenderer.render(this) - is Boolean -> toString() - is Map<*, *> -> if (isEmpty()) "{}" else entries.joinToString( - separator = ",\n ", - prefix = "{\n ", - postfix = "\n}" - ) { (k, v) -> "${k?.stringValue()?.indented()} -> (${v?.stringValue()?.indented()})" } - is Collection<*> -> if (isEmpty()) "[]" else joinToString( - separator = ",\n ", - prefix = "[\n ", - postfix = "\n]" - ) { - it?.stringValue()?.indented() ?: "null" - } - is PsiElement -> this.text - is KtSubstitutor.Empty -> "" - is KtMapBackedSubstitutor -> { - val mappingText = getAsMap().entries - .joinToString(prefix = "{", postfix = "}") { (k, v) -> k.stringValue() + " = " + v.asStringForDebugging() } - "" - } - is KtSubstitutor -> "" - is KtDiagnostic -> "$severity<$factoryName: $defaultMessage>" - is KtType -> render() - is Enum<*> -> name - is Name -> asString() - else -> buildString { - val clazz = this@stringValue::class - val className = clazz.simpleName!! - append(className) - appendLine(":") - clazz.memberProperties - .filter { it.name != "token" && it.visibility == KVisibility.PUBLIC } - .joinTo(this, separator = "\n ", prefix = " ") { property -> - val name = property.name + valueParameters.joinTo(this) { stringRepresentation(it) } + append(")") + append(": ${returnType.render()}") + } + is KtValueParameterSymbol -> "${if (isVararg) "vararg " else ""}$name: ${returnType.render()}" + is KtTypeParameterSymbol -> this.nameOrAnonymous.asString() + is KtVariableSymbol -> "${if (isVal) "val" else "var"} $name: ${returnType.render()}" + is KtSymbol -> DebugSymbolRenderer.render(this) + is Boolean -> toString() + is Map<*, *> -> if (isEmpty()) "{}" else entries.joinToString( + separator = ",\n ", + prefix = "{\n ", + postfix = "\n}" + ) { (k, v) -> "${k?.let { stringRepresentation(it).indented() }} -> (${v?.let { stringRepresentation(it).indented() }})" } + is Collection<*> -> if (isEmpty()) "[]" else joinToString( + separator = ",\n ", + prefix = "[\n ", + postfix = "\n]" + ) { + it?.let { stringRepresentation(it).indented() } ?: "null" + } + is PsiElement -> this.text + is KtSubstitutor.Empty -> "" + is KtMapBackedSubstitutor -> { + val mappingText = getAsMap().entries + .joinToString(prefix = "{", postfix = "}") { (k, v) -> stringRepresentation(k) + " = " + v.asStringForDebugging() } + "" + } + is KtSubstitutor -> "" + is KtDiagnostic -> "$severity<$factoryName: $defaultMessage>" + is KtType -> render() + is Enum<*> -> name + is Name -> asString() + else -> buildString { + val clazz = this@with::class + val className = clazz.simpleName!! + append(className) + appendLine(":") + clazz.memberProperties + .filter { it.name != "token" && it.visibility == KVisibility.PUBLIC } + .joinTo(this, separator = "\n ", prefix = " ") { property -> + val name = property.name - @Suppress("UNCHECKED_CAST") - val value = (property as KProperty1).get(this@stringValue)?.let { - if (className == "KtErrorCallInfo" && name == "candidateCalls") { - // The order of calls in KtErrorCallInfo.candidateCalls is non-deterministic. Sort by symbol string value. - (it as Collection).sortedWith { call1, call2 -> - if (call1 is KtCallableMemberCall<*, *> && call2 is KtCallableMemberCall<*, *>) { - call1.partiallyAppliedSymbol.stringValue().compareTo(call2.partiallyAppliedSymbol.stringValue()) - } else 0 - } - } else it - } - val valueAsString = value?.stringValue()?.indented() - "$name = $valueAsString" + @Suppress("UNCHECKED_CAST") + val value = (property as KProperty1).get(this@with)?.let { + if (className == "KtErrorCallInfo" && name == "candidateCalls") { + (it as Collection).sortedWith { call1, call2 -> compareCalls(call1, call2) } + } else it } - } + val valueAsString = value?.let { stringRepresentation(it).indented() } + "$name = $valueAsString" + } } } +} - return call.stringValue() +internal fun KtAnalysisSession.compareCalls(call1: KtCall, call2: KtCall): Int { + // The order of candidate calls is non-deterministic. Sort by symbol string value. + if (call1 !is KtCallableMemberCall<*, *> || call2 !is KtCallableMemberCall<*, *>) return 0 + return stringRepresentation(call1.partiallyAppliedSymbol).compareTo(stringRepresentation(call2.partiallyAppliedSymbol)) } \ No newline at end of file diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/calls/KtCall.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/calls/KtCall.kt index ceef1eb48e3..e5d99594f82 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/calls/KtCall.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/calls/KtCall.kt @@ -66,6 +66,49 @@ public fun KtCallInfo.successfulVariableAccessCall(): KtVariableAccessCall? = su @Suppress("UNCHECKED_CAST") public fun KtCallInfo.successfulConstructorCallOrNull(): KtFunctionCall? = successfulCallOrNull>()?.takeIf { it.symbol is KtConstructorSymbol } as KtFunctionCall? + +/** + * A candidate considered for a call. I.e., one of the overload candidates in scope at the call site. + */ +public sealed class KtCallCandidateInfo( + private val _candidate: KtCall, + private val _isInBestCandidates: Boolean, +) : ValidityTokenOwner { + override val token: ValidityToken + get() = _candidate.token + public val candidate: KtCall get() = withValidityAssertion { _candidate } + + /** + * Returns true if the [candidate] is in the final set of candidates that the call is actually resolved to. There can be multiple + * candidates if the call is ambiguous. + */ + public val isInBestCandidates: Boolean get() = withValidityAssertion { _isInBestCandidates } +} + +/** + * A candidate that is applicable for a call. A candidate is applicable if the call's arguments are complete and are assignable to the + * candidate's parameters, AND the call's type arguments are complete and fit all the constraints of the candidate's type parameters. + */ +public class KtApplicableCallCandidateInfo( + candidate: KtCall, + isInBestCandidates: Boolean, +) : KtCallCandidateInfo(candidate, isInBestCandidates) + +/** + * A candidate that is NOT applicable for a call. A candidate is inapplicable if a call argument is missing or is not assignable to the + * candidate's parameters, OR a call type argument is missing or does not fit the constraints of the candidate's type parameters. + */ +public class KtInapplicableCallCandidateInfo( + candidate: KtCall, + isInBestCandidates: Boolean, + private val _diagnostic: KtDiagnostic, +) : KtCallCandidateInfo(candidate, isInBestCandidates) { + /** + * The reason the [candidate] was not applicable for the call (e.g., argument type mismatch, or no value for parameter). + */ + public val diagnostic: KtDiagnostic get() = withValidityAssertion { _diagnostic } +} + /** * A call to a function, a simple/compound access to a property, or a simple/compound access through `get` and `set` convention. */ diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt index 306f905401f..4496781868b 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.components +import org.jetbrains.kotlin.analysis.api.calls.KtCallCandidateInfo import org.jetbrains.kotlin.analysis.api.calls.KtCallInfo import org.jetbrains.kotlin.psi.KtArrayAccessExpression import org.jetbrains.kotlin.psi.KtCallElement @@ -13,7 +14,7 @@ import org.jetbrains.kotlin.psi.KtUnaryExpression public abstract class KtCallResolver : KtAnalysisSessionComponent() { public abstract fun resolveCall(psi: KtElement): KtCallInfo? - public abstract fun collectCallCandidates(psi: KtElement): List + public abstract fun collectCallCandidates(psi: KtElement): List } public interface KtCallResolverMixIn : KtAnalysisSessionMixIn { @@ -38,6 +39,6 @@ public interface KtCallResolverMixIn : KtAnalysisSessionMixIn { * [resolveCall] only returns the final result of overload resolution, i.e., the selected callable after considering candidate * applicability and choosing the most specific candidate. */ - public fun KtElement.collectCallCandidates(): List = + public fun KtElement.collectCallCandidates(): List = analysisSession.callResolver.collectCallCandidates(this) -} \ No newline at end of file +} diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguous.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguous.txt index e28a8a58295..8bff9349aec 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguous.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguous.txt @@ -1,83 +1,80 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(a: kotlin.Char): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Char - symbol = a: kotlin.Char - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Char - symbol = a: kotlin.Char) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(a: kotlin.Char): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Char + symbol = a: kotlin.Char + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Char + symbol = a: kotlin.Char) + } + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(b: kotlin.Boolean): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.Boolean - symbol = b: kotlin.Boolean - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.Boolean - symbol = b: kotlin.Boolean) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(b: kotlin.Boolean): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.Boolean + symbol = b: kotlin.Boolean + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.Boolean + symbol = b: kotlin.Boolean) + } + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(c: kotlin.String): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = c - receiverType = null - returnType = kotlin.String - symbol = c: kotlin.String - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = c - receiverType = null - returnType = kotlin.String - symbol = c: kotlin.String) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(c: kotlin.String): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = c + receiverType = null + returnType = kotlin.String + symbol = c: kotlin.String + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = c + receiverType = null + returnType = kotlin.String + symbol = c: kotlin.String) + } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousImplicitInvoke.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousImplicitInvoke.txt index 5439473eb9d..77ad58d330d 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousImplicitInvoke.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousImplicitInvoke.txt @@ -1,69 +1,66 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = x - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Int - returnType = kotlin.Unit - symbol = invoke(: kotlin.Int, a: kotlin.String): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.String - symbol = a: kotlin.String - ] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = x + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Int + returnType = kotlin.Unit + symbol = invoke(: kotlin.Int, a: kotlin.String): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.String + symbol = a: kotlin.String + ] + argumentMapping = {} + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = x - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Int - returnType = kotlin.Unit - symbol = invoke(: kotlin.Int, b: kotlin.Boolean): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.Boolean - symbol = b: kotlin.Boolean - ] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = x + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Int + returnType = kotlin.Unit + symbol = invoke(: kotlin.Int, b: kotlin.Boolean): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.Boolean + symbol = b: kotlin.Boolean + ] + argumentMapping = {} + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /x(c: kotlin.Char): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = c - receiverType = null - returnType = kotlin.Char - symbol = c: kotlin.Char - ] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /x(c: kotlin.Char): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = c + receiverType = null + returnType = kotlin.Char + symbol = c: kotlin.Char + ] + argumentMapping = {} + isInBestCandidates = false diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithExplicitTypeParameters.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithExplicitTypeParameters.txt index 5fe1ca1a30c..e39863b9689 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithExplicitTypeParameters.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithExplicitTypeParameters.txt @@ -1,98 +1,95 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(t: T, a: kotlin.Char): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = t - receiverType = null - returnType = kotlin.Int - symbol = t: T, - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Char - symbol = a: kotlin.Char - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = t - receiverType = null - returnType = kotlin.Int - symbol = t: T) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(t: T, a: kotlin.Char): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = t + receiverType = null + returnType = kotlin.Int + symbol = t: T, + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Char + symbol = a: kotlin.Char + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = t + receiverType = null + returnType = kotlin.Int + symbol = t: T) + } + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(u: U, b: kotlin.Boolean): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = u - receiverType = null - returnType = kotlin.Int - symbol = u: U, - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.Boolean - symbol = b: kotlin.Boolean - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = u - receiverType = null - returnType = kotlin.Int - symbol = u: U) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(u: U, b: kotlin.Boolean): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = u + receiverType = null + returnType = kotlin.Int + symbol = u: U, + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.Boolean + symbol = b: kotlin.Boolean + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = u + receiverType = null + returnType = kotlin.Int + symbol = u: U) + } + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(v: V, c: kotlin.String): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = v - receiverType = null - returnType = kotlin.Int - symbol = v: V, - KtVariableLikeSignature: - name = c - receiverType = null - returnType = kotlin.String - symbol = c: kotlin.String - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = v - receiverType = null - returnType = kotlin.Int - symbol = v: V) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(v: V, c: kotlin.String): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = v + receiverType = null + returnType = kotlin.Int + symbol = v: V, + KtVariableLikeSignature: + name = c + receiverType = null + returnType = kotlin.String + symbol = c: kotlin.String + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = v + receiverType = null + returnType = kotlin.Int + symbol = v: V) + } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithInferredTypeParameters.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithInferredTypeParameters.txt index 943f517bbed..78058a8ca15 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithInferredTypeParameters.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/ambiguousWithInferredTypeParameters.txt @@ -1,98 +1,95 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(t: T, a: kotlin.Char): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = t - receiverType = null - returnType = T - symbol = t: T, - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Char - symbol = a: kotlin.Char - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = t - receiverType = null - returnType = T - symbol = t: T) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(t: T, a: kotlin.Char): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = t + receiverType = null + returnType = T + symbol = t: T, + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Char + symbol = a: kotlin.Char + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = t + receiverType = null + returnType = T + symbol = t: T) + } + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(u: U, b: kotlin.Boolean): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = u - receiverType = null - returnType = U - symbol = u: U, - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.Boolean - symbol = b: kotlin.Boolean - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = u - receiverType = null - returnType = U - symbol = u: U) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(u: U, b: kotlin.Boolean): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = u + receiverType = null + returnType = U + symbol = u: U, + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.Boolean + symbol = b: kotlin.Boolean + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = u + receiverType = null + returnType = U + symbol = u: U) + } + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /function(v: V, c: kotlin.String): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = v - receiverType = null - returnType = V - symbol = v: V, - KtVariableLikeSignature: - name = c - receiverType = null - returnType = kotlin.String - symbol = c: kotlin.String - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = v - receiverType = null - returnType = V - symbol = v: V) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /function(v: V, c: kotlin.String): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = v + receiverType = null + returnType = V + symbol = v: V, + KtVariableLikeSignature: + name = c + receiverType = null + returnType = kotlin.String + symbol = c: kotlin.String + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = v + receiverType = null + returnType = V + symbol = v: V) + } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvoke.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvoke.txt index 04ef1bc6baf..1524eda9096 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvoke.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvoke.txt @@ -1,5 +1,61 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtInapplicableCallCandidateInfo: + diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = x + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Int + returnType = kotlin.Unit + symbol = /invoke(: kotlin.Int, i: kotlin.Int): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = i + receiverType = null + returnType = kotlin.Int + symbol = i: kotlin.Int + ] + argumentMapping = { + true -> (KtVariableLikeSignature: + name = i + receiverType = null + returnType = kotlin.Int + symbol = i: kotlin.Int) + } + isInBestCandidates = false + +KtInapplicableCallCandidateInfo: + diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /x(c: kotlin.Char): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = c + receiverType = null + returnType = kotlin.Char + symbol = c: kotlin.Char + ] + argumentMapping = { + true -> (KtVariableLikeSignature: + name = c + receiverType = null + returnType = kotlin.Char + symbol = c: kotlin.Char) + } + isInBestCandidates = false + +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -22,61 +78,4 @@ KtSuccessCallInfo: returnType = kotlin.Boolean symbol = b: kotlin.Boolean) } - -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /x(c: kotlin.Char): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = c - receiverType = null - returnType = kotlin.Char - symbol = c: kotlin.Char - ] - argumentMapping = { - true -> (KtVariableLikeSignature: - name = c - receiverType = null - returnType = kotlin.Char - symbol = c: kotlin.Char) - } - ] - diagnostic = ERROR - -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = x - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Int - returnType = kotlin.Unit - symbol = /invoke(: kotlin.Int, i: kotlin.Int): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = i - receiverType = null - returnType = kotlin.Int - symbol = i: kotlin.Int - ] - argumentMapping = { - true -> (KtVariableLikeSignature: - name = i - receiverType = null - returnType = kotlin.Int - symbol = i: kotlin.Int) - } - ] - diagnostic = ERROR + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvokeWithReceiver.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvokeWithReceiver.txt index 478d3e673e2..2d5c5e683ed 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvokeWithReceiver.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/multipleCandidates/implicitInvokeWithReceiver.txt @@ -1,35 +1,34 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = KtExplicitReceiverValue: - expression = a - isSafeNavigation = false - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /A.x(: A, b: kotlin.Boolean): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.Boolean - symbol = b: kotlin.Boolean - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.Boolean - symbol = b: kotlin.Boolean) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = KtExplicitReceiverValue: + expression = a + isSafeNavigation = false + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /A.x(: A, b: kotlin.Boolean): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.Boolean + symbol = b: kotlin.Boolean + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.Boolean + symbol = b: kotlin.Boolean) + } + isInBestCandidates = false -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -54,3 +53,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = i: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/hiddenDeprecated.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/hiddenDeprecated.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/hiddenDeprecated.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/hiddenDeprecated.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_1.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_1.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_1.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_1.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_2.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_2.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_2.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_elvis_2.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_1.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_1.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_1.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_1.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_2.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_2.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_2.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_eqeqeq_2.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_1.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_1.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_1.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_1.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_2.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_2.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_2.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvableOperator_excleqeq_2.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvedReference.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvedReference.txt index 1d7254b6ac6..0656468e3ff 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvedReference.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/noCandidates/unresolvedReference.txt @@ -1 +1 @@ -NO_CANDIDATES \ No newline at end of file +NO_CANDIDATES diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/arrayOfInAnnotation.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/arrayOfInAnnotation.txt index cea6aab2847..11f40ed48f9 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/arrayOfInAnnotation.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/arrayOfInAnnotation.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = vararg elements: T) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/builderInference.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/builderInference.txt index bd7e066c33d..fe7c239a882 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/builderInference.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/builderInference.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtImplicitReceiverValue: @@ -25,3 +25,4 @@ KtSuccessCallInfo: returnType = T symbol = t: T) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCall.txt index 080c9e375f4..6833f81cb25 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCall.txt @@ -1,3 +1,4 @@ -KtSuccessCallInfo: - call = KtCheckNotNullCall: +KtApplicableCallCandidateInfo: + candidate = KtCheckNotNullCall: baseExpression = a + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCallAsCallee.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCallAsCallee.txt index 080c9e375f4..6833f81cb25 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCallAsCallee.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/checkNotNullCallAsCallee.txt @@ -1,3 +1,4 @@ -KtSuccessCallInfo: - call = KtCheckNotNullCall: +KtApplicableCallCandidateInfo: + candidate = KtCheckNotNullCall: baseExpression = a + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/comparisonCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/comparisonCall.txt index 3d8c6b7b381..bb046b1cce4 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/comparisonCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/comparisonCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = other: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke1.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke1.txt index 0edd3b72b98..3eab53c92e2 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke1.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke1.txt @@ -1,5 +1,22 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtInapplicableCallCandidateInfo: + diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = i + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Double + returnType = kotlin.Unit + symbol = /invoke(: kotlin.Double): kotlin.Unit + valueParameters = [] + argumentMapping = {} + isInBestCandidates = false + +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -12,39 +29,21 @@ KtSuccessCallInfo: symbol = /invoke(: kotlin.Int): kotlin.Long valueParameters = [] argumentMapping = {} + isInBestCandidates = true -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = i - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Long - returnType = kotlin.Double - symbol = /invoke(: kotlin.Long): kotlin.Double - valueParameters = [] - argumentMapping = {} - ] - diagnostic = ERROR - -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = i - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Double - returnType = kotlin.Unit - symbol = /invoke(: kotlin.Double): kotlin.Unit - valueParameters = [] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = i + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Long + returnType = kotlin.Double + symbol = /invoke(: kotlin.Long): kotlin.Double + valueParameters = [] + argumentMapping = {} + isInBestCandidates = false diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke2.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke2.txt index a1329cc68b1..5c47b715e0c 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke2.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke2.txt @@ -1,23 +1,39 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = i() - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Int - returnType = kotlin.Long - symbol = /invoke(: kotlin.Int): kotlin.Long - valueParameters = [] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = i() + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Double + returnType = kotlin.Unit + symbol = /invoke(: kotlin.Double): kotlin.Unit + valueParameters = [] + argumentMapping = {} + isInBestCandidates = false -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtInapplicableCallCandidateInfo: + diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = i() + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Int + returnType = kotlin.Long + symbol = /invoke(: kotlin.Int): kotlin.Long + valueParameters = [] + argumentMapping = {} + isInBestCandidates = false + +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -30,21 +46,4 @@ KtSuccessCallInfo: symbol = /invoke(: kotlin.Long): kotlin.Double valueParameters = [] argumentMapping = {} - -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = i() - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Double - returnType = kotlin.Unit - symbol = /invoke(: kotlin.Double): kotlin.Unit - valueParameters = [] - argumentMapping = {} - ] - diagnostic = ERROR + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke3.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke3.txt index e4a25295922..ec7ef410649 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke3.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/consecutiveImplicitInvoke3.txt @@ -1,41 +1,5 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = i()() - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Int - returnType = kotlin.Long - symbol = /invoke(: kotlin.Int): kotlin.Long - valueParameters = [] - argumentMapping = {} - ] - diagnostic = ERROR - -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = true - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = KtExplicitReceiverValue: - expression = i()() - isSafeNavigation = false - signature = KtFunctionLikeSignature: - receiverType = kotlin.Long - returnType = kotlin.Double - symbol = /invoke(: kotlin.Long): kotlin.Double - valueParameters = [] - argumentMapping = {} - ] - diagnostic = ERROR - -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -48,3 +12,38 @@ KtSuccessCallInfo: symbol = /invoke(: kotlin.Double): kotlin.Unit valueParameters = [] argumentMapping = {} + isInBestCandidates = true + +KtInapplicableCallCandidateInfo: + diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = i()() + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Int + returnType = kotlin.Long + symbol = /invoke(: kotlin.Int): kotlin.Long + valueParameters = [] + argumentMapping = {} + isInBestCandidates = false + +KtInapplicableCallCandidateInfo: + diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = true + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = KtExplicitReceiverValue: + expression = i()() + isSafeNavigation = false + signature = KtFunctionLikeSignature: + receiverType = kotlin.Long + returnType = kotlin.Double + symbol = /invoke(: kotlin.Long): kotlin.Double + valueParameters = [] + argumentMapping = {} + isInBestCandidates = false diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromAny.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromAny.txt index df54910c4aa..6c7f2457de1 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromAny.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromAny.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Any? symbol = other: kotlin.Any?) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromSuperType.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromSuperType.txt index 997c5e2da33..0f624e25f56 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromSuperType.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_fromSuperType.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Any? symbol = other: kotlin.Any?) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_overridden.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_overridden.txt index 0ef806aba1d..3a574b99e15 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_overridden.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/eqEqCall_overridden.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Any? symbol = other: kotlin.Any?) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallInTheSameFile.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallInTheSameFile.txt index e0beb315d70..b3393c186e7 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallInTheSameFile.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallInTheSameFile.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -22,3 +22,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = a: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithExtensionReceiverAndTypeArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithExtensionReceiverAndTypeArgument.txt index 21828b82cb5..9fe8144c746 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithExtensionReceiverAndTypeArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithExtensionReceiverAndTypeArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = a: B) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithLambdaArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithLambdaArgument.txt index 98a6e6107ee..d9f2cbe8120 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithLambdaArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithLambdaArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = kotlin.Function1 symbol = b: kotlin.Function1) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNamedArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNamedArgument.txt index 0f8a4470c86..c434d35f8a1 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNamedArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNamedArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = a: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNonTrailingLambdaArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNonTrailingLambdaArgument.txt index 98a6e6107ee..d9f2cbe8120 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNonTrailingLambdaArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithNonTrailingLambdaArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = kotlin.Function1 symbol = b: kotlin.Function1) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithSpreadArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithSpreadArgument.txt index 1283e49e6e2..7570e9ad6ec 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithSpreadArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithSpreadArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -22,3 +22,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = vararg a: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithTypeArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithTypeArgument.txt index 1715ccc8b49..c191f3537a0 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithTypeArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithTypeArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = kotlin.String symbol = b: B) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithVarargArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithVarargArgument.txt index 0430e8008b9..2727057f9e5 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithVarargArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionCallWithVarargArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = vararg a: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_dispatchReceiver.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_dispatchReceiver.txt index ac44ea88137..094f9e8b248 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_dispatchReceiver.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_dispatchReceiver.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -20,3 +20,4 @@ KtSuccessCallInfo: symbol = p1: P1 ] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_extensionReceiver.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_extensionReceiver.txt index ac44ea88137..094f9e8b248 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_extensionReceiver.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionTypeVariableCall_extensionReceiver.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -20,3 +20,4 @@ KtSuccessCallInfo: symbol = p1: P1 ] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverCall.txt index 59acf142756..6bb839c79b7 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = a: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverSafeCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverSafeCall.txt index edc940e1382..0ccb51cc92a 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverSafeCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/functionWithReceiverSafeCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = a: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/hiddenConstructor.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/hiddenConstructor.txt index cad6369ae00..6833a70a5b6 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/hiddenConstructor.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/hiddenConstructor.txt @@ -1,15 +1,14 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = Obj - symbol = (): Obj - valueParameters = [] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = Obj + symbol = (): Obj + valueParameters = [] + argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstructorDelegationCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstructorDelegationCall.txt index a1ad877c0a8..60cc0e99b72 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstructorDelegationCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstructorDelegationCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -22,3 +22,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = i: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstuctorCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstuctorCall.txt index cbacf96d44b..d9d80cc423f 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstuctorCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitConstuctorCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -10,3 +10,4 @@ KtSuccessCallInfo: symbol = (): A valueParameters = [] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitJavaConstuctorCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitJavaConstuctorCall.txt index cbacf96d44b..d9d80cc423f 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitJavaConstuctorCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/implicitJavaConstuctorCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -10,3 +10,4 @@ KtSuccessCallInfo: symbol = (): A valueParameters = [] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGet.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGet.txt index e93b4bd1a66..71417ca41c8 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGet.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGet.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -34,3 +34,4 @@ KtSuccessCallInfo: returnType = kotlin.String symbol = b: kotlin.String) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithNotEnoughArgs.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithNotEnoughArgs.txt index 6ea774bd9d8..ebf95b732ba 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithNotEnoughArgs.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithNotEnoughArgs.txt @@ -1,34 +1,33 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = KtExplicitReceiverValue: - expression = c - isSafeNavigation = false - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Boolean - symbol = /C.get(: C, a: kotlin.Int, b: kotlin.String): kotlin.Boolean - valueParameters = [ - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int, - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.String - symbol = b: kotlin.String - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = KtExplicitReceiverValue: + expression = c + isSafeNavigation = false + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Boolean + symbol = /C.get(: C, a: kotlin.Int, b: kotlin.String): kotlin.Boolean + valueParameters = [ + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int, + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.String + symbol = b: kotlin.String + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int) + } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithTooManyArgs.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithTooManyArgs.txt index bf2a8909170..362cc14bc55 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithTooManyArgs.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedGetWithTooManyArgs.txt @@ -1,39 +1,38 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = KtExplicitReceiverValue: - expression = c - isSafeNavigation = false - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Boolean - symbol = /C.get(: C, a: kotlin.Int, b: kotlin.String): kotlin.Boolean - valueParameters = [ - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int, - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.String - symbol = b: kotlin.String - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int), - "foo" -> (KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.String - symbol = b: kotlin.String) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = KtExplicitReceiverValue: + expression = c + isSafeNavigation = false + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Boolean + symbol = /C.get(: C, a: kotlin.Int, b: kotlin.String): kotlin.Boolean + valueParameters = [ + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int, + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.String + symbol = b: kotlin.String + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int), + "foo" -> (KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.String + symbol = b: kotlin.String) + } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSet.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSet.txt index 7f549521842..aaed1f4798c 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSet.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSet.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -44,3 +44,4 @@ KtSuccessCallInfo: returnType = kotlin.Boolean symbol = value: kotlin.Boolean) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithNotEnoughArgs.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithNotEnoughArgs.txt index 1946907b8a3..c52306bfc7f 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithNotEnoughArgs.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithNotEnoughArgs.txt @@ -1,44 +1,43 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = KtExplicitReceiverValue: - expression = c - isSafeNavigation = false - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /C.set(: C, a: kotlin.Int, b: kotlin.String, value: kotlin.Boolean): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int, - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.String - symbol = b: kotlin.String, - KtVariableLikeSignature: - name = value - receiverType = null - returnType = kotlin.Boolean - symbol = value: kotlin.Boolean - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int), - false -> (KtVariableLikeSignature: - name = value - receiverType = null - returnType = kotlin.Boolean - symbol = value: kotlin.Boolean) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = KtExplicitReceiverValue: + expression = c + isSafeNavigation = false + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /C.set(: C, a: kotlin.Int, b: kotlin.String, value: kotlin.Boolean): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int, + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.String + symbol = b: kotlin.String, + KtVariableLikeSignature: + name = value + receiverType = null + returnType = kotlin.Boolean + symbol = value: kotlin.Boolean + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int), + false -> (KtVariableLikeSignature: + name = value + receiverType = null + returnType = kotlin.Boolean + symbol = value: kotlin.Boolean) + } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithTooManyArgs.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithTooManyArgs.txt index 6e3e940a16b..4edabb987e6 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithTooManyArgs.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/indexedSetWithTooManyArgs.txt @@ -1,49 +1,48 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = KtExplicitReceiverValue: - expression = c - isSafeNavigation = false - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /C.set(: C, a: kotlin.Int, b: kotlin.String, value: kotlin.Boolean): kotlin.Unit - valueParameters = [ - KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int, - KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.String - symbol = b: kotlin.String, - KtVariableLikeSignature: - name = value - receiverType = null - returnType = kotlin.Boolean - symbol = value: kotlin.Boolean - ] - argumentMapping = { - 1 -> (KtVariableLikeSignature: - name = a - receiverType = null - returnType = kotlin.Int - symbol = a: kotlin.Int), - "foo" -> (KtVariableLikeSignature: - name = b - receiverType = null - returnType = kotlin.String - symbol = b: kotlin.String), - false -> (KtVariableLikeSignature: - name = value - receiverType = null - returnType = kotlin.Boolean - symbol = value: kotlin.Boolean) - } - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = KtExplicitReceiverValue: + expression = c + isSafeNavigation = false + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /C.set(: C, a: kotlin.Int, b: kotlin.String, value: kotlin.Boolean): kotlin.Unit + valueParameters = [ + KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int, + KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.String + symbol = b: kotlin.String, + KtVariableLikeSignature: + name = value + receiverType = null + returnType = kotlin.Boolean + symbol = value: kotlin.Boolean + ] + argumentMapping = { + 1 -> (KtVariableLikeSignature: + name = a + receiverType = null + returnType = kotlin.Int + symbol = a: kotlin.Int), + "foo" -> (KtVariableLikeSignature: + name = b + receiverType = null + returnType = kotlin.String + symbol = b: kotlin.String), + false -> (KtVariableLikeSignature: + name = value + receiverType = null + returnType = kotlin.Boolean + symbol = value: kotlin.Boolean) + } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/intArrayOfInAnnotation.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/intArrayOfInAnnotation.txt index 89a884449b4..131302f722b 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/intArrayOfInAnnotation.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/intArrayOfInAnnotation.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = vararg elements: kotlin.Int) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/javaFunctionCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/javaFunctionCall.txt index 3030f717e74..9ce02b4307c 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/javaFunctionCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/javaFunctionCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -12,3 +12,4 @@ KtSuccessCallInfo: symbol = /JavaClass.javaMethod(: JavaClass): kotlin.Unit valueParameters = [] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/memberFunctionCallWithTypeArgument.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/memberFunctionCallWithTypeArgument.txt index 5824b831d5f..d7c923389cb 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/memberFunctionCallWithTypeArgument.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/memberFunctionCallWithTypeArgument.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = r: R) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/privateMember.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/privateMember.txt index 192e4502561..2160a7b6fe9 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/privateMember.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/privateMember.txt @@ -1,17 +1,16 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = KtExplicitReceiverValue: - expression = a - isSafeNavigation = false - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /A.foo(: A): kotlin.Unit - valueParameters = [] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = KtExplicitReceiverValue: + expression = a + isSafeNavigation = false + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /A.foo(: A): kotlin.Unit + valueParameters = [] + argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/resolveCallInSuperConstructorParam.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/resolveCallInSuperConstructorParam.txt index 8bbf398ebd7..3e900a27334 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/resolveCallInSuperConstructorParam.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/resolveCallInSuperConstructorParam.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = other: B) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/samConstructorCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/samConstructorCall.txt index c3ede5f588b..64f30ed816d 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/samConstructorCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/samConstructorCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -22,3 +22,4 @@ KtSuccessCallInfo: returnType = kotlin.Function2, ft, kotlin.Int> symbol = function: kotlin.Function2, ft, kotlin.Int>) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/simpleCallWithNonMatchingArgs.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/simpleCallWithNonMatchingArgs.txt index 34daff7105b..0dc82b6ad61 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/simpleCallWithNonMatchingArgs.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/simpleCallWithNonMatchingArgs.txt @@ -1,15 +1,14 @@ -KtErrorCallInfo: - candidateCalls = [ - KtSimpleFunctionCall: - isImplicitInvoke = false - partiallyAppliedSymbol = KtPartiallyAppliedSymbol: - dispatchReceiver = null - extensionReceiver = null - signature = KtFunctionLikeSignature: - receiverType = null - returnType = kotlin.Unit - symbol = /foo(): kotlin.Unit - valueParameters = [] - argumentMapping = {} - ] +KtInapplicableCallCandidateInfo: diagnostic = ERROR + candidate = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.Unit + symbol = /foo(): kotlin.Unit + valueParameters = [] + argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/smartCastExplicitExtensionReceiver.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/smartCastExplicitExtensionReceiver.txt index 1f9212e4820..c51edbc36c2 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/smartCastExplicitExtensionReceiver.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/smartCastExplicitExtensionReceiver.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -14,3 +14,4 @@ KtSuccessCallInfo: symbol = /foo(: kotlin.String): kotlin.Unit valueParameters = [] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunction.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunction.txt index 6120ca0fd4b..35bbda1ceb6 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunction.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunction.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.Int symbol = p1: P1) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionLikeCall.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionLikeCall.txt index dfce88339f1..0326c474449 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionLikeCall.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionLikeCall.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -12,3 +12,4 @@ KtSuccessCallInfo: symbol = /invoke(: kotlin.Int): kotlin.String valueParameters = [] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterName.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterName.txt index a8a63678d5f..6aeeed5d51b 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterName.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterName.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -34,3 +34,4 @@ KtSuccessCallInfo: returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String symbol = p2: P2) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotation.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotation.txt index a8a63678d5f..6aeeed5d51b 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotation.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotation.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -34,3 +34,4 @@ KtSuccessCallInfo: returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String symbol = p2: P2) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotationConflict.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotationConflict.txt index a8a63678d5f..6aeeed5d51b 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotationConflict.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameAnnotationConflict.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -34,3 +34,4 @@ KtSuccessCallInfo: returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String symbol = p2: P2) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameGeneric.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameGeneric.txt index 6870fe1928c..13a4ecb4b7e 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameGeneric.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameGeneric.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = @R|kotlin.ParameterName|(name = String(a)) kotlin.Int symbol = p1: P1) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameInNonFunctionType.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameInNonFunctionType.txt index 1568f1d86d0..e79d7777227 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameInNonFunctionType.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameInNonFunctionType.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = false partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -32,3 +32,4 @@ KtSuccessCallInfo: returnType = @R|kotlin.ParameterName|(name = String(meNeither)) kotlin.String symbol = b: @R|kotlin.ParameterName|(name = String(meNeither)) kotlin.String) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameMixed.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameMixed.txt index 28fbf9c7648..cd4a15ecbf7 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameMixed.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableAsFunctionWithParameterNameMixed.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -34,3 +34,4 @@ KtSuccessCallInfo: returnType = kotlin.String symbol = p2: P2) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithExtensionInvoke.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithExtensionInvoke.txt index c1388aa229f..423bd243953 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithExtensionInvoke.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithExtensionInvoke.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.String symbol = t: T) } + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_dispatchReceiver.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_dispatchReceiver.txt index 0e42ca83ba6..e9a520e5cb1 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_dispatchReceiver.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_dispatchReceiver.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -12,3 +12,4 @@ KtSuccessCallInfo: symbol = /invoke(: kotlin.Int): kotlin.Unit valueParameters = [] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_extensionReceiver.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_extensionReceiver.txt index 0e42ca83ba6..e9a520e5cb1 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_extensionReceiver.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithInvokeFunctionCall_extensionReceiver.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = null @@ -12,3 +12,4 @@ KtSuccessCallInfo: symbol = /invoke(: kotlin.Int): kotlin.Unit valueParameters = [] argumentMapping = {} + isInBestCandidates = true diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithMemberInvoke.txt b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithMemberInvoke.txt index 074ee48e27b..197cabb65e6 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithMemberInvoke.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCandidates/singleCandidate/variableWithMemberInvoke.txt @@ -1,5 +1,5 @@ -KtSuccessCallInfo: - call = KtSimpleFunctionCall: +KtApplicableCallCandidateInfo: + candidate = KtSimpleFunctionCall: isImplicitInvoke = true partiallyAppliedSymbol = KtPartiallyAppliedSymbol: dispatchReceiver = KtExplicitReceiverValue: @@ -24,3 +24,4 @@ KtSuccessCallInfo: returnType = kotlin.String symbol = t: T) } + isInBestCandidates = true