From d43faca81d1fe2a88321114404367987ac1b80c6 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 16 Feb 2011 17:37:30 +0100 Subject: [PATCH] IDEA-65252 Static nested classes are first proposal on values --- ...ocalVariablesLiteralsAndAnnoMethodsWeigher.java | 5 +++++ .../normalSorting/DispreferInnerClasses.java | 14 ++++++++++++++ .../completion/NormalCompletionOrderingTest.java | 8 +++++++- .../codeInsight/lookup/ComparingClassifier.java | 3 ++- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/completion/normalSorting/DispreferInnerClasses.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/PreferLocalVariablesLiteralsAndAnnoMethodsWeigher.java b/java/java-impl/src/com/intellij/codeInsight/completion/PreferLocalVariablesLiteralsAndAnnoMethodsWeigher.java index 4d9450ad5f64..c8a837d1177a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/PreferLocalVariablesLiteralsAndAnnoMethodsWeigher.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/PreferLocalVariablesLiteralsAndAnnoMethodsWeigher.java @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; public class PreferLocalVariablesLiteralsAndAnnoMethodsWeigher extends CompletionWeigher { enum MyResult { + className, classLiteral, normal, superMethodParameters, @@ -54,6 +55,10 @@ public class PreferLocalVariablesLiteralsAndAnnoMethodsWeigher extends Completio if (object instanceof PsiAnnotationMethod && ((PsiAnnotationMethod)object).getContainingClass().isAnnotationType()) { return MyResult.annoMethod; } + + if (object instanceof PsiClass) { + return MyResult.className; + } } return MyResult.normal; diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/DispreferInnerClasses.java b/java/java-tests/testData/codeInsight/completion/normalSorting/DispreferInnerClasses.java new file mode 100644 index 000000000000..db2e1d04d69a --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normalSorting/DispreferInnerClasses.java @@ -0,0 +1,14 @@ +abstract class Base { + public static @interface IfNotParsed {} + + static class X {} +} + +class Derived extends Base { + +} +class B { + void foo(Derived b) { + b. + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.java index c2337c2f945d..e3b88bd2b5e5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.java @@ -8,6 +8,7 @@ import com.intellij.JavaTestUtil; import com.intellij.codeInsight.CodeInsightSettings; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.impl.LookupImpl; +import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import java.util.List; @@ -192,7 +193,12 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase { incUseCount(lookup, 1); assertEquals("zoo.Baaaaaaar", ((JavaPsiClassReferenceElement) lookup.getItems().get(0)).getQualifiedName()); - assertEquals("Baaaaaaar", ((JavaPsiClassReferenceElement) lookup.getItems().get(1)).getQualifiedName()); + assertEquals("Baaaaaaar", ((JavaPsiClassReferenceElement)lookup.getItems().get(1)).getQualifiedName()); + } + + public void testDispreferInnerClasses() { + checkPreferredItems(0); //no chosen items + assertFalse(getLookup().getItems().get(0).getObject() instanceof PsiClass); } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java index a4f49b76467a..42e363939a57 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java @@ -15,6 +15,7 @@ */ package com.intellij.codeInsight.lookup; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -71,7 +72,7 @@ public abstract class ComparingClassifier extends Classifier { @Override public void describeItems(LinkedHashMap map) { final TreeMap> treeMap = groupByWeights(new ArrayList(map.keySet())); - if (treeMap.size() > 1) { + if (treeMap.size() > 1 || ApplicationManager.getApplication().isUnitTestMode()) { for (Map.Entry> entry: treeMap.entrySet()){ for (T t : entry.getValue()) { final StringBuilder builder = map.get(t);