aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjean pierre Lerbscher <jean-pierre.lerbscher@jperf.com>2020-09-30 15:16:13 +0200
committerGitHub <noreply@github.com>2020-09-30 15:16:13 +0200
commitde7fa89f8d2dc14145aa38838a81f2922e153722 (patch)
tree86530a723285cf9fc6a5f2e9ecde921dff49ea2d
parentef778f88394fc4f4213de109a167d15cb8d6130f (diff)
parentcfb793418f89cb786f352096e16cf2535fa122b3 (diff)
downloadplatform_external_javaparser-de7fa89f8d2dc14145aa38838a81f2922e153722.tar.gz
platform_external_javaparser-de7fa89f8d2dc14145aa38838a81f2922e153722.tar.bz2
platform_external_javaparser-de7fa89f8d2dc14145aa38838a81f2922e153722.zip
Merge pull request #2813 from jlerbsc/issue-2806
Fix issue 2806 EOL separator problems on windows
-rwxr-xr-xjavaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/Issue2806Test.java59
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java3
2 files changed, 62 insertions, 0 deletions
diff --git a/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/Issue2806Test.java b/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/Issue2806Test.java
new file mode 100755
index 000000000..bf21707e7
--- /dev/null
+++ b/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/Issue2806Test.java
@@ -0,0 +1,59 @@
+
+/*
+ * Copyright (C) 2015-2016 Federico Tomassetti
+ * Copyright (C) 2017-2019 The JavaParser Team.
+ *
+ * This file is part of JavaParser.
+ *
+ * JavaParser can be used either under the terms of
+ * a) the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * b) the terms of the Apache License
+ *
+ * You should have received a copy of both licenses in LICENCE.LGPL and
+ * LICENCE.APACHE. Please refer to those files for details.
+ *
+ * JavaParser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ */
+
+package com.github.javaparser.printer.lexicalpreservation;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+import com.github.javaparser.JavaParser;
+import com.github.javaparser.ParserConfiguration;
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.ImportDeclaration;
+
+class Issue2806Test {
+
+ private JavaParser javaParser;
+
+ @Test
+ void importIsAddedOnTheSameLine() {
+ String junit4 = "import java.lang.IllegalArgumentException;\n" +
+ "\n" +
+ "public class A {\n" +
+ "}";
+ String junit5 = "import java.lang.IllegalArgumentException;\n" +
+ "import java.nio.file.Paths;\n" +
+ "\n" +
+ "public class A {\n" +
+ "}";
+ JavaParser parser = new JavaParser(new ParserConfiguration().setLexicalPreservationEnabled(true));
+ CompilationUnit cu = parser.parse(junit4).getResult().get();
+ LexicalPreservingPrinter.setup(cu);
+ ImportDeclaration importDeclaration = new ImportDeclaration("java.nio.file.Paths", false, false);
+ CompilationUnit compilationUnit = cu.addImport(importDeclaration);
+ String out = LexicalPreservingPrinter.print(compilationUnit);
+ assertThat(out, equalTo(junit5));
+ }
+
+}
diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java
index 82ff44171..6dc320c91 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java
@@ -506,6 +506,9 @@ public class Difference {
if (kept.getTokenType() == originalTextToken.getTokenKind()) {
originalIndex++;
diffIndex++;
+ } else if (kept.isNewLine() && originalTextToken.isNewline()) {
+ originalIndex++;
+ diffIndex++;
} else if (kept.isNewLine() && originalTextToken.isSpaceOrTab()) {
originalIndex++;
diffIndex++;