in java parameter list display primitive types (IDEA-57517) and don't suggest method names(IDEA-59371)

This commit is contained in:
peter.gromov
2010-10-18 21:16:35 +04:00
parent 127a5b0b8e
commit c5dc3de867
3 changed files with 18 additions and 8 deletions
@@ -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)) {
@@ -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<PsiElement> 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(
@@ -753,4 +753,14 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase {
"""
}
public void testNoMethodsInParameterType() {
myFixture.configureByText("a.java", """
class Foo {
static void foo(f<caret>int a) {}
}
""")
myFixture.completeBasic()
assertOrderedEquals myFixture.lookupElementStrings, "final", "float"
}
}