mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 11:53:49 +07:00
[java-imports] IDEA-368382 incorrect place for module import
- support editorconfig - more tests (cherry picked from commit d7fd604e95b1dd197a3efbdbfcd54e81564b2490) IJ-CR-156496 GitOrigin-RevId: 141bae22ad1f263d06b28618bf425a68e8d3cac6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f82340ac1c
commit
3a00f15d33
@@ -2,6 +2,7 @@
|
|||||||
package com.intellij.psi.codeStyle;
|
package com.intellij.psi.codeStyle;
|
||||||
|
|
||||||
import com.intellij.application.options.codeStyle.properties.ValueListPropertyAccessor;
|
import com.intellij.application.options.codeStyle.properties.ValueListPropertyAccessor;
|
||||||
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@@ -16,9 +17,11 @@ public class JavaPackageEntryTableAccessor extends ValueListPropertyAccessor<Pac
|
|||||||
public static final char BLANK_LINE_CHAR = '|';
|
public static final char BLANK_LINE_CHAR = '|';
|
||||||
public static final String STATIC_PREFIX = "$";
|
public static final String STATIC_PREFIX = "$";
|
||||||
public static final String MODULE_PREFIX = "@";
|
public static final String MODULE_PREFIX = "@";
|
||||||
|
private final Field myField;
|
||||||
|
|
||||||
public JavaPackageEntryTableAccessor(@NotNull Object object, @NotNull Field field) {
|
public JavaPackageEntryTableAccessor(@NotNull Object object, @NotNull Field field) {
|
||||||
super(object, field);
|
super(object, field);
|
||||||
|
myField = field;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -66,6 +69,11 @@ public class JavaPackageEntryTableAccessor extends ValueListPropertyAccessor<Pac
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ("imports_layout".equals(getPropertyName()) &&
|
||||||
|
JavaCodeStyleSettings.class.equals(myField.getDeclaringClass()) &&
|
||||||
|
!ContainerUtil.exists(entryTable.getEntries(), entry -> entry == PackageEntry.ALL_MODULE_IMPORTS)) {
|
||||||
|
entryTable.insertEntryAt(PackageEntry.ALL_MODULE_IMPORTS, 0);
|
||||||
|
}
|
||||||
return entryTable;
|
return entryTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -955,10 +955,10 @@ public final class ImportHelper {
|
|||||||
if (entry == PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY) {
|
if (entry == PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY) {
|
||||||
allOtherStaticIndex = i;
|
allOtherStaticIndex = i;
|
||||||
}
|
}
|
||||||
if (entry == PackageEntry.ALL_OTHER_IMPORTS_ENTRY) {
|
if (!isModule && entry == PackageEntry.ALL_OTHER_IMPORTS_ENTRY) {
|
||||||
allOtherIndex = i;
|
allOtherIndex = i;
|
||||||
}
|
}
|
||||||
if (entry.isBetterMatchForPackageThan(bestEntry, packageName, isStatic)) {
|
if (!isModule && entry.isBetterMatchForPackageThan(bestEntry, packageName, isStatic)) {
|
||||||
bestEntry = entry;
|
bestEntry = entry;
|
||||||
bestEntryIndex = i;
|
bestEntryIndex = i;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
|
||||||
|
import ccc.CCC;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
|
||||||
|
class IncorrectOrderWithoutModuleImport {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> a = new ArrayList<String>();
|
||||||
|
a.add("a");
|
||||||
|
final List<String> list = asList(args);
|
||||||
|
new CCC();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
|
||||||
|
import ccc.CCC;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import module java.base;
|
||||||
|
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
|
||||||
|
class IncorrectOrderWithoutModuleImport {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> a = new ArrayList<String>();
|
||||||
|
a.add("a");
|
||||||
|
final List<String> list = asList(args);
|
||||||
|
new CCC();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
|
||||||
|
import module java.base;
|
||||||
|
import ccc.CCC;
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
|
||||||
|
class IncorrectOrderWithoutModuleImport {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> a = new ArrayList<String>();
|
||||||
|
a.add("a");
|
||||||
|
final List<String> list = asList(args);
|
||||||
|
new CCC();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
|
||||||
|
import ccc.CCC;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
|
||||||
|
class IncorrectOrderWithoutModuleImport {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> a = new ArrayList<String>();
|
||||||
|
a.add("a");
|
||||||
|
final List<String> list = asList(args);
|
||||||
|
new CCC();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
|
||||||
|
import ccc.CCC;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
|
||||||
|
class IncorrectOrderWithoutModuleImport {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> a = new ArrayList<String>();
|
||||||
|
a.add("a");
|
||||||
|
final List<String> list = asList(args);
|
||||||
|
new CCC();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
|
||||||
|
import ccc.CCC;
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
class IncorrectOrderWithoutModuleImport {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> a = new ArrayList<String>();
|
||||||
|
a.add("a");
|
||||||
|
final List<String> list = asList(args);
|
||||||
|
new CCC();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -599,6 +599,51 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testIncorrectOrderWithoutModuleImport() {
|
||||||
|
|
||||||
|
myFixture.addClass("package ccc; public class CCC {}");
|
||||||
|
JavaCodeStyleSettings javaSettings = JavaCodeStyleSettings.getInstance(getProject());
|
||||||
|
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE = new PackageEntryTable();
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.ALL_OTHER_IMPORTS_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.BLANK_LINE_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(new PackageEntry(false, "java", true));
|
||||||
|
javaSettings.setPreserveModuleImports(true);
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIncorrectOrderWithoutModuleImportConfigWithModule() {
|
||||||
|
IdeaTestUtil.withLevel(getModule(), JavaFeature.PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS.getMinimumLevel(), () -> {
|
||||||
|
|
||||||
|
myFixture.addClass("package ccc; public class CCC {}");
|
||||||
|
JavaCodeStyleSettings javaSettings = JavaCodeStyleSettings.getInstance(getProject());
|
||||||
|
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE = new PackageEntryTable();
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.ALL_OTHER_IMPORTS_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.BLANK_LINE_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(new PackageEntry(false, "java", true));
|
||||||
|
javaSettings.setPreserveModuleImports(true);
|
||||||
|
doTest();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIncorrectOrderWithoutModuleImportMixStaticAndNonStatic() {
|
||||||
|
IdeaTestUtil.withLevel(getModule(), JavaFeature.PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS.getMinimumLevel(), () -> {
|
||||||
|
|
||||||
|
myFixture.addClass("package ccc; public class CCC {}");
|
||||||
|
JavaCodeStyleSettings javaSettings = JavaCodeStyleSettings.getInstance(getProject());
|
||||||
|
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE = new PackageEntryTable();
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.BLANK_LINE_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.ALL_OTHER_IMPORTS_ENTRY);
|
||||||
|
javaSettings.IMPORT_LAYOUT_TABLE.addEntry(PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY);
|
||||||
|
javaSettings.setPreserveModuleImports(true);
|
||||||
|
doTest();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void testImportModuleOverOtherImports() {
|
public void testImportModuleOverOtherImports() {
|
||||||
IdeaTestUtil.withLevel(getModule(), JavaFeature.PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS.getMinimumLevel(), () -> {
|
IdeaTestUtil.withLevel(getModule(), JavaFeature.PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS.getMinimumLevel(), () -> {
|
||||||
myFixture.addClass("package aaa; public class AAA {}");
|
myFixture.addClass("package aaa; public class AAA {}");
|
||||||
|
|||||||
@@ -112,11 +112,12 @@ public class JavaCodeStyleSettingsTest extends CodeStyleTestCase {
|
|||||||
assertEquals(2, commonJavaSettings.getIndentOptions().INDENT_SIZE);
|
assertEquals(2, commonJavaSettings.getIndentOptions().INDENT_SIZE);
|
||||||
assertTrue(javaSettings.JD_ALIGN_PARAM_COMMENTS);
|
assertTrue(javaSettings.JD_ALIGN_PARAM_COMMENTS);
|
||||||
PackageEntryTable importsTable = javaSettings.getImportLayoutTable();
|
PackageEntryTable importsTable = javaSettings.getImportLayoutTable();
|
||||||
assertEquals(new PackageEntry(false, "com.jetbrains", false), importsTable.getEntryAt(0));
|
assertEquals(PackageEntry.ALL_MODULE_IMPORTS, importsTable.getEntryAt(0));
|
||||||
assertEquals(PackageEntry.BLANK_LINE_ENTRY, importsTable.getEntryAt(1));
|
assertEquals(new PackageEntry(false, "com.jetbrains", false), importsTable.getEntryAt(1));
|
||||||
assertEquals(new PackageEntry(false, "org.eclipse.bar", false), importsTable.getEntryAt(2));
|
assertEquals(PackageEntry.BLANK_LINE_ENTRY, importsTable.getEntryAt(2));
|
||||||
assertEquals(PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY, importsTable.getEntryAt(3));
|
assertEquals(new PackageEntry(false, "org.eclipse.bar", false), importsTable.getEntryAt(3));
|
||||||
assertEquals(new PackageEntry(true, "org.eclipse.foo", true), importsTable.getEntryAt(4));
|
assertEquals(PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY, importsTable.getEntryAt(4));
|
||||||
|
assertEquals(new PackageEntry(true, "org.eclipse.foo", true), importsTable.getEntryAt(5));
|
||||||
List<String> repeatAnno = javaSettings.getRepeatAnnotations();
|
List<String> repeatAnno = javaSettings.getRepeatAnnotations();
|
||||||
assertEquals(2, repeatAnno.size());
|
assertEquals(2, repeatAnno.size());
|
||||||
assertEquals("com.jetbrains.First", repeatAnno.get(0));
|
assertEquals("com.jetbrains.First", repeatAnno.get(0));
|
||||||
|
|||||||
Reference in New Issue
Block a user