[java] IJ-CR-167924 IDEA-371865 Inspection to convert 'System.out'<->'IO'

(cherry picked from commit 810b99e29ae3b425287263935f242136fdba71c4)


(cherry picked from commit 6f3161348217cd7d03e59652be993a7c46468967)

IJ-MR-169535

GitOrigin-RevId: 7462eaa2c86626fae801a18622993e6e42a6b6e7
This commit is contained in:
Mikhail Pyltsin
2025-07-08 18:06:29 +02:00
committed by intellij-monorepo-bot
parent 13a06ddd5f
commit 01c7dc6dd8

View File

@@ -17,6 +17,8 @@ import org.jetbrains.annotations.Nullable;
import java.util.Set;
import static com.intellij.psi.CommonClassNames.JAVA_LANG_IO;
public final class MigrateToJavaLangIoInspection extends AbstractBaseJavaLocalInspectionTool {
public boolean processImplicitClasses = true;
@@ -125,9 +127,23 @@ public final class MigrateToJavaLangIoInspection extends AbstractBaseJavaLocalIn
static boolean isSystemOutPrintln(@NotNull PsiMethodCallExpression expression) {
if (!PRINT_STREAM_PRINT.test(expression)) return false;
if (!isSystemOutCall(expression)) return false;
return callIOAndSystemIdentical(expression.getArgumentList());
}
private static boolean isSystemOutCall(@NotNull PsiMethodCallExpression expression) {
PsiReferenceExpression methodExpression = expression.getMethodExpression();
PsiExpression qualifier = methodExpression.getQualifierExpression();
if (!(qualifier instanceof PsiReferenceExpression ref)) return false;
PsiElement resolved = ref.resolve();
if (!(resolved instanceof PsiField field)) return false;
if (!field.getName().equals("out")) return false;
PsiClass containingClass = field.getContainingClass();
if (containingClass == null) return false;
if (!CommonClassNames.JAVA_LANG_SYSTEM.equals(containingClass.getQualifiedName())) return false;
return true;
}
static boolean callIOAndSystemIdentical(@NotNull PsiExpressionList list) {
PsiExpression[] expressions = list.getExpressions();
if (expressions.length == 0) return true;