Fix addition of wrong java.lang imports on optimize imports
Add check to star importer, to not import already imported fqNames #KT-15273 fixed
This commit is contained in:
@@ -155,8 +155,10 @@ class OptimizedImportsBuilder(
|
||||
}
|
||||
else {
|
||||
descriptors
|
||||
.asSequence()
|
||||
.filterIsInstance<ClassDescriptor>()
|
||||
.mapTo(classNamesToCheck) { it.importableFqName!! }
|
||||
.map { it.importableFqName!! }
|
||||
.filterTo(classNamesToCheck) { !isImportedByDefault(it) }
|
||||
|
||||
if (!fqNames.all(this::isImportedByDefault)) {
|
||||
importsToGenerate.add(starImportPath)
|
||||
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
// NAME_COUNT_TO_USE_STAR_IMPORT: 1
|
||||
// RUNTIME_WITH_FULL_JDK
|
||||
import java.lang.Character.*
|
||||
|
||||
/**
|
||||
* [String]
|
||||
*/
|
||||
fun String.some() {
|
||||
System.out
|
||||
UPPERCASE_LETTER
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// NAME_COUNT_TO_USE_STAR_IMPORT: 1
|
||||
// RUNTIME_WITH_FULL_JDK
|
||||
import java.lang.Character.UPPERCASE_LETTER
|
||||
|
||||
/**
|
||||
* [String]
|
||||
*/
|
||||
fun String.some() {
|
||||
System.out
|
||||
UPPERCASE_LETTER
|
||||
}
|
||||
@@ -220,6 +220,12 @@ public class JvmOptimizeImportsTestGenerated extends AbstractJvmOptimizeImportsT
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("ClassNameConflictWithinDefaultImports.kt")
|
||||
public void testClassNameConflictWithinDefaultImports() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/jvm/allUnderImports/ClassNameConflictWithinDefaultImports.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("NameCountSetting.kt")
|
||||
public void testNameCountSetting() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/jvm/allUnderImports/NameCountSetting.kt");
|
||||
|
||||
Reference in New Issue
Block a user