FIR IDE: Expand KtCall API to include array access calls.

This commit is contained in:
Mark Punzalan
2021-08-06 23:50:21 +00:00
committed by Ilya Kirillov
parent e27b75bfba
commit 7f9ed58c7d
2 changed files with 12 additions and 0 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.idea.frontend.api.components
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCall
import org.jetbrains.kotlin.psi.KtArrayAccessExpression
import org.jetbrains.kotlin.psi.KtBinaryExpression
import org.jetbrains.kotlin.psi.KtCallElement
import org.jetbrains.kotlin.psi.KtUnaryExpression
@@ -14,6 +15,7 @@ public abstract class KtCallResolver : KtAnalysisSessionComponent() {
public abstract fun resolveCall(call: KtCallElement): KtCall?
public abstract fun resolveCall(call: KtBinaryExpression): KtCall?
public abstract fun resolveCall(call: KtUnaryExpression): KtCall?
public abstract fun resolveCall(call: KtArrayAccessExpression): KtCall?
}
public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
@@ -25,4 +27,7 @@ public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
public fun KtUnaryExpression.resolveCall(): KtCall? =
analysisSession.callResolver.resolveCall(this)
public fun KtArrayAccessExpression.resolveCall(): KtCall? =
analysisSession.callResolver.resolveCall(this)
}
@@ -78,6 +78,13 @@ internal class KtFirCallResolver(
}
}
override fun resolveCall(call: KtArrayAccessExpression): KtCall? = withValidityAssertion {
return when (val fir = call.getOrBuildFir(firResolveState)) {
is FirFunctionCall -> resolveCall(fir)
else -> null
}
}
private fun resolveCall(firCall: FirFunctionCall): KtCall? {
val session = firResolveState.rootModuleSession
return when {