From 582b00f5b26c720657b13aeb6cadc32836c831e0 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Thu, 6 Aug 2020 00:50:27 +0300 Subject: [PATCH] FIR Completion: Add `UniqueLookupElement` to the lookup elements - It is done to differentiate overloads of the same function --- .../completion/HighLevelApiLookupElementFactory.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/HighLevelApiLookupElementFactory.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/HighLevelApiLookupElementFactory.kt index 097478fa7fc..3948ac1a054 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/HighLevelApiLookupElementFactory.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/HighLevelApiLookupElementFactory.kt @@ -36,15 +36,20 @@ internal class HighLevelApiLookupElementFactory { } } +/** + * This is a temporary hack to prevent clash of the lookup elements with same names. + */ +private class UniqueLookupObject + private class ClassLookupElementFactory { fun createLookup(symbol: KtClassLikeSymbol): LookupElementBuilder { - return LookupElementBuilder.create(symbol.name.asString()) + return LookupElementBuilder.create(UniqueLookupObject(), symbol.name.asString()) } } private class VariableLookupElementFactory { fun createLookup(symbol: KtVariableLikeSymbol): LookupElementBuilder { - return LookupElementBuilder.create(symbol.name.asString()) + return LookupElementBuilder.create(UniqueLookupObject(), symbol.name.asString()) .withTypeText(ShortNamesRenderer.renderType(symbol.type)) .withInsertHandler(createInsertHandler(symbol)) } @@ -56,7 +61,7 @@ private class VariableLookupElementFactory { private class FunctionLookupElementFactory { fun createLookup(symbol: KtFunctionSymbol): LookupElementBuilder { - return LookupElementBuilder.create(symbol.name.asString()) + return LookupElementBuilder.create(UniqueLookupObject(), symbol.name.asString()) .appendTailText(ShortNamesRenderer.renderFunctionParameters(symbol), true) .withTypeText(ShortNamesRenderer.renderType(symbol.type)) .withInsertHandler(createInsertHandler(symbol))