mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
don't suggest expression-keyword-named members in java completion (EA-90531, IDEA-CR-20701)
This commit is contained in:
+7
-8
@@ -21,7 +21,7 @@ import com.intellij.codeInsight.lookup.VariableLookupItem;
|
||||
import com.intellij.featureStatistics.FeatureUsageTracker;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -53,6 +53,10 @@ public class JavaStaticMemberProcessor extends StaticMemberProcessor {
|
||||
protected LookupElement createLookupElement(@NotNull PsiMember member, @NotNull final PsiClass containingClass, boolean shouldImport) {
|
||||
shouldImport |= myOriginalPosition != null && PsiTreeUtil.isAncestor(containingClass, myOriginalPosition, false);
|
||||
|
||||
if (!PsiNameHelper.getInstance(member.getProject()).isIdentifier(member.getName(), PsiUtil.getLanguageLevel(getPosition()))) {
|
||||
return null;
|
||||
}
|
||||
|
||||
PsiReference ref = createReferenceToMemberName(member);
|
||||
if (ref == null) return null;
|
||||
|
||||
@@ -74,13 +78,8 @@ public class JavaStaticMemberProcessor extends StaticMemberProcessor {
|
||||
}
|
||||
|
||||
private PsiReference createReferenceToMemberName(@NotNull PsiMember member) {
|
||||
try {
|
||||
String exprText = member.getName() + (member instanceof PsiMethod ? "()" : "");
|
||||
return JavaPsiFacade.getElementFactory(member.getProject()).createExpressionFromText(exprText, myOriginalPosition).findReferenceAt(0);
|
||||
}
|
||||
catch (IncorrectOperationException e) {
|
||||
return null;
|
||||
}
|
||||
String exprText = member.getName() + (member instanceof PsiMethod ? "()" : "");
|
||||
return JavaPsiFacade.getElementFactory(member.getProject()).createExpressionFromText(exprText, myOriginalPosition).findReferenceAt(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -132,6 +132,10 @@ public abstract class StaticMemberProcessor {
|
||||
return member.hasModifierProperty(PsiModifier.STATIC) && isAccessible(member) && !StaticImportMemberFix.isExcluded(member);
|
||||
}
|
||||
|
||||
public PsiElement getPosition() {
|
||||
return myPosition;
|
||||
}
|
||||
|
||||
protected boolean isAccessible(PsiMember member) {
|
||||
return myResolveHelper.isAccessible(member, myPosition, null);
|
||||
}
|
||||
|
||||
+13
-1
@@ -15,7 +15,8 @@
|
||||
*/
|
||||
package org.jetbrains.plugins.groovy.completion
|
||||
|
||||
import com.intellij.codeInsight.completion.CompletionType;
|
||||
import com.intellij.codeInsight.completion.CompletionType
|
||||
import com.intellij.psi.PsiMethod;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -34,4 +35,15 @@ class Foo {
|
||||
assert !(myFixture.lookupElementStrings.contains('const'))
|
||||
assert !(myFixture.lookupElementStrings.contains('continue'))
|
||||
}
|
||||
|
||||
void "test using java expression keywords in member names"() {
|
||||
myFixture.addFileToProject 'a.groovy', '''
|
||||
class Foo {
|
||||
static void "this"() {}
|
||||
}
|
||||
'''
|
||||
myFixture.configureByText 'a.java', 'class Bar {{ this<caret> }}'
|
||||
myFixture.complete(CompletionType.BASIC, 2)
|
||||
assert !myFixture.lookupElements.find { it.lookupString == 'this' && it.object instanceof PsiMethod }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user