From c5dc3de86759713f30f2e599ce001c19a49dc18c Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Mon, 18 Oct 2010 20:35:45 +0400 Subject: [PATCH] in java parameter list display primitive types (IDEA-57517) and don't suggest method names(IDEA-59371) --- .../completion/JavaCompletionContributor.java | 13 ++++++------- .../codeInsight/completion/JavaCompletionData.java | 3 ++- .../completion/NormalCompletionTest.groovy | 10 ++++++++++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 6f86de7d75a9..f3da5f0c4388 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -97,14 +97,11 @@ public class JavaCompletionContributor extends CompletionContributor { return new AndFilter(ElementClassFilter.CLASS, new NotFilter(new AssignableFromContextFilter())); } - if (JavaCompletionData.DECLARATION_START.isAcceptable(position, position)) { + if (JavaCompletionData.DECLARATION_START.isAcceptable(position, position) || + JavaCompletionData.INSIDE_PARAMETER_LIST.accepts(position)) { return new OrFilter(ElementClassFilter.CLASS, ElementClassFilter.PACKAGE_FILTER); } - if (JavaCompletionData.INSIDE_PARAMETER_LIST.accepts(position)) { - return ElementClassFilter.CLASS; - } - // Completion for classes in method throws section if (psiElement().afterLeaf(PsiKeyword.THROWS, ",").inside(psiElement(PsiReferenceList.class).withParent(PsiMethod.class)).accepts(position)) { return new OrFilter(new ThisOrAnyInnerFilter(new AssignableFromFilter("java.lang.Throwable")), ElementClassFilter.PACKAGE_FILTER); @@ -141,8 +138,10 @@ public class JavaCompletionContributor extends CompletionContributor { } if (psiElement().inside(PsiAnnotationParameterList.class).accepts(position)) { - return new OrFilter(new ClassFilter(PsiAnnotationMethod.class), ElementClassFilter.CLASS, ElementClassFilter.PACKAGE_FILTER, new AndFilter(new ClassFilter(PsiField.class), - new ModifierFilter(PsiModifier.STATIC, PsiModifier.FINAL))); + return new OrFilter(new ClassFilter(PsiAnnotationMethod.class), + ElementClassFilter.CLASS, + ElementClassFilter.PACKAGE_FILTER, + new AndFilter(new ClassFilter(PsiField.class), new ModifierFilter(PsiModifier.STATIC, PsiModifier.FINAL))); } if (psiElement().afterLeaf("=").inside(PsiVariable.class).accepts(position)) { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java index 3cf1832683c9..20997e77ca3e 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -36,6 +36,7 @@ import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NonNls; import static com.intellij.patterns.PsiJavaPatterns.*; +import static com.intellij.patterns.PsiJavaPatterns.psiElement; import static com.intellij.patterns.StandardPatterns.not; public class JavaCompletionData extends JavaAwareCompletionData{ @@ -62,7 +63,7 @@ public class JavaCompletionData extends JavaAwareCompletionData{ public static final PsiJavaElementPattern.Capture INSIDE_PARAMETER_LIST = PsiJavaPatterns.psiElement().withParent( psiElement(PsiJavaCodeReferenceElement.class).withParent( - psiElement(PsiTypeElement.class).withParent(PsiParameterList.class))); + psiElement(PsiTypeElement.class).withParent(or(psiElement(PsiParameter.class), psiElement(PsiParameterList.class))))); private static final AndFilter START_OF_CODE_FRAGMENT = new AndFilter( new ScopeFilter(new AndFilter( 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 de005bbdba59..45bf046f6433 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -753,4 +753,14 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { """ } + public void testNoMethodsInParameterType() { + myFixture.configureByText("a.java", """ + class Foo { + static void foo(fint a) {} + } + """) + myFixture.completeBasic() + assertOrderedEquals myFixture.lookupElementStrings, "final", "float" + } + }