From f61c07fd06bf3ef62962c1426e757aab45c1bd25 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Wed, 12 Sep 2012 11:33:20 +0400 Subject: [PATCH] IDEA-90896 complete properties from base class which have fields --- .../CompleteReferenceExpression.java | 20 ++++++++-------- .../completion/GroovyCompletionTest.groovy | 23 +++++++++++++++++++ 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/CompleteReferenceExpression.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/CompleteReferenceExpression.java index 28b0936c08cf..cee0e1250167 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/CompleteReferenceExpression.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/CompleteReferenceExpression.java @@ -341,14 +341,16 @@ public class CompleteReferenceExpression { } private static Set addAllRestrictedProperties(GrReferenceExpression place) { + if (place.getQualifier() != null) { + return Collections.emptySet(); + } + Set propertyNames = new HashSet(); - if (place.getQualifier()==null) { - for (GrTypeDefinition containingClass = PsiTreeUtil.getParentOfType(place, GrTypeDefinition.class); - containingClass != null; - containingClass = PsiTreeUtil.getParentOfType(containingClass, GrTypeDefinition.class)) { - for (PsiField field : containingClass.getAllFields()) { - propertyNames.add(field.getName()); - } + for (GrTypeDefinition containingClass = PsiTreeUtil.getParentOfType(place, GrTypeDefinition.class); + containingClass != null; + containingClass = PsiTreeUtil.getParentOfType(containingClass, GrTypeDefinition.class)) { + for (PsiField field : containingClass.getFields()) { + propertyNames.add(field.getName()); } } return propertyNames; @@ -360,8 +362,8 @@ public class CompleteReferenceExpression { } private static class CompleteReferenceProcessor extends ResolverProcessor implements Consumer { - private static final Logger LOG = Logger.getInstance( - "#org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.CompleteReferenceExpression.CompleteReferenceProcessor"); + private static final Logger LOG = Logger.getInstance(CompleteReferenceProcessor.class); + private final Consumer myConsumer; private final PrefixMatcher myMatcher; private final CompletionParameters myParameters; 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 4aecd0291632..5be898fb1cbd 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyCompletionTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyCompletionTest.groovy @@ -1442,6 +1442,29 @@ class Inh implements Base{} def foo(Base b){} foo(new Inh()) +''') + } + + void testPropertiesOfBaseClass() { + myFixture.addFileToProject('Base.groovy', '''\ +class Base { + protected String foooo = 'field' + + public String getFoooo() {'getter'} +} +''') + doBasicTest('''\ +class Inheritor extends Base { + def test() { + assert fooo == 'getter' + } +} +''', '''\ +class Inheritor extends Base { + def test() { + assert foooo == 'getter' + } +} ''') } } \ No newline at end of file