Analysis API: Add API functions to get all the candidates (with argument

mapping and substitutor) for a function call.
This commit is contained in:
Mark Punzalan
2022-01-31 18:57:40 +01:00
committed by Ilya Kirillov
parent 322b10f1bb
commit 4a09abc418
7 changed files with 221 additions and 36 deletions
@@ -6,10 +6,14 @@
package org.jetbrains.kotlin.analysis.api.components
import org.jetbrains.kotlin.analysis.api.calls.KtCallInfo
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.KtArrayAccessExpression
import org.jetbrains.kotlin.psi.KtCallElement
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtUnaryExpression
public abstract class KtCallResolver : KtAnalysisSessionComponent() {
public abstract fun resolveCall(psi: KtElement): KtCallInfo?
public abstract fun resolveCandidates(psi: KtElement): List<KtCallInfo>
}
public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
@@ -26,4 +30,10 @@ public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
public fun KtArrayAccessExpression.resolveCall(): KtCallInfo =
analysisSession.callResolver.resolveCall(this) ?: error("KtArrayAccessExpression should always resolve to a KtCallInfo")
public fun KtCallElement.resolveCandidates(): List<KtCallInfo> =
analysisSession.callResolver.resolveCandidates(this)
public fun KtArrayAccessExpression.resolveCandidates(): List<KtCallInfo> =
analysisSession.callResolver.resolveCandidates(this)
}