diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java index 58b2363955cc..1aa5448a39de 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java @@ -200,13 +200,13 @@ public final class TrailingWhitespacesInTextBlockInspection extends AbstractBase if (suffix.equals("\\{")) return result.append(line).toString(); line = line.substring(0, line.length() - suffix.length()); } - String transformed = lineTransformation.apply(line); + String transformed = line.isEmpty() ? line : lineTransformation.apply(line); if (transformed == null) return null; if (last && hasUnescapedLastQuote(transformed)) { result.append(transformed, 0, transformed.length() - 1).append("\\\""); } else if (transformed.isEmpty()) { - result.append((line.length() < indent) ? line : " ".repeat(indent)); + result.append((line.length() < indent) ? line : line.substring(0, indent)); } else { result.append(transformed); } diff --git a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/EmptyLine.after.java b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/EmptyLine.after.java new file mode 100644 index 000000000000..85757f6b40b1 --- /dev/null +++ b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/EmptyLine.after.java @@ -0,0 +1,9 @@ +class EmptyLine { + + void x(int a) { + System.out.println(STR.""" + a\na "\{a} + + \s"""); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/EmptyLine.java b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/EmptyLine.java new file mode 100644 index 000000000000..850628fbad3f --- /dev/null +++ b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/EmptyLine.java @@ -0,0 +1,9 @@ +class EmptyLine { + + void x(int a) { + System.out.println(STR.""" + a\na "\{a} + + """); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithBlankLines.after.java b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithBlankLines.after.java index c329434fb51c..a6774e3302aa 100644 --- a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithBlankLines.after.java +++ b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithBlankLines.after.java @@ -1,12 +1,12 @@ class Foo { void test() { String colors = """ - + red - - + + green diff --git a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.after.java b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.after.java index 96863469e5ec..8bd4ce7e13aa 100644 --- a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.after.java +++ b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.after.java @@ -28,5 +28,10 @@ class Foo { \u005C \""""; String text14 = """ \u005C\u005C\u005C\u005C\""""; + String text15 = STR.""" + "scary"\{} + "scary"\{} + "scary" \{} + """; } } diff --git a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.java b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.java index 99a9b7ec1693..2ab5820fbfb6 100644 --- a/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.java +++ b/java/java-tests/testData/inspection/trailingWhitespacesInTextBlock/WithEndQuotes.java @@ -28,5 +28,10 @@ class Foo { \u005C " """; String text14 = """ \u005C\u005C\u005C\u005C" """; + String text15 = STR.""" + "scary"\{} + "scary"\{} + "scary" \{} + """; } } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/TrailingWhitespacesInTextBlockInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/TrailingWhitespacesInTextBlockInspectionTest.java index 261f0f2c114a..aab26b0bbc7c 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/TrailingWhitespacesInTextBlockInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/TrailingWhitespacesInTextBlockInspectionTest.java @@ -12,6 +12,7 @@ public class TrailingWhitespacesInTextBlockInspectionTest extends LightJavaInspe public void testBadTextBlock() { doTest(); } public void testBlankLine() { doTestAll(); } + public void testEmptyLine() { doTestEscape(); } public void testEmptyLastLine() { doTestAll(); } public void testOneLineBlock() { doTestAll(); } public void testReplaceAtTheEnd() { doTestEscape(); }