mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add static import: take into account packages which should be always imported on demand (IDEA-127947)
This commit is contained in:
@@ -32,6 +32,11 @@ public class JavaCodeStyleSettingsFacadeImpl extends JavaCodeStyleSettingsFacade
|
||||
return myManager.getCurrentSettings().getCustomSettings(JavaCodeStyleSettings.class).NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isToImportInDemand(String qualifiedName) {
|
||||
return myManager.getCurrentSettings().getCustomSettings(JavaCodeStyleSettings.class).PACKAGES_TO_USE_IMPORT_ON_DEMAND.contains(qualifiedName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useFQClassNames() {
|
||||
return myManager.getCurrentSettings().getCustomSettings(JavaCodeStyleSettings.class).USE_FQ_CLASS_NAMES;
|
||||
|
||||
@@ -24,6 +24,8 @@ import com.intellij.openapi.project.Project;
|
||||
public abstract class JavaCodeStyleSettingsFacade {
|
||||
public abstract int getNamesCountToUseImportOnDemand();
|
||||
|
||||
public abstract boolean isToImportInDemand(String qualifiedName);
|
||||
|
||||
public abstract boolean useFQClassNames();
|
||||
|
||||
public abstract boolean isJavaDocLeadingAsterisksEnabled();
|
||||
|
||||
@@ -26,6 +26,11 @@ public class CoreJavaCodeStyleSettingsFacade extends JavaCodeStyleSettingsFacade
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isToImportInDemand(String qualifiedName) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useFQClassNames() {
|
||||
return false;
|
||||
|
||||
+2
-1
@@ -107,7 +107,8 @@ public class PsiReferenceExpressionImpl extends ExpressionPsiElement implements
|
||||
assert importList != null;
|
||||
final String qualifiedName = qualifierClass.getQualifiedName();
|
||||
final List<PsiJavaCodeReferenceElement> refs = getImportsFromClass(importList, qualifiedName);
|
||||
if (refs.size() + 1 < JavaCodeStyleSettingsFacade.getInstance(qualifierClass.getProject()).getNamesCountToUseImportOnDemand() ||
|
||||
JavaCodeStyleSettingsFacade javaCodeStyleSettingsFacade = JavaCodeStyleSettingsFacade.getInstance(qualifierClass.getProject());
|
||||
if (!javaCodeStyleSettingsFacade.isToImportInDemand(qualifiedName) && refs.size() + 1 < javaCodeStyleSettingsFacade.getNamesCountToUseImportOnDemand() ||
|
||||
JavaCodeStyleManager.getInstance(qualifierClass.getProject()).hasConflictingOnDemandImport((PsiJavaFile)importList.getContainingFile(), qualifierClass, staticName)) {
|
||||
importList.add(JavaPsiFacade.getInstance(qualifierClass.getProject()).getElementFactory().createImportStaticStatement(qualifierClass, staticName));
|
||||
} else {
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
class ImportTest{
|
||||
{
|
||||
Math.ab<caret>s(-1);
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import static java.lang.Math.*;
|
||||
|
||||
class ImportTest{
|
||||
{
|
||||
ab<caret>s(-1);
|
||||
}
|
||||
}
|
||||
+7
@@ -19,6 +19,7 @@ import com.intellij.JavaTestUtil;
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.PackageEntry;
|
||||
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase;
|
||||
|
||||
public class AddSingleStaticImportActionTest extends JavaCodeInsightFixtureTestCase {
|
||||
@@ -61,6 +62,12 @@ public class AddSingleStaticImportActionTest extends JavaCodeInsightFixtureTestC
|
||||
doTest("Add import for 'foo.Class1.Inner1'");
|
||||
}
|
||||
|
||||
public void testPredefinedAlwaysUseOnDemandImport() {
|
||||
JavaCodeStyleSettings settings = JavaCodeStyleSettings.getInstance(getProject());
|
||||
settings.PACKAGES_TO_USE_IMPORT_ON_DEMAND.addEntry(new PackageEntry(true, "java.lang.Math", true));
|
||||
doTest("Add static import for 'java.lang.Math.abs'");
|
||||
}
|
||||
|
||||
public void testSingleStaticReferencesUntilCollapsedToDiamond() {
|
||||
doTest("Add static import for 'java.lang.Math.max'");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user