Bug 551189 - Consistent ArrayIndexOutOfBounds when saving an incorrect
Java
file when code clean-up is enabled
Change-Id: I227175e1677341e1262fc5dd70a648642367db59
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 305d9b3..96e0469 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13022,4 +13022,18 @@
" }\n" +
"}");
}
+/**
+ * https://bugs.eclipse.org/551189 - Consistent ArrayIndexOutOfBounds when saving an incorrect Java file when code clean-up is enabled
+ */
+public void testBug551189() {
+ formatSource(
+ "public class AAA {\n" +
+ "\n" +
+ "import java.awt.*;\n" +
+ "\n" +
+ "public class BBB {\n" +
+ " int a;\n" +
+ "\n" +
+ "}}");
+}
}
diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/OneLineEnforcer.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/OneLineEnforcer.java
index 9d9763f..9b2671a 100644
--- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/OneLineEnforcer.java
+++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/OneLineEnforcer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014, 2018 Mateusz Matela and others.
+ * Copyright (c) 2018, 2019 Mateusz Matela and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -59,6 +59,12 @@
}
@Override
+ public boolean preVisit2(ASTNode node) {
+ boolean isMalformed = (node.getFlags() & ASTNode.MALFORMED) != 0;
+ return !isMalformed;
+ }
+
+ @Override
public void endVisit(TypeDeclaration node) {
if (node.getParent().getLength() == 0)
return; // this is a fake block created by parsing in statements mode