From 3989c130412a5fca1db747d212702a6ebb93f007 Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Wed, 25 Apr 2012 17:37:20 +0400 Subject: [PATCH] static methods from superclass imported with subclass qualifier --- .../imports/GrImportStatementImpl.java | 6 ++-- .../types/GrCodeReferenceElementImpl.java | 6 ++-- .../lang/resolve/ResolveMethodTest.groovy | 34 +++++++++++++++++++ 3 files changed, 40 insertions(+), 6 deletions(-) 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 8c1d8df8493c..0add5d58871a 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 @@ -92,18 +92,18 @@ public class GrImportStatementImpl extends GroovyPsiElementImpl implements GrImp final String refName = ref.getReferenceName(); if (nameHint == null || name.equals(nameHint.getName(state))) { - final PsiField field = clazz.findFieldByName(refName, false); + final PsiField field = clazz.findFieldByName(refName, true); if (field != null && field.hasModifierProperty(PsiModifier.STATIC)) { if (!processor.execute(field, state)) return false; } - for (PsiMethod method : clazz.findMethodsByName(refName, false)) { + for (PsiMethod method : clazz.findMethodsByName(refName, true)) { if (method.hasModifierProperty(PsiModifier.STATIC)) { if (!processor.execute(method, state)) return false; } } - final PsiClass innerClass = clazz.findInnerClassByName(refName, false); + final PsiClass innerClass = clazz.findInnerClassByName(refName, true); if (innerClass != null && innerClass.hasModifierProperty(PsiModifier.STATIC) && !processor.execute(innerClass, state)) return false; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java index 00210328d47e..baea0b8eb846 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrCodeReferenceElementImpl.java @@ -474,17 +474,17 @@ public class GrCodeReferenceElementImpl extends GrReferenceElementImpl result = new ArrayList(); - final PsiField field = clazz.findFieldByName(refName, false); + final PsiField field = clazz.findFieldByName(refName, true); if (field != null && field.hasModifierProperty(PsiModifier.STATIC)) { result.add(new GroovyResolveResultImpl(field, helper.isAccessible(field, ref, null))); } - final PsiMethod[] methods = clazz.findMethodsByName(refName, false); + final PsiMethod[] methods = clazz.findMethodsByName(refName, true); for (PsiMethod method : methods) { result.add(new GroovyResolveResultImpl(method, helper.isAccessible(method, ref, null))); } - final PsiClass innerClass = clazz.findInnerClassByName(refName, false); + final PsiClass innerClass = clazz.findInnerClassByName(refName, true); if (innerClass != null && innerClass.hasModifierProperty(PsiModifier.STATIC)) { result.add(new GroovyResolveResultImpl(innerClass, helper.isAccessible(innerClass, ref, null))); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy index f8cd46a4ffbb..4229d595fd73 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy @@ -992,4 +992,38 @@ def foo(Integer a) { ''') assertNotNull(ref.resolve()) } + + public void testStaticImportFromSuperClass() { + def ref = configureByText('''\ +import static Derived.foo + +class Base { + static foo(){print 'foo'} +} + +class Derived extends Base { +} + +foo() +''') + + assertNotNull(ref.resolve()) + } + + public void testUsageOfStaticImportFromSuperClass() { + def ref = configureByText('''\ +import static Derived.foo + +class Base { + static foo(){print 'foo'} +} + +class Derived extends Base { +} + +foo() +''') + + assertNotNull(ref.resolve()) + } }