From cc3ad734362876f1b684e09ef23d91864ca33944 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Thu, 2 Sep 2021 18:25:38 +0300 Subject: [PATCH] [FIR IDE] Handle callable references better in `KtFirImportOptimizer` --- .../api/fir/components/KtFirImportOptimizer.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt index c737c27a221..f9ea8fe5a4a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirImportOptimizer.kt @@ -113,9 +113,9 @@ internal class KtFirImportOptimizer( super.visitTypeRef(resolvedTypeRef) } - override fun visitResolvedCallableReference(resolvedCallableReference: FirResolvedCallableReference) { - processResolvedCallableReference(resolvedCallableReference) - super.visitResolvedCallableReference(resolvedCallableReference) + override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) { + processCallableReferenceAccess(callableReferenceAccess) + super.visitCallableReferenceAccess(callableReferenceAccess) } override fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier) { @@ -153,10 +153,12 @@ internal class KtFirImportOptimizer( processTypeQualifier(wholeQualifier) } - private fun processResolvedCallableReference(resolvedCallableReference: FirResolvedCallableReference) { - val referencedCallableSymbol = resolvedCallableReference.resolvedSymbol as? FirCallableSymbol<*> ?: return + private fun processCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) { + if (callableReferenceAccess.isFullyQualified) return - saveCallable(referencedCallableSymbol, resolvedCallableReference.name) + val resolvedSymbol = callableReferenceAccess.calleeReference.toResolvedCallableSymbol() ?: return + + saveCallable(resolvedSymbol, resolvedSymbol.name) } private fun processResolvedQualifier(resolvedQualifier: FirResolvedQualifier) {