diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/ReallyAlphaSorting.java b/java/java-tests/testData/codeInsight/completion/normalSorting/ReallyAlphaSorting.java new file mode 100644 index 000000000000..4fcc11b6501e --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normalSorting/ReallyAlphaSorting.java @@ -0,0 +1,8 @@ +class Foo { + void zoo() {} + + { + new Foo(). + } + +} \ 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.groovy similarity index 94% rename from java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.java rename to java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy index 739d2460116a..de77849ddd9b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -4,17 +4,15 @@ package com.intellij.codeInsight.completion; -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.ide.ui.UISettings; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiMethod; -import java.util.List; +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.ide.ui.UISettings +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiMethod -@SuppressWarnings({"ALL"}) public class NormalCompletionOrderingTest extends CompletionSortingTestCase { private static final String BASE_PATH = "/codeInsight/completion/normalSorting"; @@ -273,6 +271,18 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase { } } + public void testReallyAlphaSorting() { + UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = true; + + try { + invokeCompletion(getTestName(false) + ".java"); + assert myFixture.lookupElementStrings.sort() == myFixture.lookupElementStrings + } + finally { + UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = false; + } + } + public void testSortSameNamedVariantsByProximity() { myFixture.addClass("public class Bar {}"); for (int i = 0; i < 10; i++) { @@ -280,7 +290,6 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase { myFixture.addClass("public class Bar" + i + "Colleague {}"); } myFixture.addClass("package bar; public class Bar {}"); - final String path = getTestName(false) + ".java"; myFixture.configureByFile(getTestName(false) + ".java"); myFixture.complete(CompletionType.BASIC, 2); assertPreferredItems(0, "Bar", "Bar"); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java index a81472cd039a..0c0800036a6a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java @@ -435,7 +435,14 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable } if (isAlphaSorted()) { - model.addAll(items); + final ArrayList elements = new ArrayList(items); + Collections.sort(elements, new Comparator() { + @Override + public int compare(LookupElement o1, LookupElement o2) { + return o1.getLookupString().compareToIgnoreCase(o2.getLookupString()); + } + }); + model.addAll(elements); } else if (limitRelevance()) { model.addAll(addRemainingItemsLexicographically(model, items)); } else {