Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Metchev2013-12-19 11:55:07 +0000
committerNoopur Gupta2013-12-19 11:55:07 +0000
commit217b71b09ddca5d11afd74b858708bf06251e83b (patch)
tree444fa078c73dfd998250fd6961b87f3ae25b02fc
parent9e6c10b4bc71eb8bab57420f4867da8c08d6720a (diff)
downloadeclipse.jdt.ui-217b71b09ddca5d11afd74b858708bf06251e83b.tar.gz
eclipse.jdt.ui-217b71b09ddca5d11afd74b858708bf06251e83b.tar.xz
eclipse.jdt.ui-217b71b09ddca5d11afd74b858708bf06251e83b.zip
Fixed bug 404471: [move method] Annotation error in applying
move-refactoring to inherited methods Signed-off-by: Nikolay Metchev <nikolaymetchev@gmail.com>
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/in/A.java14
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/out/A.java18
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInstanceMethodTests.java6
-rw-r--r--org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java12
4 files changed, 50 insertions, 0 deletions
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/in/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/in/A.java
new file mode 100644
index 0000000000..c33a73ef01
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/in/A.java
@@ -0,0 +1,14 @@
+public class A extends B {
+ @Override
+ public void m(C c) {
+ }
+}
+
+class B {
+ public void m(C c) {
+ }
+}
+
+class C {
+
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/out/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/out/A.java
new file mode 100644
index 0000000000..08d7f69abe
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/MoveInstanceMethod/canMove/test65/out/A.java
@@ -0,0 +1,18 @@
+public class A extends B {
+ @Override
+ public void m(C c) {
+ c.m();
+ }
+}
+
+class B {
+ public void m(C c) {
+ }
+}
+
+class C {
+
+ public void m() {
+ }
+
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInstanceMethodTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInstanceMethodTests.java
index 8e3200b867..580d2084c1 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInstanceMethodTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInstanceMethodTests.java
@@ -10,6 +10,7 @@
* Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] super method invocation does not compile after refactoring - https://bugs.eclipse.org/356687
* Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] Move method with static imported method calls introduces compiler error - https://bugs.eclipse.org/217753
* Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] Wrong detection of duplicate methods (can result in compile errors) - https://bugs.eclipse.org/404477
+ * Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] Annotation error in applying move-refactoring to inherited methods - https://bugs.eclipse.org/404471
*******************************************************************************/
package org.eclipse.jdt.ui.tests.refactoring;
@@ -558,6 +559,11 @@ public class MoveInstanceMethodTests extends RefactoringTest {
helper1(new String[] { "A" }, "A", 3, 17, 3, 18, PARAMETER, "b", true, true);
}
+ // bug 404471
+ public void test65() throws Exception {
+ helper1(new String[] { "A" }, "A", 3, 17, 3, 18, PARAMETER, "c", false, false);
+ }
+
// Move mA1 to field fB, do not inline delegator
public void test3() throws Exception {
helper1(new String[] { "p1.A", "p2.B", "p3.C"}, "p1.A", 9, 17, 9, 20, FIELD, "fB", false, false);
diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java
index c6f286b8c0..a84f682d5e 100644
--- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java
+++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveInstanceMethodProcessor.java
@@ -10,6 +10,7 @@
* Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] super method invocation does not compile after refactoring - https://bugs.eclipse.org/356687
* Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] Move method with static imported method calls introduces compiler error - https://bugs.eclipse.org/217753
* Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] Wrong detection of duplicate methods (can result in compile errors) - https://bugs.eclipse.org/404477
+ * Nikolay Metchev <nikolaymetchev@gmail.com> - [move method] Annotation error in applying move-refactoring to inherited methods - https://bugs.eclipse.org/404471
*******************************************************************************/
package org.eclipse.jdt.internal.corext.refactoring.structure;
@@ -72,6 +73,7 @@ import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
+import org.eclipse.jdt.core.dom.Annotation;
import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration;
import org.eclipse.jdt.core.dom.AnonymousClassDeclaration;
import org.eclipse.jdt.core.dom.Assignment;
@@ -82,6 +84,7 @@ import org.eclipse.jdt.core.dom.EnumDeclaration;
import org.eclipse.jdt.core.dom.Expression;
import org.eclipse.jdt.core.dom.FieldAccess;
import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.core.dom.IExtendedModifier;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.IVariableBinding;
@@ -2306,6 +2309,15 @@ public final class MoveInstanceMethodProcessor extends MoveProcessor implements
adjustments.put(fMethod, adjustment);
}
}
+ for (IExtendedModifier modifier : (List<IExtendedModifier>) declaration.modifiers()) {
+ if (modifier.isAnnotation()) {
+ Annotation annotation= (Annotation) modifier;
+ ITypeBinding typeBinding= annotation.resolveTypeBinding();
+ if (typeBinding != null && typeBinding.getQualifiedName().equals("java.lang.Override")) { //$NON-NLS-1$
+ rewrite.remove(annotation, null);
+ }
+ }
+ }
target= createMethodArguments(rewrites, rewrite, declaration, adjustments, status);
createMethodTypeParameters(rewrite, declaration, status);
createMethodComment(rewrite, declaration);

Back to the top