Skip to content

Commit 59d98eb

Browse files
utafralitimtebeek
andauthored
Fix RemoveUnusedImports removing imports used as static field qualifiers (#7383)
Co-authored-by: Tim te Beek <tim@moderne.io>
1 parent 8a733c2 commit 59d98eb

2 files changed

Lines changed: 30 additions & 2 deletions

File tree

rewrite-java-test/src/test/java/org/openrewrite/java/RemoveUnusedImportsTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2398,6 +2398,34 @@ public class Foo {
23982398
);
23992399
}
24002400

2401+
@Issue("https://github.com/openrewrite/rewrite/issues/7380")
2402+
@Test
2403+
void keepImportWhenUsedOnlyAsStaticFieldQualifier() {
2404+
rewriteRun(
2405+
java(
2406+
"""
2407+
package foo;
2408+
public class A {
2409+
public static final int VALUE = 1;
2410+
}
2411+
"""
2412+
),
2413+
java(
2414+
"""
2415+
package bar;
2416+
2417+
import foo.A;
2418+
2419+
public class Test {
2420+
public int getValue() {
2421+
return A.VALUE;
2422+
}
2423+
}
2424+
"""
2425+
)
2426+
);
2427+
}
2428+
24012429
@Issue("https://github.com/openrewrite/rewrite/issues/6544")
24022430
@Test
24032431
void starImportWithExplicitImportsFromSamePackage() {

rewrite-java/src/main/java/org/openrewrite/java/RemoveUnusedImports.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ public J.CompilationUnit visitCompilationUnit(J.CompilationUnit cu, ExecutionCon
224224
.filter(fq -> fq.getOwningClass() == null || !topLevelTypeNames.contains(fq.getOwningClass().getFullyQualifiedName()))
225225
.collect(toSet());
226226
JavaType.FullyQualified qualidType = TypeUtils.asFullyQualified(elem.getQualid().getType());
227-
if (combinedTypes.isEmpty() || sourcePackage.equals(elem.getPackageName()) && qualidType != null && !qualidType.getFullyQualifiedName().contains("$")) {
227+
if ((combinedTypes.isEmpty() && !unqualifiedTypeNames.contains(elem.getTypeName())) || sourcePackage.equals(elem.getPackageName()) && qualidType != null && !qualidType.getFullyQualifiedName().contains("$")) {
228228
anImport.used = false;
229229
changed = true;
230230
} else if ("*".equals(elem.getQualid().getSimpleName())) {
@@ -271,7 +271,7 @@ public J.CompilationUnit visitCompilationUnit(J.CompilationUnit cu, ExecutionCon
271271
return elem.getPackageName().equals(c.getPackageName());
272272
}
273273
return fullyQualifiedNamesAreEqual(c.getFullyQualifiedName(), elem.getTypeName());
274-
})) {
274+
}) && !unqualifiedTypeNames.contains(elem.getTypeName())) {
275275
anImport.used = false;
276276
changed = true;
277277
}

0 commit comments

Comments
 (0)