diff options
author | jean pierre Lerbscher <jean-pierre.lerbscher@jperf.com> | 2020-09-30 15:16:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-30 15:16:13 +0200 |
commit | de7fa89f8d2dc14145aa38838a81f2922e153722 (patch) | |
tree | 86530a723285cf9fc6a5f2e9ecde921dff49ea2d | |
parent | ef778f88394fc4f4213de109a167d15cb8d6130f (diff) | |
parent | cfb793418f89cb786f352096e16cf2535fa122b3 (diff) | |
download | platform_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
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++; |