Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java20
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/RedundantModifiersCleanUp.java6
2 files changed, 24 insertions, 2 deletions
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java
index 2a87bc2b0c..00326367dc 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java
@@ -9152,8 +9152,26 @@ public class CleanUpTest extends CleanUpTestCase {
buf.append("}\n");
String expected2 = buf.toString();
+ // Anonymous class within an interface:
+ // public keyword must not be removed (see bug#536612)
+ buf= new StringBuffer();
+ buf.append("package test;\n");
+ buf.append("public interface X {\n");
+ buf.append(" void B();\n");
+ buf.append(" void A();\n");
+ buf.append(" default X y() {\n");
+ buf.append(" return new X() {\n");
+ buf.append(" @Override public void A() {}\n");
+ buf.append(" @Override public void B() {}\n");
+ buf.append(" };\n");
+ buf.append(" }\n");
+ buf.append("}\n");
+ String expected3 = buf.toString();
+
+ ICompilationUnit cu3= pack1.createCompilationUnit("AnonymousNestedInInterface.java", buf.toString(), false, null);
+
enable(CleanUpConstants.REMOVE_REDUNDANT_MODIFIERS);
- assertRefactoringResultAsExpected(new ICompilationUnit[] { cu1, cu2 }, new String[] { expected1, expected2 });
+ assertRefactoringResultAsExpected(new ICompilationUnit[] { cu1, cu2, cu3 }, new String[] { expected1, expected2, expected3 });
}
}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/RedundantModifiersCleanUp.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/RedundantModifiersCleanUp.java
index 3d1d07c1b7..cac62fb437 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/RedundantModifiersCleanUp.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/RedundantModifiersCleanUp.java
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.ASTVisitor;
+import org.eclipse.jdt.core.dom.AnonymousClassDeclaration;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.FieldDeclaration;
import org.eclipse.jdt.core.dom.MethodDeclaration;
@@ -134,7 +135,10 @@ public class RedundantModifiersCleanUp extends AbstractMultiFix {
public boolean visit(MethodDeclaration node) {
TypeDeclaration typeDecl= ASTNodes.getParent(node, TypeDeclaration.class);
if (typeDecl != null && typeDecl.isInterface()) {
- rewriteOperations.add(new RemoveModifiersOperation(node, Modifier.PUBLIC | Modifier.ABSTRACT));
+ rewriteOperations.add(new RemoveModifiersOperation(node, Modifier.ABSTRACT));
+ if (!AnonymousClassDeclaration.class.isInstance(node.getParent())) {
+ rewriteOperations.add(new RemoveModifiersOperation(node, Modifier.PUBLIC));
+ }
} else if (typeDecl != null && Modifier.isFinal(typeDecl.getModifiers()) && Modifier.isFinal(node.getModifiers())) {
rewriteOperations.add(new RemoveModifiersOperation(node, Modifier.FINAL));
}

Back to the top