add static import: don't suggest private inner by default (IDEA-158284)

This commit is contained in:
Anna.Kozlova
2018-01-09 16:58:48 +01:00
parent 0c17c636d3
commit ee559693e0
8 changed files with 64 additions and 15 deletions

View File

@@ -58,7 +58,7 @@ public class QualifyStaticConstantFix extends StaticImportConstantFix {
}
@Override
protected boolean showMembersFromDefaultPackage() {
return true;
protected boolean toAddStaticImports() {
return false;
}
}

View File

@@ -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,

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;
}