diff --git a/palantir-java-format/src/main/java/com/palantir/javaformat/java/StringWrapper.java b/palantir-java-format/src/main/java/com/palantir/javaformat/java/StringWrapper.java index 14da9f64f..65d6d305b 100644 --- a/palantir-java-format/src/main/java/com/palantir/javaformat/java/StringWrapper.java +++ b/palantir-java-format/src/main/java/com/palantir/javaformat/java/StringWrapper.java @@ -127,6 +127,10 @@ public Void visitLiteral(LiteralTree literalTree, Void aVoid) { if (literalTree.getKind() != Kind.STRING_LITERAL) { return null; } + int pos = getStartPosition(literalTree); + if (input.substring(pos, Math.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/palantir-java-format/src/test/java/com/palantir/javaformat/java/StringWrapperTest.java b/palantir-java-format/src/test/java/com/palantir/javaformat/java/StringWrapperTest.java index 3293fc361..a840bbcfd 100644 --- a/palantir-java-format/src/test/java/com/palantir/javaformat/java/StringWrapperTest.java +++ b/palantir-java-format/src/test/java/com/palantir/javaformat/java/StringWrapperTest.java @@ -15,6 +15,7 @@ package com.palantir.javaformat.java; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assume.assumeTrue; import com.google.common.base.Joiner; import org.junit.jupiter.api.Test; @@ -48,6 +49,25 @@ public void testAwkwardLineEndWrapping() throws Exception { assertThat(StringWrapper.wrap(100, input, Formatter.create())).isEqualTo(output); } + @Test + public void textBlock() throws Exception { + assumeTrue(Formatter.getRuntimeVersion() >= 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, Formatter.create())).isEqualTo(input); + } + private static String lines(String... line) { return Joiner.on('\n').join(line) + '\n'; }