From 2ed7a01fa2e26fdfb308e8837a20d8dd86026bfc Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 16 Mar 2012 14:37:40 +0400 Subject: [PATCH] IDEA-82838 Static imports incorrectly added multiple times for methods already imported --- .../psi/impl/toplevel/imports/GrImportStatementImpl.java | 6 +++--- .../plugins/groovy/completion/GroovyCompletionTest.groovy | 2 ++ .../groovy/completion/UseDescendantStaticImport.groovy | 8 ++++++++ .../completion/UseDescendantStaticImport_after.groovy | 8 ++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport.groovy create mode 100644 plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport_after.groovy diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/toplevel/imports/GrImportStatementImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/toplevel/imports/GrImportStatementImpl.java index ba32cfb070f1..422ba52791f2 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/toplevel/imports/GrImportStatementImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/toplevel/imports/GrImportStatementImpl.java @@ -168,15 +168,15 @@ public class GrImportStatementImpl extends GroovyPsiElementImpl implements GrImp } private static boolean processAllMembers(PsiScopeProcessor processor, PsiClass clazz, ResolveState state) { - for (PsiField field : clazz.getFields()) { + for (PsiField field : clazz.getAllFields()) { if (field.hasModifierProperty(PsiModifier.STATIC) && !ResolveUtil.processElement(processor, field, state)) return false; } - for (PsiMethod method : clazz.getMethods()) { + for (PsiMethod method : clazz.getAllMethods()) { if (method.hasModifierProperty(PsiModifier.STATIC) && !ResolveUtil.processElement(processor, method, state)) return false; } - for (PsiClass inner : clazz.getInnerClasses()) { + for (PsiClass inner : clazz.getAllInnerClasses()) { if (inner.hasModifierProperty(PsiModifier.STATIC) && !ResolveUtil.processElement(processor, inner, state)) return false; } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyCompletionTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyCompletionTest.groovy index 475f214ad1d4..4b7a003af696 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyCompletionTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyCompletionTest.groovy @@ -1131,6 +1131,8 @@ public class KeyVO { Util.foo()''' } + public void testUseDescendantStaticImport() { doBasicTest() } + public void testPreferInterfacesInImplements() { myFixture.addClass('interface FooIntf {}') myFixture.addClass('class FooClass {}') diff --git a/plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport.groovy b/plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport.groovy new file mode 100644 index 000000000000..d420df36bc1c --- /dev/null +++ b/plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport.groovy @@ -0,0 +1,8 @@ +import static Sub.* + +class Super { + static void xxfoo() {} +} +class Sub extends Super {} + +xxf diff --git a/plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport_after.groovy b/plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport_after.groovy new file mode 100644 index 000000000000..af4d4d3b8a74 --- /dev/null +++ b/plugins/groovy/testdata/groovy/completion/UseDescendantStaticImport_after.groovy @@ -0,0 +1,8 @@ +import static Sub.* + +class Super { + static void xxfoo() {} +} +class Sub extends Super {} + +xxfoo()