Analysis API: Return KtCallCandidateInfo instead of KtCallInfo in

KtCallResolver.collectAllCandidates().
This commit is contained in:
Mark Punzalan
2022-02-07 23:18:25 +00:00
committed by Ilya Kirillov
parent b8cdfc5aad
commit 3f3873dc50
73 changed files with 1017 additions and 947 deletions
@@ -147,7 +147,7 @@ internal class KtFe10CallResolver(
} }
// TODO: See Call.resolveCandidates() in plugins/kotlin/core/src/org/jetbrains/kotlin/idea/core/Utils.kt // TODO: See Call.resolveCandidates() in plugins/kotlin/core/src/org/jetbrains/kotlin/idea/core/Utils.kt
override fun collectCallCandidates(psi: KtElement): List<KtCallInfo> = TODO() override fun collectCallCandidates(psi: KtElement): List<KtCallCandidateInfo> = TODO()
private fun handleAsCompoundAssignment(context: BindingContext, binaryExpression: KtBinaryExpression): KtCallInfo? { private fun handleAsCompoundAssignment(context: BindingContext, binaryExpression: KtBinaryExpression): KtCallInfo? {
val left = binaryExpression.left ?: return null val left = binaryExpression.left ?: return null
@@ -79,7 +79,7 @@ internal class KtFirCallResolver(
} }
override fun resolveCall(psi: KtElement): KtCallInfo? = withValidityAssertion { override fun resolveCall(psi: KtElement): KtCallInfo? = withValidityAssertion {
val ktCallInfos = getKtCallInfos(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall -> val ktCallInfos = getCallInfo(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall ->
listOfNotNull( listOfNotNull(
toKtCallInfo( toKtCallInfo(
psiToResolve, psiToResolve,
@@ -92,14 +92,14 @@ internal class KtFirCallResolver(
return ktCallInfos.singleOrNull() return ktCallInfos.singleOrNull()
} }
private inline fun getKtCallInfos( private inline fun <T> getCallInfo(
psi: KtElement, psi: KtElement,
getKtCallInfos: FirElement.( getCallInfo: FirElement.(
psiToResolve: KtElement, psiToResolve: KtElement,
resolveCalleeExpressionOfFunctionCall: Boolean, resolveCalleeExpressionOfFunctionCall: Boolean,
resolveFragmentOfCall: Boolean resolveFragmentOfCall: Boolean
) -> List<KtCallInfo> ) -> List<T>
): List<KtCallInfo> { ): List<T> {
if (psi.isNotResolvable()) return emptyList() if (psi.isNotResolvable()) return emptyList()
val containingCallExpressionForCalleeExpression = psi.getContainingCallExpressionForCalleeExpression() val containingCallExpressionForCalleeExpression = psi.getContainingCallExpressionForCalleeExpression()
@@ -111,7 +111,7 @@ internal class KtFirCallResolver(
?: containingUnaryExpressionForIncOrDec ?: containingUnaryExpressionForIncOrDec
?: psi ?: psi
val fir = psiToResolve.getOrBuildFir(analysisSession.firResolveState) ?: return emptyList() val fir = psiToResolve.getOrBuildFir(analysisSession.firResolveState) ?: return emptyList()
return fir.getKtCallInfos( return fir.getCallInfo(
psiToResolve, psiToResolve,
psiToResolve == containingCallExpressionForCalleeExpression, psiToResolve == containingCallExpressionForCalleeExpression,
psiToResolve == containingBinaryExpressionForLhs || psiToResolve == containingUnaryExpressionForIncOrDec psiToResolve == containingBinaryExpressionForLhs || psiToResolve == containingUnaryExpressionForIncOrDec
@@ -693,8 +693,8 @@ internal class KtFirCallResolver(
private fun FirValueParameterSymbol.toKtSymbol(): KtValueParameterSymbol = private fun FirValueParameterSymbol.toKtSymbol(): KtValueParameterSymbol =
firSymbolBuilder.variableLikeBuilder.buildValueParameterSymbol(this) firSymbolBuilder.variableLikeBuilder.buildValueParameterSymbol(this)
override fun collectCallCandidates(psi: KtElement): List<KtCallInfo> = withValidityAssertion { override fun collectCallCandidates(psi: KtElement): List<KtCallCandidateInfo> = withValidityAssertion {
getKtCallInfos(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall -> getCallInfo(psi) { psiToResolve, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall ->
collectCallCandidates( collectCallCandidates(
psiToResolve, psiToResolve,
resolveCalleeExpressionOfFunctionCall, resolveCalleeExpressionOfFunctionCall,
@@ -708,9 +708,14 @@ internal class KtFirCallResolver(
psi: KtElement, psi: KtElement,
resolveCalleeExpressionOfFunctionCall: Boolean, resolveCalleeExpressionOfFunctionCall: Boolean,
resolveFragmentOfCall: Boolean, resolveFragmentOfCall: Boolean,
): List<KtCallInfo> { ): List<KtCallCandidateInfo> {
if (this is FirCheckNotNullCall) 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) { if (resolveCalleeExpressionOfFunctionCall && this is FirImplicitInvokeCall) {
// For implicit invoke, we resolve the calleeExpression of the CallExpression to the call that creates the receiver of this // For implicit invoke, we resolve the calleeExpression of the CallExpression to the call that creates the receiver of this
// implicit invoke call. For example, // implicit invoke call. For example,
@@ -734,13 +739,7 @@ internal class KtFirCallResolver(
resolveFragmentOfCall resolveFragmentOfCall
) )
is FirArrayOfCall, is FirComparisonExpression, is FirEqualityOperatorCall -> { is FirArrayOfCall, is FirComparisonExpression, is FirEqualityOperatorCall -> {
listOfNotNull( toKtCallInfo(psi, resolveCalleeExpressionOfFunctionCall, resolveFragmentOfCall).toKtCallCandidateInfos()
toKtCallInfo(
psi,
resolveCalleeExpressionOfFunctionCall,
resolveFragmentOfCall
)
)
} }
else -> { else -> {
// TODO: FirDelegatedConstructorCall, FirAnnotationCall, FirPropertyAccessExpression, FirVariableAssignment // TODO: FirDelegatedConstructorCall, FirAnnotationCall, FirPropertyAccessExpression, FirVariableAssignment
@@ -752,7 +751,7 @@ internal class KtFirCallResolver(
private fun FirFunctionCall.collectCallCandidates( private fun FirFunctionCall.collectCallCandidates(
psi: KtElement, psi: KtElement,
resolveFragmentOfCall: Boolean resolveFragmentOfCall: Boolean
): List<KtCallInfo> { ): List<KtCallCandidateInfo> {
// If a function call is resolved to an implicit invoke call, the FirImplicitInvokeCall will have the `invoke()` function as the // 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 // 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). // call's explicit receiver (if there is any) and callee (i.e., the variable).
@@ -783,7 +782,7 @@ internal class KtFirCallResolver(
psi psi
) )
return candidates.mapNotNull { return candidates.mapNotNull {
convertToKtCallInfo( convertToKtCallCandidateInfo(
originalFunctionCall, originalFunctionCall,
psi, psi,
it.candidate, it.candidate,
@@ -793,25 +792,33 @@ internal class KtFirCallResolver(
} }
} }
private fun convertToKtCallInfo( private fun KtCallInfo?.toKtCallCandidateInfos(): List<KtCallCandidateInfo> {
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, functionCall: FirFunctionCall,
element: KtElement, element: KtElement,
candidate: Candidate, candidate: Candidate,
isInBestCandidates: Boolean, isInBestCandidates: Boolean,
resolveFragmentOfCall: Boolean resolveFragmentOfCall: Boolean
): KtCallInfo? { ): KtCallCandidateInfo? {
val call = createKtCall(element, functionCall, candidate, resolveFragmentOfCall) val call = createKtCall(element, functionCall, candidate, resolveFragmentOfCall)
?: error("expect `createKtCall` to succeed for candidate") ?: error("expect `createKtCall` to succeed for candidate")
return if (candidate.isSuccessful && isInBestCandidates) { if (candidate.isSuccessful) {
KtSuccessCallInfo(call) return KtApplicableCallCandidateInfo(call, isInBestCandidates)
} else { }
val diagnostic = createConeDiagnosticForCandidateWithError(candidate.currentApplicability, candidate) val diagnostic = createConeDiagnosticForCandidateWithError(candidate.currentApplicability, candidate)
if (diagnostic is ConeHiddenCandidateError) return null if (diagnostic is ConeHiddenCandidateError) return null
val ktDiagnostic = val ktDiagnostic =
functionCall.source?.let { diagnostic.asKtDiagnostic(it, element.toKtPsiSourceElement(), diagnosticCache) } functionCall.source?.let { diagnostic.asKtDiagnostic(it, element.toKtPsiSourceElement(), diagnosticCache) }
?: KtNonBoundToPsiErrorDiagnostic(factoryName = null, diagnostic.reason, token) ?: KtNonBoundToPsiErrorDiagnostic(factoryName = null, diagnostic.reason, token)
KtErrorCallInfo(listOf(call), ktDiagnostic, token) return KtInapplicableCallCandidateInfo(call, isInBestCandidates, ktDiagnostic)
}
} }
private val FirResolvable.calleeOrCandidateName: Name? private val FirResolvable.calleeOrCandidateName: Name?
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.api.impl.base.test.components
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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.barebone.test.expressionMarkerProvider
import org.jetbrains.kotlin.analysis.api.impl.base.test.test.framework.AbstractHLApiSingleModuleTest import org.jetbrains.kotlin.analysis.api.impl.base.test.test.framework.AbstractHLApiSingleModuleTest
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
@@ -26,14 +26,17 @@ abstract class AbstractResolveCandidatesTest : AbstractHLApiSingleModuleTest() {
if (candidates.isEmpty()) { if (candidates.isEmpty()) {
"NO_CANDIDATES" "NO_CANDIDATES"
} else { } 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) testServices.assertions.assertEqualsToTestDataFileSibling(actual)
} }
private fun KtAnalysisSession.collectCallCandidates(element: PsiElement): List<KtCallInfo> = when (element) { private fun KtAnalysisSession.collectCallCandidates(element: PsiElement): List<KtCallCandidateInfo> = when (element) {
is KtValueArgument -> this@collectCallCandidates.collectCallCandidates(element.getArgumentExpression()!!) is KtValueArgument -> this@collectCallCandidates.collectCallCandidates(element.getArgumentExpression()!!)
is KtDeclarationModifierList -> { is KtDeclarationModifierList -> {
val annotationEntry = element.annotationEntries.singleOrNull() val annotationEntry = element.annotationEntries.singleOrNull()
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.api.impl.base.test.components
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.calls.KtCall 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.calls.KtCallableMemberCall
import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnostic import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.analysis.api.impl.base.KtMapBackedSubstitutor import org.jetbrains.kotlin.analysis.api.impl.base.KtMapBackedSubstitutor
@@ -20,34 +19,33 @@ import kotlin.reflect.KProperty1
import kotlin.reflect.KVisibility import kotlin.reflect.KVisibility
import kotlin.reflect.full.memberProperties import kotlin.reflect.full.memberProperties
internal fun KtAnalysisSession.stringRepresentation(call: KtCallInfo): String { internal fun KtAnalysisSession.stringRepresentation(any: Any): String = with(any) {
fun Any.stringValue(): String {
fun KtType.render() = asStringForDebugging().replace('/', '.') fun KtType.render() = asStringForDebugging().replace('/', '.')
fun String.indented() = replace("\n", "\n ") fun String.indented() = replace("\n", "\n ")
return when (this) { return when (this) {
is KtFunctionLikeSymbol -> buildString { is KtFunctionLikeSymbol -> buildString {
append( append(
when (this@stringValue) { when (this@with) {
is KtFunctionSymbol -> callableIdIfNonLocal ?: name is KtFunctionSymbol -> callableIdIfNonLocal ?: name
is KtSamConstructorSymbol -> callableIdIfNonLocal ?: name is KtSamConstructorSymbol -> callableIdIfNonLocal ?: name
is KtConstructorSymbol -> "<constructor>" is KtConstructorSymbol -> "<constructor>"
is KtPropertyGetterSymbol -> callableIdIfNonLocal ?: "<getter>" is KtPropertyGetterSymbol -> callableIdIfNonLocal ?: "<getter>"
is KtPropertySetterSymbol -> callableIdIfNonLocal ?: "<setter>" is KtPropertySetterSymbol -> callableIdIfNonLocal ?: "<setter>"
else -> error("unexpected symbol kind in KtCall: ${this@stringValue::class.java}") else -> error("unexpected symbol kind in KtCall: ${this@with::class.java}")
} }
) )
append("(") append("(")
(this@stringValue as? KtFunctionSymbol)?.receiverType?.let { receiver -> (this@with as? KtFunctionSymbol)?.receiverType?.let { receiver ->
append("<extension receiver>: ${receiver.render()}") append("<extension receiver>: ${receiver.render()}")
if (valueParameters.isNotEmpty()) append(", ") if (valueParameters.isNotEmpty()) append(", ")
} }
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
(this@stringValue as? KtCallableSymbol)?.getDispatchReceiverType()?.let { dispatchReceiverType -> (this@with as? KtCallableSymbol)?.getDispatchReceiverType()?.let { dispatchReceiverType ->
append("<dispatch receiver>: ${dispatchReceiverType.render()}") append("<dispatch receiver>: ${dispatchReceiverType.render()}")
if (valueParameters.isNotEmpty()) append(", ") if (valueParameters.isNotEmpty()) append(", ")
} }
valueParameters.joinTo(this) { it.stringValue() } valueParameters.joinTo(this) { stringRepresentation(it) }
append(")") append(")")
append(": ${returnType.render()}") append(": ${returnType.render()}")
} }
@@ -60,19 +58,19 @@ internal fun KtAnalysisSession.stringRepresentation(call: KtCallInfo): String {
separator = ",\n ", separator = ",\n ",
prefix = "{\n ", prefix = "{\n ",
postfix = "\n}" postfix = "\n}"
) { (k, v) -> "${k?.stringValue()?.indented()} -> (${v?.stringValue()?.indented()})" } ) { (k, v) -> "${k?.let { stringRepresentation(it).indented() }} -> (${v?.let { stringRepresentation(it).indented() }})" }
is Collection<*> -> if (isEmpty()) "[]" else joinToString( is Collection<*> -> if (isEmpty()) "[]" else joinToString(
separator = ",\n ", separator = ",\n ",
prefix = "[\n ", prefix = "[\n ",
postfix = "\n]" postfix = "\n]"
) { ) {
it?.stringValue()?.indented() ?: "null" it?.let { stringRepresentation(it).indented() } ?: "null"
} }
is PsiElement -> this.text is PsiElement -> this.text
is KtSubstitutor.Empty -> "<empty substitutor>" is KtSubstitutor.Empty -> "<empty substitutor>"
is KtMapBackedSubstitutor -> { is KtMapBackedSubstitutor -> {
val mappingText = getAsMap().entries val mappingText = getAsMap().entries
.joinToString(prefix = "{", postfix = "}") { (k, v) -> k.stringValue() + " = " + v.asStringForDebugging() } .joinToString(prefix = "{", postfix = "}") { (k, v) -> stringRepresentation(k) + " = " + v.asStringForDebugging() }
"<map substitutor: $mappingText>" "<map substitutor: $mappingText>"
} }
is KtSubstitutor -> "<complex substitutor>" is KtSubstitutor -> "<complex substitutor>"
@@ -81,7 +79,7 @@ internal fun KtAnalysisSession.stringRepresentation(call: KtCallInfo): String {
is Enum<*> -> name is Enum<*> -> name
is Name -> asString() is Name -> asString()
else -> buildString { else -> buildString {
val clazz = this@stringValue::class val clazz = this@with::class
val className = clazz.simpleName!! val className = clazz.simpleName!!
append(className) append(className)
appendLine(":") appendLine(":")
@@ -91,22 +89,20 @@ internal fun KtAnalysisSession.stringRepresentation(call: KtCallInfo): String {
val name = property.name val name = property.name
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
val value = (property as KProperty1<Any, *>).get(this@stringValue)?.let { val value = (property as KProperty1<Any, *>).get(this@with)?.let {
if (className == "KtErrorCallInfo" && name == "candidateCalls") { if (className == "KtErrorCallInfo" && name == "candidateCalls") {
// The order of calls in KtErrorCallInfo.candidateCalls is non-deterministic. Sort by symbol string value. (it as Collection<KtCall>).sortedWith { call1, call2 -> compareCalls(call1, call2) }
(it as Collection<KtCall>).sortedWith { call1, call2 ->
if (call1 is KtCallableMemberCall<*, *> && call2 is KtCallableMemberCall<*, *>) {
call1.partiallyAppliedSymbol.stringValue().compareTo(call2.partiallyAppliedSymbol.stringValue())
} else 0
}
} else it } else it
} }
val valueAsString = value?.stringValue()?.indented() val valueAsString = value?.let { stringRepresentation(it).indented() }
"$name = $valueAsString" "$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))
} }
@@ -66,6 +66,49 @@ public fun KtCallInfo.successfulVariableAccessCall(): KtVariableAccessCall? = su
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
public fun KtCallInfo.successfulConstructorCallOrNull(): KtFunctionCall<KtConstructorSymbol>? = public fun KtCallInfo.successfulConstructorCallOrNull(): KtFunctionCall<KtConstructorSymbol>? =
successfulCallOrNull<KtFunctionCall<*>>()?.takeIf { it.symbol is KtConstructorSymbol } as KtFunctionCall<KtConstructorSymbol>? successfulCallOrNull<KtFunctionCall<*>>()?.takeIf { it.symbol is KtConstructorSymbol } as KtFunctionCall<KtConstructorSymbol>?
/**
* 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. * A call to a function, a simple/compound access to a property, or a simple/compound access through `get` and `set` convention.
*/ */
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.analysis.api.components 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.analysis.api.calls.KtCallInfo
import org.jetbrains.kotlin.psi.KtArrayAccessExpression import org.jetbrains.kotlin.psi.KtArrayAccessExpression
import org.jetbrains.kotlin.psi.KtCallElement import org.jetbrains.kotlin.psi.KtCallElement
@@ -13,7 +14,7 @@ import org.jetbrains.kotlin.psi.KtUnaryExpression
public abstract class KtCallResolver : KtAnalysisSessionComponent() { public abstract class KtCallResolver : KtAnalysisSessionComponent() {
public abstract fun resolveCall(psi: KtElement): KtCallInfo? public abstract fun resolveCall(psi: KtElement): KtCallInfo?
public abstract fun collectCallCandidates(psi: KtElement): List<KtCallInfo> public abstract fun collectCallCandidates(psi: KtElement): List<KtCallCandidateInfo>
} }
public interface KtCallResolverMixIn : KtAnalysisSessionMixIn { 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 * [resolveCall] only returns the final result of overload resolution, i.e., the selected callable after considering candidate
* applicability and choosing the most specific candidate. * applicability and choosing the most specific candidate.
*/ */
public fun KtElement.collectCallCandidates(): List<KtCallInfo> = public fun KtElement.collectCallCandidates(): List<KtCallCandidateInfo> =
analysisSession.callResolver.collectCallCandidates(this) analysisSession.callResolver.collectCallCandidates(this)
} }
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/Char was expected>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -23,12 +23,11 @@ KtErrorCallInfo:
returnType = kotlin.Char returnType = kotlin.Char
symbol = a: kotlin.Char) symbol = a: kotlin.Char)
} }
] isInBestCandidates = true
diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/Char was expected>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/Boolean was expected>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -51,12 +50,11 @@ KtErrorCallInfo:
returnType = kotlin.Boolean returnType = kotlin.Boolean
symbol = b: kotlin.Boolean) symbol = b: kotlin.Boolean)
} }
] isInBestCandidates = true
diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/Boolean was expected>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/String was expected>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -79,5 +77,4 @@ KtErrorCallInfo:
returnType = kotlin.String returnType = kotlin.String
symbol = c: kotlin.String) symbol = c: kotlin.String)
} }
] isInBestCandidates = true
diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/String was expected>
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'a'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -19,12 +19,11 @@ KtErrorCallInfo:
symbol = a: kotlin.String symbol = a: kotlin.String
] ]
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'a'>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -43,12 +42,11 @@ KtErrorCallInfo:
symbol = b: kotlin.Boolean symbol = b: kotlin.Boolean
] ]
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'c'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -65,5 +63,4 @@ KtErrorCallInfo:
symbol = c: kotlin.Char symbol = c: kotlin.Char
] ]
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = false
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'c'>
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'a'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -28,12 +28,11 @@ KtErrorCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = t: T) symbol = t: T)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'a'>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -61,12 +60,11 @@ KtErrorCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = u: U) symbol = u: U)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'c'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -94,5 +92,4 @@ KtErrorCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = v: V) symbol = v: V)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'c'>
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'a'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -28,12 +28,11 @@ KtErrorCallInfo:
returnType = T returnType = T
symbol = t: T) symbol = t: T)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'a'>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -61,12 +60,11 @@ KtErrorCallInfo:
returnType = U returnType = U
symbol = u: U) symbol = u: U)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'c'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -94,5 +92,4 @@ KtErrorCallInfo:
returnType = V returnType = V
symbol = v: V) symbol = v: V)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'c'>
@@ -1,59 +1,6 @@
KtSuccessCallInfo: KtInapplicableCallCandidateInfo:
call = KtSimpleFunctionCall: diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Boolean but kotlin/Int was expected>
isImplicitInvoke = false candidate = KtSimpleFunctionCall:
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = null
signature = KtFunctionLikeSignature:
receiverType = null
returnType = kotlin.Unit
symbol = x(b: kotlin.Boolean): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = b
receiverType = null
returnType = kotlin.Boolean
symbol = b: kotlin.Boolean
]
argumentMapping = {
true -> (KtVariableLikeSignature:
name = b
receiverType = null
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<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Boolean but kotlin/Char was expected>
KtErrorCallInfo:
candidateCalls = [
KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -78,5 +25,57 @@ KtErrorCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = i: kotlin.Int) symbol = i: kotlin.Int)
} }
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Boolean but kotlin/Char was expected>
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
] ]
diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Boolean but kotlin/Int was expected> 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
extensionReceiver = null
signature = KtFunctionLikeSignature:
receiverType = null
returnType = kotlin.Unit
symbol = x(b: kotlin.Boolean): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = b
receiverType = null
returnType = kotlin.Boolean
symbol = b: kotlin.Boolean
]
argumentMapping = {
true -> (KtVariableLikeSignature:
name = b
receiverType = null
returnType = kotlin.Boolean
symbol = b: kotlin.Boolean)
}
isInBestCandidates = true
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/Boolean was expected>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -25,11 +25,10 @@ KtErrorCallInfo:
returnType = kotlin.Boolean returnType = kotlin.Boolean
symbol = b: kotlin.Boolean) symbol = b: kotlin.Boolean)
} }
] isInBestCandidates = false
diagnostic = ERROR<ARGUMENT_TYPE_MISMATCH: Argument type mismatch: actual type is kotlin/Int but kotlin/Boolean was expected>
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -54,3 +53,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = i: kotlin.Int) symbol = i: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = vararg elements: T) symbol = vararg elements: T)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtImplicitReceiverValue: dispatchReceiver = KtImplicitReceiverValue:
@@ -25,3 +25,4 @@ KtSuccessCallInfo:
returnType = T returnType = T
symbol = t: T) symbol = t: T)
} }
isInBestCandidates = true
@@ -1,3 +1,4 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtCheckNotNullCall: candidate = KtCheckNotNullCall:
baseExpression = a baseExpression = a
isInBestCandidates = true
@@ -1,3 +1,4 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtCheckNotNullCall: candidate = KtCheckNotNullCall:
baseExpression = a baseExpression = a
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = other: kotlin.Int) symbol = other: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,39 +1,6 @@
KtSuccessCallInfo: KtInapplicableCallCandidateInfo:
call = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Int
returnType = kotlin.Long
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Long
valueParameters = []
argumentMapping = {}
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(<extension receiver>: kotlin.Long): kotlin.Double
valueParameters = []
argumentMapping = {}
]
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]> diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
candidate = KtSimpleFunctionCall:
KtErrorCallInfo:
candidateCalls = [
KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -46,5 +13,37 @@ KtErrorCallInfo:
symbol = /invoke(<extension receiver>: kotlin.Double): kotlin.Unit symbol = /invoke(<extension receiver>: kotlin.Double): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = false
KtApplicableCallCandidateInfo:
candidate = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Int
returnType = kotlin.Long
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Long
valueParameters = []
argumentMapping = {}
isInBestCandidates = true
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]> diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Long
returnType = kotlin.Double
symbol = /invoke(<extension receiver>: kotlin.Long): kotlin.Double
valueParameters = []
argumentMapping = {}
isInBestCandidates = false
@@ -1,39 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [
KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i()
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Int
returnType = kotlin.Long
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Long
valueParameters = []
argumentMapping = {}
]
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]> diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
candidate = KtSimpleFunctionCall:
KtSuccessCallInfo:
call = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i()
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Long
returnType = kotlin.Double
symbol = /invoke(<extension receiver>: kotlin.Long): kotlin.Double
valueParameters = []
argumentMapping = {}
KtErrorCallInfo:
candidateCalls = [
KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -46,5 +13,37 @@ KtErrorCallInfo:
symbol = /invoke(<extension receiver>: kotlin.Double): kotlin.Unit symbol = /invoke(<extension receiver>: kotlin.Double): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]> diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i()
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Int
returnType = kotlin.Long
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Long
valueParameters = []
argumentMapping = {}
isInBestCandidates = false
KtApplicableCallCandidateInfo:
candidate = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i()
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Long
returnType = kotlin.Double
symbol = /invoke(<extension receiver>: kotlin.Long): kotlin.Double
valueParameters = []
argumentMapping = {}
isInBestCandidates = true
@@ -1,41 +1,5 @@
KtErrorCallInfo: KtApplicableCallCandidateInfo:
candidateCalls = [ candidate = KtSimpleFunctionCall:
KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i()()
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Int
returnType = kotlin.Long
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Long
valueParameters = []
argumentMapping = {}
]
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
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(<extension receiver>: kotlin.Long): kotlin.Double
valueParameters = []
argumentMapping = {}
]
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
KtSuccessCallInfo:
call = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -48,3 +12,38 @@ KtSuccessCallInfo:
symbol = /invoke(<extension receiver>: kotlin.Double): kotlin.Unit symbol = /invoke(<extension receiver>: kotlin.Double): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i()()
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Int
returnType = kotlin.Long
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Long
valueParameters = []
argumentMapping = {}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<UNRESOLVED_REFERENCE_WRONG_RECEIVER: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: [/invoke]>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = i()()
isSafeNavigation = false
signature = KtFunctionLikeSignature:
receiverType = kotlin.Long
returnType = kotlin.Double
symbol = /invoke(<extension receiver>: kotlin.Long): kotlin.Double
valueParameters = []
argumentMapping = {}
isInBestCandidates = false
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Any? returnType = kotlin.Any?
symbol = other: kotlin.Any?) symbol = other: kotlin.Any?)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Any? returnType = kotlin.Any?
symbol = other: kotlin.Any?) symbol = other: kotlin.Any?)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Any? returnType = kotlin.Any?
symbol = other: kotlin.Any?) symbol = other: kotlin.Any?)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -22,3 +22,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = a: kotlin.Int) symbol = a: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = a: B) symbol = a: B)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = kotlin.Function1<kotlin.String, kotlin.Boolean> returnType = kotlin.Function1<kotlin.String, kotlin.Boolean>
symbol = b: kotlin.Function1<kotlin.String, kotlin.Boolean>) symbol = b: kotlin.Function1<kotlin.String, kotlin.Boolean>)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = a: kotlin.Int) symbol = a: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = kotlin.Function1<kotlin.String, kotlin.Boolean> returnType = kotlin.Function1<kotlin.String, kotlin.Boolean>
symbol = b: kotlin.Function1<kotlin.String, kotlin.Boolean>) symbol = b: kotlin.Function1<kotlin.String, kotlin.Boolean>)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -22,3 +22,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = vararg a: kotlin.Int) symbol = vararg a: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = kotlin.String returnType = kotlin.String
symbol = b: B) symbol = b: B)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = vararg a: kotlin.Int) symbol = vararg a: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -20,3 +20,4 @@ KtSuccessCallInfo:
symbol = p1: P1 symbol = p1: P1
] ]
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -20,3 +20,4 @@ KtSuccessCallInfo:
symbol = p1: P1 symbol = p1: P1
] ]
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = a: kotlin.Int) symbol = a: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = a: kotlin.Int) symbol = a: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<INVISIBLE_REFERENCE: Symbol /Obj.Obj is invisible>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -11,5 +11,4 @@ KtErrorCallInfo:
symbol = <constructor>(): Obj symbol = <constructor>(): Obj
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = true
diagnostic = ERROR<INVISIBLE_REFERENCE: Symbol /Obj.Obj is invisible>
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -22,3 +22,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = i: kotlin.Int) symbol = i: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -10,3 +10,4 @@ KtSuccessCallInfo:
symbol = <constructor>(): A symbol = <constructor>(): A
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -10,3 +10,4 @@ KtSuccessCallInfo:
symbol = <constructor>(): A symbol = <constructor>(): A
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -34,3 +34,4 @@ KtSuccessCallInfo:
returnType = kotlin.String returnType = kotlin.String
symbol = b: kotlin.String) symbol = b: kotlin.String)
} }
isInBestCandidates = true
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -30,5 +30,4 @@ KtErrorCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = a: kotlin.Int) symbol = a: kotlin.Int)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final operator fun /C.get(a: R|kotlin/Int|, b: R|kotlin/String|): R|kotlin/Boolean|>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -35,5 +35,4 @@ KtErrorCallInfo:
returnType = kotlin.String returnType = kotlin.String
symbol = b: kotlin.String) symbol = b: kotlin.String)
} }
] isInBestCandidates = true
diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final operator fun /C.get(a: R|kotlin/Int|, b: R|kotlin/String|): R|kotlin/Boolean|>
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -44,3 +44,4 @@ KtSuccessCallInfo:
returnType = kotlin.Boolean returnType = kotlin.Boolean
symbol = value: kotlin.Boolean) symbol = value: kotlin.Boolean)
} }
isInBestCandidates = true
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -40,5 +40,4 @@ KtErrorCallInfo:
returnType = kotlin.Boolean returnType = kotlin.Boolean
symbol = value: kotlin.Boolean) symbol = value: kotlin.Boolean)
} }
] isInBestCandidates = true
diagnostic = ERROR<NO_VALUE_FOR_PARAMETER: No value passed for parameter 'b'>
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final operator fun /C.set(a: R|kotlin/Int|, b: R|kotlin/String|, value: R|kotlin/Boolean|): R|kotlin/Unit|>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -45,5 +45,4 @@ KtErrorCallInfo:
returnType = kotlin.Boolean returnType = kotlin.Boolean
symbol = value: kotlin.Boolean) symbol = value: kotlin.Boolean)
} }
] isInBestCandidates = true
diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final operator fun /C.set(a: R|kotlin/Int|, b: R|kotlin/String|, value: R|kotlin/Boolean|): R|kotlin/Unit|>
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = vararg elements: kotlin.Int) symbol = vararg elements: kotlin.Int)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -12,3 +12,4 @@ KtSuccessCallInfo:
symbol = /JavaClass.javaMethod(<dispatch receiver>: JavaClass): kotlin.Unit symbol = /JavaClass.javaMethod(<dispatch receiver>: JavaClass): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = r: R) symbol = r: R)
} }
isInBestCandidates = true
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<INVISIBLE_REFERENCE: Symbol /A.foo is invisible>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -13,5 +13,4 @@ KtErrorCallInfo:
symbol = /A.foo(<dispatch receiver>: A): kotlin.Unit symbol = /A.foo(<dispatch receiver>: A): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = true
diagnostic = ERROR<INVISIBLE_REFERENCE: Symbol /A.foo is invisible>
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = other: B) symbol = other: B)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -22,3 +22,4 @@ KtSuccessCallInfo:
returnType = kotlin.Function2<ft<kotlin.Int, kotlin.Int?>, ft<kotlin.Int, kotlin.Int?>, kotlin.Int> returnType = kotlin.Function2<ft<kotlin.Int, kotlin.Int?>, ft<kotlin.Int, kotlin.Int?>, kotlin.Int>
symbol = function: kotlin.Function2<ft<T, T?>, ft<T, T?>, kotlin.Int>) symbol = function: kotlin.Function2<ft<T, T?>, ft<T, T?>, kotlin.Int>)
} }
isInBestCandidates = true
@@ -1,6 +1,6 @@
KtErrorCallInfo: KtInapplicableCallCandidateInfo:
candidateCalls = [ diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final fun /foo(): R|kotlin/Unit|>
KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -11,5 +11,4 @@ KtErrorCallInfo:
symbol = /foo(): kotlin.Unit symbol = /foo(): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
] isInBestCandidates = true
diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final fun /foo(): R|kotlin/Unit|>
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -14,3 +14,4 @@ KtSuccessCallInfo:
symbol = /foo(<extension receiver>: kotlin.String): kotlin.Unit symbol = /foo(<extension receiver>: kotlin.String): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.Int returnType = kotlin.Int
symbol = p1: P1) symbol = p1: P1)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -12,3 +12,4 @@ KtSuccessCallInfo:
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.String symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.String
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -34,3 +34,4 @@ KtSuccessCallInfo:
returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String
symbol = p2: P2) symbol = p2: P2)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -34,3 +34,4 @@ KtSuccessCallInfo:
returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String
symbol = p2: P2) symbol = p2: P2)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -34,3 +34,4 @@ KtSuccessCallInfo:
returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String returnType = @R|kotlin.ParameterName|(name = String(b)) kotlin.String
symbol = p2: P2) symbol = p2: P2)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = @R|kotlin.ParameterName|(name = String(a)) kotlin.Int returnType = @R|kotlin.ParameterName|(name = String(a)) kotlin.Int
symbol = p1: P1) symbol = p1: P1)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -32,3 +32,4 @@ KtSuccessCallInfo:
returnType = @R|kotlin.ParameterName|(name = String(meNeither)) kotlin.String returnType = @R|kotlin.ParameterName|(name = String(meNeither)) kotlin.String
symbol = b: @R|kotlin.ParameterName|(name = String(meNeither)) kotlin.String) symbol = b: @R|kotlin.ParameterName|(name = String(meNeither)) kotlin.String)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -34,3 +34,4 @@ KtSuccessCallInfo:
returnType = kotlin.String returnType = kotlin.String
symbol = p2: P2) symbol = p2: P2)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.String returnType = kotlin.String
symbol = t: T) symbol = t: T)
} }
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -12,3 +12,4 @@ KtSuccessCallInfo:
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Unit symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null dispatchReceiver = null
@@ -12,3 +12,4 @@ KtSuccessCallInfo:
symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Unit symbol = /invoke(<extension receiver>: kotlin.Int): kotlin.Unit
valueParameters = [] valueParameters = []
argumentMapping = {} argumentMapping = {}
isInBestCandidates = true
@@ -1,5 +1,5 @@
KtSuccessCallInfo: KtApplicableCallCandidateInfo:
call = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = true isImplicitInvoke = true
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = KtExplicitReceiverValue: dispatchReceiver = KtExplicitReceiverValue:
@@ -24,3 +24,4 @@ KtSuccessCallInfo:
returnType = kotlin.String returnType = kotlin.String
symbol = t: T) symbol = t: T)
} }
isInBestCandidates = true