From d2bd9ea79372af6b6a9eb3afbeb51f7399fab988 Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Mon, 18 Oct 2010 21:36:30 +0400 Subject: [PATCH] IDEA-59350 Double completion variance for static imported fields --- .../completion/JavaCompletionUtil.java | 7 ++++++- .../completion/NormalCompletionTest.groovy | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 8f70407b3ae0..6668b1b7444b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -876,9 +876,14 @@ public class JavaCompletionUtil { boolean mayHighlight = qualifierType != null && (castedQualifierType == null || !qualifierType.isAssignableFrom(castedQualifierType)); + final Set mentioned = new THashSet(); for (CompletionElement completionElement : plainResults) { LookupElement item = createLookupElement(completionElement, qualifierType); if (item != null) { + final Object o = item.getObject(); + if (o instanceof PsiMember) { + mentioned.add((PsiMember)o); + } set.add(mayHighlight ? highlightIfNeeded(qualifierType, item) : item); } } @@ -888,7 +893,7 @@ public class JavaCompletionUtil { memberProcessor.processMembersOfRegisteredClasses(matcher, new PairConsumer() { @Override public void consume(PsiMember member, PsiClass psiClass) { - if (processor.satisfies(member, ResolveState.initial())) { + if (!mentioned.contains(member) && processor.satisfies(member, ResolveState.initial())) { set.add(memberProcessor.createLookupElement(member, psiClass, true)); } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 45bf046f6433..fabaff6b607a 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -763,4 +763,19 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { assertOrderedEquals myFixture.lookupElementStrings, "final", "float" } + public void testStaticallyImportedFieldsTwice() { + myFixture.addClass(""" + class Foo { + public static final int aZOO; + } + """) + myFixture.configureByText("a.java", """ + import static Foo.* + class Bar {{ + aZa + }} + """) + assertOneElement myFixture.completeBasic() + } + }