From c3f0e4decd451350a0339ea4b570272b086accd4 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 27 Sep 2022 15:25:28 +0200 Subject: [PATCH] [java-inspections] TextBlockMigration: do not report if there are comments in-between GitOrigin-RevId: 970d43e2694bccc0ca98c7ad3abb61477e4d937f --- .../codeInspection/TextBlockMigrationInspection.java | 8 ++++++-- .../afterConcatenationNoNewLineInTheEnd.java | 2 +- .../afterConcatenationWithEscapedNewLine.java | 2 +- ...erConcatenationWithEscapedQuotesWithoutLineBreaks.java | 2 +- .../afterConcatenationWithIndentAndBlankLine.java | 2 +- ...erConcatenationWithIndentAndLineSplitOnWhitespace.java | 2 +- .../afterConcatenationWithMultipleNewLines.java | 2 +- .../afterConcatenationWithNonStrings.java | 2 +- .../afterConcatenationWithSpacesAtTheBeginning.java | 2 +- .../afterConcatenationWithSpacesInTheEnd.java | 2 +- .../afterConcatenationWithThreeQuotesInText.java | 2 +- .../textBlockMigration/afterLiteralWithEscapedQuotes.java | 2 +- .../textBlockMigration/afterLiteralWithInjection.java | 2 +- .../beforeConcatenationNoNewLineInTheEnd.java | 2 +- .../beforeConcatenationWithEscapedNewLine.java | 2 +- ...reConcatenationWithEscapedQuotesWithoutLineBreaks.java | 2 +- .../beforeConcatenationWithIndentAndBlankLine.java | 2 +- ...reConcatenationWithIndentAndLineSplitOnWhitespace.java | 2 +- .../beforeConcatenationWithMultipleNewLines.java | 2 +- .../beforeConcatenationWithNonStrings.java | 2 +- .../beforeConcatenationWithSpacesAtTheBeginning.java | 2 +- .../beforeConcatenationWithSpacesInTheEnd.java | 2 +- .../beforeConcatenationWithThreeQuotesInText.java | 2 +- .../beforeLiteralWithEscapedQuotes.java | 2 +- .../textBlockMigration/beforeLiteralWithInjection.java | 2 +- 25 files changed, 30 insertions(+), 26 deletions(-) diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java index 4e87e462d793..979360f8a2a0 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java @@ -12,6 +12,7 @@ import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.util.PsiLiteralUtil; import com.intellij.psi.util.PsiUtil; +import com.intellij.util.containers.ContainerUtil; import com.siyeh.ig.psiutils.CommentTracker; import com.siyeh.ig.psiutils.ExpressionUtils; import org.jetbrains.annotations.Nls; @@ -62,13 +63,16 @@ public class TextBlockMigrationInspection extends AbstractBaseJavaLocalInspectio newLineIdx = getNewLineIndex(text, newLineIdx + 1); } } - if (nNewLines > 1) { + boolean hasComments = ContainerUtil.exists(expression.getChildren(), child -> child instanceof PsiComment); + boolean reportWarning = nNewLines > 1 && !hasComments; + boolean reportInfo = isOnTheFly && (hasEscapedQuotes || hasComments); + if (reportWarning) { boolean quickFixOnly = isOnTheFly && InspectionProjectProfileManager.isInformationLevel(getShortName(), expression); holder.registerProblem(expression, quickFixOnly ? null : firstNewLineTextRange, JavaBundle.message("inspection.text.block.migration.concatenation.message"), new ReplaceWithTextBlockFix()); } - else if (isOnTheFly && hasEscapedQuotes) { + else if (reportInfo) { holder.registerProblem(expression, JavaBundle.message("inspection.text.block.migration.string.message"), ProblemHighlightType.INFORMATION, new ReplaceWithTextBlockFix()); diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationNoNewLineInTheEnd.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationNoNewLineInTheEnd.java index 69962647915e..ceb7b4fba760 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationNoNewLineInTheEnd.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationNoNewLineInTheEnd.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedNewLine.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedNewLine.java index d44d44198333..be0f3deb9649 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedNewLine.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedNewLine.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedQuotesWithoutLineBreaks.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedQuotesWithoutLineBreaks.java index a14bc8a7fabe..49eccfcd7fbb 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedQuotesWithoutLineBreaks.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithEscapedQuotesWithoutLineBreaks.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndBlankLine.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndBlankLine.java index e30ce01f0f12..5656c569678f 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndBlankLine.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndBlankLine.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndLineSplitOnWhitespace.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndLineSplitOnWhitespace.java index 915bb2ea4d33..72e288e39b59 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndLineSplitOnWhitespace.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithIndentAndLineSplitOnWhitespace.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithMultipleNewLines.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithMultipleNewLines.java index 8e7da5cdb748..4d6c937b6b8f 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithMultipleNewLines.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithMultipleNewLines.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithNonStrings.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithNonStrings.java index a9b31112cf0e..cb99a7fa8b5a 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithNonStrings.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithNonStrings.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesAtTheBeginning.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesAtTheBeginning.java index 64bf508105d9..76c1d98ef386 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesAtTheBeginning.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesAtTheBeginning.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "INFORMATION-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesInTheEnd.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesInTheEnd.java index b63ed4a40f70..f95fbf141d76 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesInTheEnd.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithSpacesInTheEnd.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithThreeQuotesInText.java b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithThreeQuotesInText.java index 7660615c6e83..77a80718ebc2 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithThreeQuotesInText.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterConcatenationWithThreeQuotesInText.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithEscapedQuotes.java b/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithEscapedQuotes.java index d7dcfcec2094..9a613cd89522 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithEscapedQuotes.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithEscapedQuotes.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithInjection.java b/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithInjection.java index 70b990c04ee2..3c96a1d19f32 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithInjection.java +++ b/java/java-tests/testData/inspection/textBlockMigration/afterLiteralWithInjection.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" import org.intellij.lang.annotations.Language; class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationNoNewLineInTheEnd.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationNoNewLineInTheEnd.java index 191175be77a3..d118fee65ca3 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationNoNewLineInTheEnd.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationNoNewLineInTheEnd.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedNewLine.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedNewLine.java index e07b423a6fec..8243e6946a1f 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedNewLine.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedNewLine.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedQuotesWithoutLineBreaks.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedQuotesWithoutLineBreaks.java index a36f2784ab75..a0754b7ecbf5 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedQuotesWithoutLineBreaks.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithEscapedQuotesWithoutLineBreaks.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndBlankLine.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndBlankLine.java index 6517f7720c21..cfc4ecfb7792 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndBlankLine.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndBlankLine.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndLineSplitOnWhitespace.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndLineSplitOnWhitespace.java index 1ae53add1a61..613b4a329788 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndLineSplitOnWhitespace.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithIndentAndLineSplitOnWhitespace.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithMultipleNewLines.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithMultipleNewLines.java index dc87057ce4ed..3bdb6f985d89 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithMultipleNewLines.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithMultipleNewLines.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithNonStrings.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithNonStrings.java index f2d456ba3b11..04abd53202bb 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithNonStrings.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithNonStrings.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesAtTheBeginning.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesAtTheBeginning.java index 82745f562294..ac34b3fe9ca0 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesAtTheBeginning.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesAtTheBeginning.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "INFORMATION-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesInTheEnd.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesInTheEnd.java index 68e037c5ff87..287aebbbd479 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesInTheEnd.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithSpacesInTheEnd.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithThreeQuotesInText.java b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithThreeQuotesInText.java index 60c6dc7f2257..5eb67812fd44 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithThreeQuotesInText.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeConcatenationWithThreeQuotesInText.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithEscapedQuotes.java b/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithEscapedQuotes.java index 9cd6bd0f369f..2af79efd9dff 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithEscapedQuotes.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithEscapedQuotes.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" class TextBlockMigration { diff --git a/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithInjection.java b/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithInjection.java index 2bde6f08c26a..2b1347cc6b5c 100644 --- a/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithInjection.java +++ b/java/java-tests/testData/inspection/textBlockMigration/beforeLiteralWithInjection.java @@ -1,4 +1,4 @@ -// "Replace with text block" "true" +// "Replace with text block" "true-preview" import org.intellij.lang.annotations.Language; class TextBlockMigration {