Bug 475865 - JDT deletes code
Change-Id: I9ef2c803847b63ee63de3f52d54e8f3252f15960
Signed-off-by: Mateusz Matela <mateusz.matela@gmail.com>
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
index 5cd1598..03b3428 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
@@ -11426,4 +11426,18 @@
"}"
);
}
+/**
+ * https://bugs.eclipse.org/475865 - JDT deletes code
+ */
+public void testBug475865() {
+ String source =
+ "public class Snippet {\r\n" +
+ "\r\n" +
+ " Runnable disposeRunnable = this::dispose();\r\n" +
+ "\r\n" +
+ " void dispose() {\r\n" +
+ " }\r\n" +
+ "}";
+ formatSource(source);
+}
}
diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/TokenManager.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/TokenManager.java
index aff5ee5..76f74e1 100644
--- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/TokenManager.java
+++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/TokenManager.java
@@ -432,6 +432,8 @@
for (Token[] pair : this.formatOffTagPairs) {
int index1 = findIndex(pair[0].originalStart, -1, false);
int index2 = findIndex(pair[1].originalEnd, -1, false);
+ pair[0] = get(index1);
+ pair[1] = get(index2);
Token unformatted = new Token(pair[0].originalStart, pair[1].originalEnd, TokenNameWHITESPACE);
unformatted.setIndent(Math.min(pair[0].getIndent(), findSourcePositionInLine(pair[0].originalStart)));
unformatted.putLineBreaksBefore(pair[0].getLineBreaksBefore());