mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
add static import: don't suggest private inner by default (IDEA-158284)
This commit is contained in:
@@ -58,7 +58,7 @@ public class QualifyStaticConstantFix extends StaticImportConstantFix {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean showMembersFromDefaultPackage() {
|
||||
return true;
|
||||
protected boolean toAddStaticImports() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,8 +51,8 @@ public class QualifyStaticMethodCallFix extends StaticImportMethodFix {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean showMembersFromDefaultPackage() {
|
||||
return true;
|
||||
protected boolean toAddStaticImports() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void qualifyStatically(PsiMember toImport,
|
||||
|
||||
@@ -63,7 +63,7 @@ public class StaticImportConstantFix extends StaticImportMemberFix<PsiField> {
|
||||
element.getParent() instanceof PsiAnnotation) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
final StaticMembersProcessor<PsiField> processor = new StaticMembersProcessor<PsiField>(element, showMembersFromDefaultPackage(), searchMode) {
|
||||
final StaticMembersProcessor<PsiField> processor = new StaticMembersProcessor<PsiField>(element, toAddStaticImports(), searchMode) {
|
||||
@Override
|
||||
protected boolean isApplicable(PsiField field, PsiElement place) {
|
||||
PsiType fieldType = field.getType();
|
||||
@@ -106,7 +106,7 @@ public class StaticImportConstantFix extends StaticImportMemberFix<PsiField> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean showMembersFromDefaultPackage() {
|
||||
return false;
|
||||
protected boolean toAddStaticImports() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ public abstract class StaticImportMemberFix<T extends PsiMember> implements Inte
|
||||
|
||||
@NotNull protected abstract List<T> getMembersToImport(boolean applicableOnly, @NotNull StaticMembersProcessor.SearchMode mode);
|
||||
|
||||
protected abstract boolean showMembersFromDefaultPackage();
|
||||
protected abstract boolean toAddStaticImports();
|
||||
|
||||
public static boolean isExcluded(PsiMember method) {
|
||||
String name = PsiUtil.getMemberQualifiedName(method);
|
||||
|
||||
@@ -60,14 +60,14 @@ public class StaticImportMethodFix extends StaticImportMemberFix<PsiMethod> {
|
||||
PsiReferenceExpression reference = element == null ? null : element.getMethodExpression();
|
||||
String name = reference == null ? null : reference.getReferenceName();
|
||||
if (name == null) return Collections.emptyList();
|
||||
final StaticMembersProcessor<PsiMethod> processor = new MyStaticMethodProcessor(element, showMembersFromDefaultPackage(), searchMode);
|
||||
final StaticMembersProcessor<PsiMethod> processor = new MyStaticMethodProcessor(element, toAddStaticImports(), searchMode);
|
||||
cache.processMethodsWithName(name, element.getResolveScope(), processor);
|
||||
return processor.getMembersToImport(applicableOnly);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean showMembersFromDefaultPackage() {
|
||||
return false;
|
||||
protected boolean toAddStaticImports() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -32,6 +32,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.util.*;
|
||||
|
||||
abstract class StaticMembersProcessor<T extends PsiMember & PsiDocCommentOwner> implements Processor<T> {
|
||||
|
||||
public enum SearchMode {
|
||||
MAX_2_MEMBERS(2),
|
||||
MAX_100_MEMBERS(100);
|
||||
@@ -48,15 +49,17 @@ abstract class StaticMembersProcessor<T extends PsiMember & PsiDocCommentOwner>
|
||||
|
||||
@NotNull private final PsiElement myPlace;
|
||||
@NotNull private final SearchMode mySearchMode;
|
||||
private final boolean myShowMembersFromDefaultPackage;
|
||||
private final boolean myInDefaultPackage;
|
||||
private final boolean myAddStaticImport;
|
||||
private ExpectedTypeInfo[] myExpectedTypes;
|
||||
|
||||
protected StaticMembersProcessor(@NotNull PsiElement place,
|
||||
boolean showMembersFromDefaultPackage,
|
||||
boolean addStaticImport,
|
||||
@NotNull SearchMode searchMode) {
|
||||
myPlace = place;
|
||||
mySearchMode = searchMode;
|
||||
myShowMembersFromDefaultPackage = showMembersFromDefaultPackage && PsiUtil.isFromDefaultPackage(place);
|
||||
myInDefaultPackage = PsiUtil.isFromDefaultPackage(place);
|
||||
myAddStaticImport = addStaticImport;
|
||||
}
|
||||
|
||||
protected abstract boolean isApplicable(T member, PsiElement place);
|
||||
@@ -117,7 +120,12 @@ abstract class StaticMembersProcessor<T extends PsiMember & PsiDocCommentOwner>
|
||||
}
|
||||
}
|
||||
|
||||
if (myShowMembersFromDefaultPackage || !PsiUtil.isFromDefaultPackage(member)) {
|
||||
if (myAddStaticImport) {
|
||||
if (!PsiUtil.isFromDefaultPackage(member)) {
|
||||
mySuggestions.putValue(containingClass, member);
|
||||
}
|
||||
}
|
||||
else if (myInDefaultPackage || !PsiUtil.isFromDefaultPackage(member)) {
|
||||
mySuggestions.putValue(containingClass, member);
|
||||
}
|
||||
return processCondition();
|
||||
@@ -154,6 +162,11 @@ abstract class StaticMembersProcessor<T extends PsiMember & PsiDocCommentOwner>
|
||||
if (!PsiUtil.isAccessible(myPlace.getProject(), member, myPlace, containingClass)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (myAddStaticImport && !PsiUtil.isAccessible(myPlace.getProject(), member, myPlace.getContainingFile(), containingClass)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isApplicable(member, myPlace)) {
|
||||
applicableList.add(member);
|
||||
myPossibleClasses.put(qualifiedName, true);
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
// "Import static constant 'foo.B.TYPE_NODE'" "true"
|
||||
package foo;
|
||||
|
||||
import static foo.B.TYPE_NODE;
|
||||
|
||||
class Static {
|
||||
private enum NodeType {
|
||||
TYPE_NODE
|
||||
}
|
||||
|
||||
boolean is(Object object) {
|
||||
return object == TYPE_NODE;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
class B {
|
||||
public static Object TYPE_NODE = null;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// "Import static constant 'foo.B.TYPE_NODE'" "true"
|
||||
package foo;
|
||||
|
||||
class Static {
|
||||
private enum NodeType {
|
||||
TYPE_NODE
|
||||
}
|
||||
|
||||
boolean is(Object object) {
|
||||
return object == TYPE<caret>_NODE;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
class B {
|
||||
public static Object TYPE_NODE = null;
|
||||
}
|
||||
Reference in New Issue
Block a user