From ebafd0fb5184b2505b947fc12571d035c25c67d8 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 26 Aug 2020 15:07:25 +0300 Subject: [PATCH] FIR IDE: resolve ambiguity & inapplicable references --- .../idea/references/FirReferenceResolveHelper.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt index 7c2217d7be8..8d736776857 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt @@ -11,6 +11,9 @@ import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.references.* import org.jetbrains.kotlin.fir.resolve.calls.SyntheticPropertySymbol +import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError +import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError +import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeOperatorAmbiguityError import org.jetbrains.kotlin.fir.resolve.firSymbolProvider import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol @@ -218,7 +221,13 @@ internal object FirReferenceResolveHelper { } else emptyList() } is FirErrorNamedReference -> { - return emptyList() + val candidates = when (val diagnostic = fir.diagnostic) { + is ConeAmbiguityError -> diagnostic.candidates + is ConeOperatorAmbiguityError -> diagnostic.candidates + is ConeInapplicableCandidateError -> listOf(diagnostic.candidateSymbol) + else -> emptyList() + } + return candidates.mapNotNull { it.fir.buildSymbol(symbolBuilder) } } else -> { // Handle situation when we're in the middle/beginning of qualifier