From 7885e48eaf7469f68f9a7410a081fc9d372ce58b Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 3 Apr 2013 15:08:08 +0400 Subject: [PATCH] Setup handlers at the place where lookup elements are created --- .../completion/DescriptorLookupConverter.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.java b/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.java index 1d8a9c1979d..38f33ad85fb 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.java @@ -23,7 +23,6 @@ import com.intellij.codeInsight.completion.JavaMethodCallElement; import com.intellij.codeInsight.completion.JavaPsiClassReferenceElement; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; -import com.intellij.codeInsight.lookup.MutableLookupElement; import com.intellij.codeInsight.lookup.VariableLookupItem; import com.intellij.openapi.util.Iconable; import com.intellij.psi.*; @@ -62,15 +61,9 @@ public final class DescriptorLookupConverter { public static LookupElement createLookupElement(@NotNull KotlinCodeAnalyzer analyzer, @NotNull DeclarationDescriptor descriptor, @Nullable PsiElement declaration) { if (declaration != null) { - MutableLookupElement javaLookupElement = createJavaLookupElementIfPossible(declaration); + LookupElement javaLookupElement = createJavaLookupElementIfPossible(declaration, descriptor); if (javaLookupElement != null) { - InsertHandler customHandler = getInsertHandler(descriptor); - if (customHandler != null) { - return javaLookupElement.setInsertHandler(getInsertHandler(descriptor)); - } - else { - return javaLookupElement; - } + return javaLookupElement; } } @@ -142,11 +135,11 @@ public final class DescriptorLookupConverter { } @Nullable - private static MutableLookupElement createJavaLookupElementIfPossible(@NotNull PsiElement declaration) { + private static LookupElement createJavaLookupElementIfPossible(@NotNull PsiElement declaration, @NotNull DeclarationDescriptor descriptor) { if (declaration instanceof PsiClass) { PsiClass psiClass = (PsiClass) declaration; if (!DescriptorResolverUtils.isKotlinClass(psiClass)) { - return new JavaPsiClassReferenceElement(psiClass); + return setCustomInsertHandler(new JavaPsiClassReferenceElement(psiClass)); } } @@ -154,7 +147,10 @@ public final class DescriptorLookupConverter { PsiClass containingClass = ((PsiMember) declaration).getContainingClass(); if (containingClass != null && !DescriptorResolverUtils.isKotlinClass(containingClass)) { if (declaration instanceof PsiMethod) { - return new JavaMethodCallElementWithCustomHandler(declaration); + InsertHandler handler = getInsertHandler(descriptor); + assert handler != null: "Special kotlin handler is expected for function: " + declaration.getText() + " and descriptor" + DescriptorRenderer.TEXT.render(descriptor); + + return new JavaMethodCallElementWithCustomHandler(declaration).setInsertHandler(handler); } if (declaration instanceof PsiField) {