From 1a22124c024f4e86fdf33a18c4b64beab07478ae Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Thu, 28 Oct 2021 15:24:38 -0700 Subject: [PATCH] FIR IDE: add helper to resolve call for any KtElement --- .../api/impl/base/test/fir/AbstractResolveCallTest.kt | 7 ++----- .../kotlin/analysis/api/components/KtCallResolver.kt | 10 +++++++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/fir/AbstractResolveCallTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/fir/AbstractResolveCallTest.kt index 57c175c2941..48489999645 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/fir/AbstractResolveCallTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/fir/AbstractResolveCallTest.kt @@ -44,11 +44,6 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator } 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 KtDeclarationModifierList -> { val annotationEntry = element.annotationEntries.singleOrNull() @@ -60,6 +55,8 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator ?: error("Only single annotation entry is supported for now") annotationEntry.resolveCall() } + is KtSimpleNameExpression -> element.resolveAccessorCall() + is KtElement -> element.resolveCallIfPossible() else -> error("Selected element type (${element::class.simpleName}) is not supported for resolveCall()") } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt index 530de4a03ca..0e8db2d2a41 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt @@ -36,4 +36,12 @@ public interface KtCallResolverMixIn : KtAnalysisSessionMixIn { public fun KtArrayAccessExpression.resolveCall(): KtCall? = 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 + } +} \ No newline at end of file