aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVlad Topala <topalavlad@gmail.com>2020-01-02 15:18:32 +0200
committerEgor Andreevich <andreevich.egor@gmail.com>2020-01-02 08:18:32 -0500
commit3d65852a482185e464c4986b862394691ac197da (patch)
tree42befd0c17555ac31ddfed6004afb3453a4b9bf6
parent1225800fdbd05d6a2b069fc1e4949f6461a7236b (diff)
downloadjavapoet-3d65852a482185e464c4986b862394691ac197da.tar.gz
Hardcoded line separator bug (#684)
* Use regex for new line character to cover both dos and unix endings when calling emitAndIndent - fixes #552 * Update CodeWriter to use linebreak matcher instead of \r\n
-rw-r--r--src/main/java/com/squareup/javapoet/CodeWriter.java2
-rw-r--r--src/test/java/com/squareup/javapoet/CodeWriterTest.java23
2 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/com/squareup/javapoet/CodeWriter.java b/src/main/java/com/squareup/javapoet/CodeWriter.java
index b2bc3d3..2c634b5 100644
--- a/src/main/java/com/squareup/javapoet/CodeWriter.java
+++ b/src/main/java/com/squareup/javapoet/CodeWriter.java
@@ -461,7 +461,7 @@ final class CodeWriter {
*/
CodeWriter emitAndIndent(String s) throws IOException {
boolean first = true;
- for (String line : s.split("\n", -1)) {
+ for (String line : s.split("\\R", -1)) {
// Emit a newline character. Make sure blank lines in Javadoc & comments look good.
if (!first) {
if ((javadoc || comment) && trailingNewline) {
diff --git a/src/test/java/com/squareup/javapoet/CodeWriterTest.java b/src/test/java/com/squareup/javapoet/CodeWriterTest.java
new file mode 100644
index 0000000..331d000
--- /dev/null
+++ b/src/test/java/com/squareup/javapoet/CodeWriterTest.java
@@ -0,0 +1,23 @@
+package com.squareup.javapoet;
+
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static com.google.common.truth.Truth.assertThat;
+
+public class CodeWriterTest {
+
+ @Test
+ public void emptyLineInJavaDocDosEndings() throws IOException {
+ CodeBlock javadocCodeBlock = CodeBlock.of("A\r\n\r\nB\r\n");
+ StringBuilder out = new StringBuilder();
+ new CodeWriter(out).emitJavadoc(javadocCodeBlock);
+ assertThat(out.toString()).isEqualTo(
+ "/**\n" +
+ " * A\n" +
+ " *\n" +
+ " * B\n" +
+ " */\n");
+ }
+} \ No newline at end of file