| commit | 15f502fe9b78c51d271b28b0442fc342233aa5f3 | [log] [tgz] |
|---|---|---|
| author | Matthias Fritschi <matfsw@gmail.com> | Fri Mar 29 08:40:00 2019 +0100 |
| committer | Matthias Fritschi <matfsw@gmail.com> | Fri Mar 29 08:40:00 2019 +0100 |
| tree | 4c19fd1407f6559a5f5f0cb98714e42837c99ab5 | |
| parent | a27023f739928c30ad198edaf3dc3493bfacf23e [diff] |
Support removing last statement from method body including indentation Fixes #2001: Emptying method bodys via MethodCallExpr triggers UnsupportedOperationException
diff --git a/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/LexicalPreservingPrinterTest.java b/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/LexicalPreservingPrinterTest.java index 7836d22..7c47c82 100644 --- a/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/LexicalPreservingPrinterTest.java +++ b/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/LexicalPreservingPrinterTest.java
@@ -1169,4 +1169,15 @@ assertEqualsNoEol("class X { X() {\n testme();\n} private void testme() {} }", LexicalPreservingPrinter.print(compilationUnit)); } + @Test + void issue2001() { + CompilationUnit compilationUnit = parse("class X {void blubb(){X.p(\"blaubb04\");}}"); + LexicalPreservingPrinter.setup(compilationUnit); + + compilationUnit + .findAll(MethodCallExpr.class) + .forEach(Node::removeForced); + + assertEqualsNoEol("class X {void blubb(){}}", LexicalPreservingPrinter.print(compilationUnit)); + } }
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 9ce2f7d..783615d 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
@@ -388,7 +388,7 @@ } else { throw new UnsupportedOperationException("removed " + removed.getElement() + " vs " + originalElement); } - } else if (removed.isWhiteSpace()) { + } else if (removed.isWhiteSpace() || removed.getElement() instanceof CsmIndent || removed.getElement() instanceof CsmUnindent) { diffIndex++; } else if (originalElement.isWhiteSpace()) { originalIndex++;