From e8d121713c79a3dd03724ed5cb831ff209d864a2 Mon Sep 17 00:00:00 2001 From: Louis Vignier Date: Wed, 20 Jul 2022 17:01:51 +0200 Subject: [PATCH] [codeInspection] MyAddExplicitTypeArgumentsFix: support preview GitOrigin-RevId: 2c2f2192db2bb108e824f534440f0eeee8451371 --- .../compiler/JavacQuirksInspectionVisitor.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/JavacQuirksInspectionVisitor.java b/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/JavacQuirksInspectionVisitor.java index ea93c02ad87d..5ba316f255bb 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/JavacQuirksInspectionVisitor.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/JavacQuirksInspectionVisitor.java @@ -7,6 +7,7 @@ import com.intellij.codeInsight.daemon.impl.actions.SuppressByJavaCommentFix; import com.intellij.codeInsight.daemon.impl.analysis.JavaHighlightUtil; import com.intellij.codeInsight.daemon.impl.quickfix.AddTypeArgumentsFix; import com.intellij.codeInsight.intention.QuickFixFactory; +import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemHighlightType; @@ -333,5 +334,19 @@ public class JavacQuirksInspectionVisitor extends JavaElementVisitor { public boolean startInWriteAction() { return false; } + + @Override + public @NotNull IntentionPreviewInfo generatePreview(@NotNull Project project, @NotNull ProblemDescriptor previewDescriptor) { + PsiElement element = previewDescriptor.getPsiElement(); + if (element instanceof PsiReferenceExpression) { + PsiElement parent = element.getParent(); + if (parent instanceof PsiMethodCallExpression) { + PsiExpression withArgs = AddTypeArgumentsFix.addTypeArguments((PsiExpression)parent, null); + if (withArgs == null) return IntentionPreviewInfo.EMPTY; + CodeStyleManager.getInstance(project).reformat(parent.replace(withArgs)); + } + } + return IntentionPreviewInfo.DIFF; + } } }