mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 20:39:40 +07:00
suggest unresolved reference names only once
This commit is contained in:
@@ -191,7 +191,7 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
|
||||
private static String[] getUnresolvedReferences(final PsiElement parentOfType, final boolean referenceOnMethod) {
|
||||
if (parentOfType != null && parentOfType.getTextLength() > MAX_SCOPE_SIZE_TO_SEARCH_UNRESOLVED) return ArrayUtil.EMPTY_STRING_ARRAY;
|
||||
final List<String> unresolvedRefs = new ArrayList<String>();
|
||||
final Set<String> unresolvedRefs = new LinkedHashSet<String>();
|
||||
|
||||
if (parentOfType != null) {
|
||||
parentOfType.accept(new JavaRecursiveElementWalkingVisitor() {
|
||||
@@ -200,10 +200,12 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
if (parent instanceof PsiReference) return;
|
||||
if (referenceOnMethod && parent instanceof PsiMethodCallExpression &&
|
||||
reference == ((PsiMethodCallExpression)parent).getMethodExpression()) {
|
||||
if (reference.resolve() == null && reference.getReferenceName() != null) unresolvedRefs.add(reference.getReferenceName());
|
||||
if (reference.resolve() == null) {
|
||||
ContainerUtil.addIfNotNull(unresolvedRefs, reference.getReferenceName());
|
||||
}
|
||||
}
|
||||
else if (!referenceOnMethod && !(parent instanceof PsiMethodCallExpression) &&reference.resolve() == null && reference.getReferenceName() != null) {
|
||||
unresolvedRefs.add(reference.getReferenceName());
|
||||
else if (!referenceOnMethod && !(parent instanceof PsiMethodCallExpression) &&reference.resolve() == null) {
|
||||
ContainerUtil.addIfNotNull(unresolvedRefs, reference.getReferenceName());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
class Foo {
|
||||
void foo() {
|
||||
Object <caret>
|
||||
System.out.println(psiClass);
|
||||
System.out.println(psiClass);
|
||||
System.out.println(psiClass);
|
||||
}
|
||||
}
|
||||
@@ -91,6 +91,11 @@ public class VariablesCompletionTest extends CompletionTestCase {
|
||||
doTest("TestSource8.java", "TestResult8.java");
|
||||
}
|
||||
|
||||
public void testUnresolvedReference() throws Exception {
|
||||
configureByFile(FILE_PREFIX + "locals/" + getTestName(false) + ".java");
|
||||
assertStringItems("o", "psiClass");
|
||||
}
|
||||
|
||||
public void testFieldNameCompletion1() throws Exception {
|
||||
configureByFileNoCompletion(FILE_PREFIX + "locals/" + "FieldNameCompletion1.java");
|
||||
CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(myProject);
|
||||
|
||||
Reference in New Issue
Block a user