aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiam Miller-Cushon <cushon@google.com>2023-10-27 11:00:13 -0700
committergoogle-java-format Team <google-java-format-dev+copybara@google.com>2023-10-27 11:00:53 -0700
commit295e7a43f8a84d31c9e39fd853c8c4e52f586240 (patch)
tree2e79fefd0b1380c891637c14817cb291355ed033
parent685a6c9ebd43aab9ef458379de7d3883bfee970f (diff)
downloadgoogle-java-format-295e7a43f8a84d31c9e39fd853c8c4e52f586240.tar.gz
Don't try to reflow text blocks
Fixes https://github.com/google/google-java-format/issues/976 PiperOrigin-RevId: 577249036
-rw-r--r--core/src/main/java/com/google/googlejavaformat/java/StringWrapper.java5
-rw-r--r--core/src/test/java/com/google/googlejavaformat/java/StringWrapperTest.java21
2 files changed, 26 insertions, 0 deletions
diff --git a/core/src/main/java/com/google/googlejavaformat/java/StringWrapper.java b/core/src/main/java/com/google/googlejavaformat/java/StringWrapper.java
index d801c9b..f241ae4 100644
--- a/core/src/main/java/com/google/googlejavaformat/java/StringWrapper.java
+++ b/core/src/main/java/com/google/googlejavaformat/java/StringWrapper.java
@@ -15,6 +15,7 @@
package com.google.googlejavaformat.java;
import static com.google.common.collect.Iterables.getLast;
+import static java.lang.Math.min;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.stream.Collectors.joining;
@@ -122,6 +123,10 @@ public final class StringWrapper {
if (literalTree.getKind() != Kind.STRING_LITERAL) {
return null;
}
+ int pos = getStartPosition(literalTree);
+ if (input.substring(pos, min(input.length(), pos + 3)).equals("\"\"\"")) {
+ return null;
+ }
Tree parent = getCurrentPath().getParentPath().getLeaf();
if (parent instanceof MemberSelectTree
&& ((MemberSelectTree) parent).getExpression().equals(literalTree)) {
diff --git a/core/src/test/java/com/google/googlejavaformat/java/StringWrapperTest.java b/core/src/test/java/com/google/googlejavaformat/java/StringWrapperTest.java
index 99e1b2f..f7be369 100644
--- a/core/src/test/java/com/google/googlejavaformat/java/StringWrapperTest.java
+++ b/core/src/test/java/com/google/googlejavaformat/java/StringWrapperTest.java
@@ -15,6 +15,7 @@
package com.google.googlejavaformat.java;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import com.google.common.base.Joiner;
import org.junit.Test;
@@ -52,6 +53,26 @@ public class StringWrapperTest {
assertThat(StringWrapper.wrap(100, input, new Formatter())).isEqualTo(output);
}
+ @Test
+ public void textBlock() throws Exception {
+ assumeTrue(Runtime.version().feature() >= 15);
+ String input =
+ lines(
+ "package com.mypackage;",
+ "public class ReproBug {",
+ " private String myString;",
+ " private ReproBug() {",
+ " String str =",
+ " \"\"\"",
+ " "
+ + " {\"sourceEndpoint\":\"ri.something.1-1.object-internal.1\",\"targetEndpoint\":\"ri.some"
+ + "thing.1-1.object-internal.2\",\"typeId\":\"typeId\"}\"\"\";",
+ " myString = str;",
+ " }",
+ "}");
+ assertThat(StringWrapper.wrap(100, input, new Formatter())).isEqualTo(input);
+ }
+
private static String lines(String... line) {
return Joiner.on('\n').join(line) + '\n';
}