add single import: ensure current ref to import is taken into account when check the limit (IDEA-127949)

This commit is contained in:
Anna.Kozlova
2018-07-27 18:23:01 +02:00
parent 39069ee188
commit 84e2da2eeb
4 changed files with 26 additions and 1 deletions

View File

@@ -107,7 +107,7 @@ public class PsiReferenceExpressionImpl extends ExpressionPsiElement implements
assert importList != null;
final String qualifiedName = qualifierClass.getQualifiedName();
final List<PsiJavaCodeReferenceElement> refs = getImportsFromClass(importList, qualifiedName);
if (refs.size() < JavaCodeStyleSettingsFacade.getInstance(qualifierClass.getProject()).getNamesCountToUseImportOnDemand() ||
if (refs.size() + 1 < JavaCodeStyleSettingsFacade.getInstance(qualifierClass.getProject()).getNamesCountToUseImportOnDemand() ||
JavaCodeStyleManager.getInstance(qualifierClass.getProject()).hasConflictingOnDemandImport((PsiJavaFile)importList.getContainingFile(), qualifierClass, staticName)) {
importList.add(JavaPsiFacade.getInstance(qualifierClass.getProject()).getElementFactory().createImportStaticStatement(qualifierClass, staticName));
} else {

View File

@@ -0,0 +1,11 @@
import static java.lang.Math.abs;
import static java.lang.Math.sin;
class ImportTest {
{
abs(-0.5);
sin(0.5);
Math.ma<caret>x(1, 2);
Math.min(1, 2);
}
}

View File

@@ -0,0 +1,10 @@
import static java.lang.Math.*;
class ImportTest {
{
abs(-0.5);
sin(0.5);
ma<caret>x(1, 2);
Math.min(1, 2);
}
}

View File

@@ -61,6 +61,10 @@ public class AddSingleStaticImportActionTest extends JavaCodeInsightFixtureTestC
doTest("Add import for 'foo.Class1.Inner1'");
}
public void testSingleStaticReferencesUntilCollapsedToDiamond() {
doTest("Add static import for 'java.lang.Math.max'");
}
public void testDisabledInsideParameterizedReference() {
myFixture.addClass("package foo; " +
"public class Class1 {" +