java completion: don't qualify local class fields with "this", cleanup (IDEA-CR-63622)

GitOrigin-RevId: 5dca120cc7b4f82829c9da0be0e409f21993c477
This commit is contained in:
Peter Gromov
2020-06-15 11:13:44 +02:00
committed by intellij-monorepo-bot
parent b66862f248
commit fcbe2d4916
5 changed files with 33 additions and 5 deletions

View File

@@ -19,13 +19,11 @@ import java.util.List;
*/
public class JavaStaticMemberProcessor extends StaticMemberProcessor {
private final PsiElement myOriginalPosition;
private final PsiElement myPosition;
public JavaStaticMemberProcessor(CompletionParameters parameters) {
super(parameters.getPosition());
myOriginalPosition = parameters.getOriginalPosition();
myPosition = parameters.getPosition();
final PsiFile file = myPosition.getContainingFile();
final PsiFile file = parameters.getPosition().getContainingFile();
if (file instanceof PsiJavaFile) {
final PsiImportList importList = ((PsiJavaFile)file).getImportList();
if (importList != null) {
@@ -62,7 +60,7 @@ public class JavaStaticMemberProcessor extends StaticMemberProcessor {
super.handleInsert(context);
}
}.qualifyIfNeeded(ObjectUtils.tryCast(myPosition.getParent(), PsiJavaCodeReferenceElement.class)));
}.qualifyIfNeeded(ObjectUtils.tryCast(getPosition().getParent(), PsiJavaCodeReferenceElement.class)));
}
private PsiReference createReferenceToMemberName(@NotNull PsiMember member) {

View File

@@ -284,7 +284,8 @@ public class VariableLookupItem extends LookupItem<PsiVariable> implements Typed
if (context instanceof PsiReferenceExpression && !((PsiReferenceExpression)context).isQualified()) {
PsiVariable target = JavaPsiFacade.getInstance(context.getElement().getProject()).getResolveHelper()
.resolveReferencedVariable(field.getName(), (PsiElement)context);
return !field.getManager().areElementsEquivalent(target, CompletionUtil.getOriginalOrSelf(field));
return !field.getManager().areElementsEquivalent(target, field) &&
!field.getManager().areElementsEquivalent(target, CompletionUtil.getOriginalOrSelf(field));
}
return false;
}

View File

@@ -0,0 +1,11 @@
class C {
static void bar() {
class Visitor {
int field;
void foo() {
fie<caret>x
}
}
}
}

View File

@@ -0,0 +1,11 @@
class C {
static void bar() {
class Visitor {
int field;
void foo() {
field<caret>
}
}
}
}

View File

@@ -374,6 +374,13 @@ class NormalCompletionTest extends NormalCompletionTestCase {
void testFieldType() { doTest() }
void testFieldOfLocalClass() {
configure()
assert LookupElementPresentation.renderElement(myItems[0]).itemText == 'field'
type('\t')
checkResult()
}
void testPackageInAnnoParam() throws Throwable {
doTest()
}