mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
unnecessary qualified names removed quick fix: ensure that during batch apply conflicting imports won't be inserted (IDEA-128765)
This commit is contained in:
+4
-1
@@ -67,6 +67,9 @@ public class ImportUtils {
|
||||
!hasDefaultImportConflict(qualifiedName, javaFile) && !hasOnDemandImportConflict(qualifiedName, javaFile)) {
|
||||
return;
|
||||
}
|
||||
if (hasExactImportConflict(qualifiedName, javaFile)) {
|
||||
return;
|
||||
}
|
||||
final Project project = importList.getProject();
|
||||
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project);
|
||||
final PsiElementFactory elementFactory = psiFacade.getElementFactory();
|
||||
@@ -156,7 +159,7 @@ public class ImportUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean hasExactImportConflict(String fqName, PsiJavaFile file) {
|
||||
public static boolean hasExactImportConflict(String fqName, PsiJavaFile file) {
|
||||
final PsiImportList imports = file.getImportList();
|
||||
if (imports == null) {
|
||||
return false;
|
||||
|
||||
+18
-15
@@ -99,7 +99,10 @@ public class UnnecessarilyQualifiedInnerClassAccessInspection extends BaseInspec
|
||||
}
|
||||
final PsiClass aClass = (PsiClass)target;
|
||||
ImportUtils.addImportIfNeeded(aClass, element);
|
||||
element.delete();
|
||||
final String shortName = aClass.getName();
|
||||
if (isReferenceToTarget(shortName, aClass, parent)) {
|
||||
element.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,6 +111,20 @@ public class UnnecessarilyQualifiedInnerClassAccessInspection extends BaseInspec
|
||||
return new UnnecessarilyQualifiedInnerClassAccessVisitor();
|
||||
}
|
||||
|
||||
private static boolean isReferenceToTarget(String referenceText, @NotNull PsiClass target, PsiElement context) {
|
||||
final PsiJavaCodeReferenceElement reference =
|
||||
JavaPsiFacade.getElementFactory(target.getProject()).createReferenceFromText(referenceText, context);
|
||||
final JavaResolveResult[] results = reference.multiResolve(false);
|
||||
if (results.length == 0) {
|
||||
return true;
|
||||
}
|
||||
if (results.length > 1) {
|
||||
return false;
|
||||
}
|
||||
final JavaResolveResult result = results[0];
|
||||
return result.isAccessible() && target.equals(result.getElement());
|
||||
}
|
||||
|
||||
private class UnnecessarilyQualifiedInnerClassAccessVisitor
|
||||
extends BaseInspectionVisitor {
|
||||
|
||||
@@ -175,20 +192,6 @@ public class UnnecessarilyQualifiedInnerClassAccessInspection extends BaseInspec
|
||||
visitReferenceElement(expression);
|
||||
}
|
||||
|
||||
private boolean isReferenceToTarget(String referenceText, @NotNull PsiClass target, PsiElement context) {
|
||||
final PsiJavaCodeReferenceElement reference =
|
||||
JavaPsiFacade.getElementFactory(target.getProject()).createReferenceFromText(referenceText, context);
|
||||
final JavaResolveResult[] results = reference.multiResolve(false);
|
||||
if (results.length == 0) {
|
||||
return true;
|
||||
}
|
||||
if (results.length > 1) {
|
||||
return false;
|
||||
}
|
||||
final JavaResolveResult result = results[0];
|
||||
return result.isAccessible() && target.equals(result.getElement());
|
||||
}
|
||||
|
||||
private boolean isInImportOrPackage(PsiElement element) {
|
||||
while (element instanceof PsiJavaCodeReferenceElement) {
|
||||
element = element.getParent();
|
||||
|
||||
Reference in New Issue
Block a user