FIR IDE: add helper to resolve call for any KtElement
This commit is contained in:
committed by
Ilya Kirillov
parent
523cb4b3e8
commit
1a22124c02
+2
-5
@@ -44,11 +44,6 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun KtAnalysisSession.resolveCall(element: PsiElement): KtCall? = when (element) {
|
private fun KtAnalysisSession.resolveCall(element: PsiElement): KtCall? = when (element) {
|
||||||
is KtCallElement -> element.resolveCall()
|
|
||||||
is KtBinaryExpression -> element.resolveCall()
|
|
||||||
is KtUnaryExpression -> element.resolveCall()
|
|
||||||
is KtArrayAccessExpression -> element.resolveCall()
|
|
||||||
is KtSimpleNameExpression -> element.resolveAccessorCall()
|
|
||||||
is KtValueArgument -> resolveCall(element.getArgumentExpression()!!)
|
is KtValueArgument -> resolveCall(element.getArgumentExpression()!!)
|
||||||
is KtDeclarationModifierList -> {
|
is KtDeclarationModifierList -> {
|
||||||
val annotationEntry = element.annotationEntries.singleOrNull()
|
val annotationEntry = element.annotationEntries.singleOrNull()
|
||||||
@@ -60,6 +55,8 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator
|
|||||||
?: error("Only single annotation entry is supported for now")
|
?: error("Only single annotation entry is supported for now")
|
||||||
annotationEntry.resolveCall()
|
annotationEntry.resolveCall()
|
||||||
}
|
}
|
||||||
|
is KtSimpleNameExpression -> element.resolveAccessorCall()
|
||||||
|
is KtElement -> element.resolveCallIfPossible()
|
||||||
else -> error("Selected element type (${element::class.simpleName}) is not supported for resolveCall()")
|
else -> error("Selected element type (${element::class.simpleName}) is not supported for resolveCall()")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-1
@@ -36,4 +36,12 @@ public interface KtCallResolverMixIn : KtAnalysisSessionMixIn {
|
|||||||
|
|
||||||
public fun KtArrayAccessExpression.resolveCall(): KtCall? =
|
public fun KtArrayAccessExpression.resolveCall(): KtCall? =
|
||||||
analysisSession.callResolver.resolveCall(this)
|
analysisSession.callResolver.resolveCall(this)
|
||||||
}
|
|
||||||
|
public fun KtElement.resolveCallIfPossible(): KtCall? = when (this) {
|
||||||
|
is KtCallElement -> resolveCall()
|
||||||
|
is KtBinaryExpression -> resolveCall()
|
||||||
|
is KtUnaryExpression -> resolveCall()
|
||||||
|
is KtArrayAccessExpression -> resolveCall()
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user