mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
import: ensure imported classes are not lost after on demand folding (IDEA-132190)
This commit is contained in:
@@ -362,7 +362,11 @@ public class ImportHelper{
|
||||
* Adds import if it is needed.
|
||||
* @return false when the FQ-name have to be used in code (e.g. when conflicting imports already exist)
|
||||
*/
|
||||
public boolean addImport(@NotNull PsiJavaFile file, @NotNull PsiClass refClass){
|
||||
public boolean addImport(@NotNull PsiJavaFile file, @NotNull PsiClass refClass) {
|
||||
return addImport(file, refClass, false);
|
||||
}
|
||||
|
||||
private boolean addImport(@NotNull PsiJavaFile file, @NotNull PsiClass refClass, boolean forceReimport){
|
||||
final JavaPsiFacade facade = JavaPsiFacade.getInstance(file.getProject());
|
||||
PsiElementFactory factory = facade.getElementFactory();
|
||||
PsiResolveHelper helper = facade.getResolveHelper();
|
||||
@@ -377,7 +381,7 @@ public class ImportHelper{
|
||||
String shortName = PsiNameHelper.getShortClassName(className);
|
||||
|
||||
PsiClass conflictSingleRef = findSingleImportByShortName(file, shortName);
|
||||
if (conflictSingleRef != null){
|
||||
if (conflictSingleRef != null && !forceReimport){
|
||||
return className.equals(conflictSingleRef.getQualifiedName());
|
||||
}
|
||||
|
||||
@@ -449,7 +453,7 @@ public class ImportHelper{
|
||||
|
||||
for (PsiClass aClass : classesToReimport) {
|
||||
if (aClass != null) {
|
||||
addImport(file, aClass);
|
||||
addImport(file, aClass, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,6 +115,58 @@ public class Foo extends goo.Super {
|
||||
'''
|
||||
}
|
||||
|
||||
public void testImportFoldingWithConflicts() {
|
||||
|
||||
myFixture.addClass 'package p1; public class B {}'
|
||||
myFixture.addClass 'package p1; public class A1 {}'
|
||||
myFixture.addClass 'package p1; public class A2 {}'
|
||||
myFixture.addClass 'package p1; public class A3 {}'
|
||||
myFixture.addClass 'package p1; public class A4 {}'
|
||||
myFixture.addClass 'package p1; public class A5 {}'
|
||||
|
||||
myFixture.addClass 'package p2; public class B {}'
|
||||
myFixture.configureByText 'C.java', '''package p2;
|
||||
|
||||
import p1.A1;
|
||||
import p1.A2;
|
||||
import p1.A3;
|
||||
import p1.A4;
|
||||
import p1.B;
|
||||
|
||||
class C {
|
||||
|
||||
A1 a1;
|
||||
A2 a2;
|
||||
A3 a3;
|
||||
A4 a4;
|
||||
A<caret>5 a5;
|
||||
|
||||
B b;
|
||||
}
|
||||
|
||||
'''
|
||||
importClass()
|
||||
|
||||
myFixture.checkResult '''package p2;
|
||||
|
||||
import p1.*;
|
||||
import p1.B;
|
||||
|
||||
class C {
|
||||
|
||||
A1 a1;
|
||||
A2 a2;
|
||||
A3 a3;
|
||||
A4 a4;
|
||||
A5 a5;
|
||||
|
||||
B b;
|
||||
}
|
||||
|
||||
'''
|
||||
}
|
||||
|
||||
|
||||
public void testAnnotatedImport() {
|
||||
myFixture.configureByText 'a.java', '''
|
||||
import java.lang.annotation.*;
|
||||
|
||||
Reference in New Issue
Block a user