FIR IDE: Expand KtCall API to include array access calls.
This commit is contained in:
committed by
Ilya Kirillov
parent
e27b75bfba
commit
7f9ed58c7d
+5
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.idea.frontend.api.components
|
package org.jetbrains.kotlin.idea.frontend.api.components
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCall
|
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.KtBinaryExpression
|
||||||
import org.jetbrains.kotlin.psi.KtCallElement
|
import org.jetbrains.kotlin.psi.KtCallElement
|
||||||
import org.jetbrains.kotlin.psi.KtUnaryExpression
|
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: KtCallElement): KtCall?
|
||||||
public abstract fun resolveCall(call: KtBinaryExpression): KtCall?
|
public abstract fun resolveCall(call: KtBinaryExpression): KtCall?
|
||||||
public abstract fun resolveCall(call: KtUnaryExpression): KtCall?
|
public abstract fun resolveCall(call: KtUnaryExpression): KtCall?
|
||||||
|
public abstract fun resolveCall(call: KtArrayAccessExpression): KtCall?
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
|
public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
|
||||||
@@ -25,4 +27,7 @@ public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
|
|||||||
|
|
||||||
public fun KtUnaryExpression.resolveCall(): KtCall? =
|
public fun KtUnaryExpression.resolveCall(): KtCall? =
|
||||||
analysisSession.callResolver.resolveCall(this)
|
analysisSession.callResolver.resolveCall(this)
|
||||||
|
|
||||||
|
public fun KtArrayAccessExpression.resolveCall(): KtCall? =
|
||||||
|
analysisSession.callResolver.resolveCall(this)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -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? {
|
private fun resolveCall(firCall: FirFunctionCall): KtCall? {
|
||||||
val session = firResolveState.rootModuleSession
|
val session = firResolveState.rootModuleSession
|
||||||
return when {
|
return when {
|
||||||
|
|||||||
Reference in New Issue
Block a user