Bug 394726 - [pull up] Pull up adds redundant qualifier
- Add check to see if qualifier is needed or if the import is enough
- Add test cases
Change-Id: I62bf19c666aeb7d80e958defb9b523ab9a59ec9f
Signed-off-by: Kenneth Styrberg <kenneth@kean.nu>
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/p/A.java
new file mode 100644
index 0000000..fc5df27
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/p/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ C c;
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/q/Asuper.java
new file mode 100644
index 0000000..7b8302a
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/q/Asuper.java
@@ -0,0 +1,4 @@
+package q;
+
+public class Asuper {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/in/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/p/A.java
new file mode 100644
index 0000000..b790dad
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/p/A.java
@@ -0,0 +1,9 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/q/Asuper.java
new file mode 100644
index 0000000..85dee15
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/q/Asuper.java
@@ -0,0 +1,8 @@
+package q;
+
+import p.C;
+
+public class Asuper {
+
+ C c;
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod1/out/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/p/A.java
new file mode 100644
index 0000000..fc5df27
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/p/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ C c;
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/q/Asuper.java
new file mode 100644
index 0000000..7f5206f
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/q/Asuper.java
@@ -0,0 +1,6 @@
+package q;
+
+public class Asuper {
+
+ C cc;
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/in/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/p/A.java
new file mode 100644
index 0000000..b790dad
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/p/A.java
@@ -0,0 +1,9 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/q/Asuper.java
new file mode 100644
index 0000000..bcfc7cb
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/q/Asuper.java
@@ -0,0 +1,7 @@
+package q;
+
+public class Asuper {
+
+ C cc;
+ p.C c;
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod2/out/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/p/A.java
new file mode 100644
index 0000000..fc5df27
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/p/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ C c;
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/q/Asuper.java
new file mode 100644
index 0000000..dd46e8d
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/q/Asuper.java
@@ -0,0 +1,6 @@
+package q;
+
+public class Asuper {
+
+ q.C cc;
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/in/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/p/A.java
new file mode 100644
index 0000000..b790dad
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/p/A.java
@@ -0,0 +1,9 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/q/Asuper.java
new file mode 100644
index 0000000..efd2b98
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/q/Asuper.java
@@ -0,0 +1,9 @@
+package q;
+
+import p.C;
+
+public class Asuper {
+
+ q.C cc;
+ C c;
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod3/out/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/p/A.java
new file mode 100644
index 0000000..fc5df27
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/p/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ C c;
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/q/Asuper.java
new file mode 100644
index 0000000..52f74ea
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/q/Asuper.java
@@ -0,0 +1,7 @@
+package q;
+
+public class Asuper {
+
+ C cc;
+ q.C ccc;
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/in/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/p/A.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/p/A.java
new file mode 100644
index 0000000..b790dad
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/p/A.java
@@ -0,0 +1,9 @@
+package p;
+
+import q.Asuper;
+
+public class A extends Asuper {
+
+ void m() {
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/p/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/p/C.java
new file mode 100644
index 0000000..cca21a2
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/p/C.java
@@ -0,0 +1,4 @@
+package p;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/q/Asuper.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/q/Asuper.java
new file mode 100644
index 0000000..e7b71b8
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/q/Asuper.java
@@ -0,0 +1,8 @@
+package q;
+
+public class Asuper {
+
+ C cc;
+ q.C ccc;
+ p.C c;
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/q/C.java b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/q/C.java
new file mode 100644
index 0000000..ebc356e
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod4/out/q/C.java
@@ -0,0 +1,4 @@
+package q;
+
+public class C {
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests.java
index be993dc..4c41d70 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/PullUpTests.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
@@ -113,6 +113,43 @@
assertEqualLines(expected, actual);
}
+ private void fieldMethodHelper2(String[] fieldNames, String[] methodNames, String[][] signatures, boolean deleteAllInSourceType, boolean deleteAllMatchingMethods) throws Exception {
+ ICompilationUnit cuQ= createCUfromTestFile(getPackageQ(), "Asuper", "q/");
+ ICompilationUnit cuP= createCUfromTestFile(getPackageP(), "A", "p/");
+ createCUfromTestFile(getPackageP(), "C", "p/");
+ createCUfromTestFile(getPackageQ(), "C", "q/");
+
+ IType type= getType(cuP, "A");
+ IField[] fields= getFields(type, fieldNames);
+ IMethod[] methods= getMethods(type, methodNames, signatures);
+
+ PullUpRefactoringProcessor processor= createRefactoringProcessor(merge(methods, fields));
+
+ Refactoring ref= processor.getRefactoring();
+ RefactoringStatus checkInitialConditions= ref.checkInitialConditions(new NullProgressMonitor());
+ assertTrue("activation", checkInitialConditions.isOK());
+ setSuperclassAsTargetClass(processor);
+
+ if (deleteAllInSourceType) {
+ processor.setDeletedMethods(methods);
+ }
+ if (deleteAllMatchingMethods) {
+ processor.setDeletedMethods(getMethods(processor.getMatchingElements(new NullProgressMonitor(), false)));
+ }
+
+ RefactoringStatus checkInputResult= ref.checkFinalConditions(new NullProgressMonitor());
+ assertTrue("precondition was supposed to pass", !checkInputResult.hasError());
+ performChange(ref, false);
+
+ String expected= getFileContents(getOutputTestFileName("A", "p/"));
+ String actual= cuP.getSource();
+ assertEqualLines(expected, actual);
+
+ String expectedSuper= getFileContents(getOutputTestFileName("Asuper", "q/"));
+ String actualSuper= cuQ.getSource();
+ assertEqualLines(expectedSuper, actualSuper);
+ }
+
private IType[] getPossibleTargetClasses(PullUpRefactoringProcessor processor) throws JavaModelException {
return processor.getCandidateTypes(new RefactoringStatus(), new NullProgressMonitor());
}
@@ -1400,6 +1437,23 @@
fieldMethodHelper1(new String[]{"f"}, new String[]{"m"}, new String[][]{new String[0]}, true, false);
}
+ //---------------------------------------------------------
+ public void testFieldMethod1() throws Exception {
+ fieldMethodHelper2(new String[] { "c" }, new String[] {}, new String[][] { new String[0] }, true, false);
+ }
+
+ public void testFieldMethod2() throws Exception {
+ fieldMethodHelper2(new String[] { "c" }, new String[] {}, new String[][] { new String[0] }, true, false);
+ }
+
+ public void testFieldMethod3() throws Exception {
+ fieldMethodHelper2(new String[] { "c" }, new String[] {}, new String[][] { new String[0] }, true, false);
+ }
+
+ public void testFieldMethod4() throws Exception {
+ fieldMethodHelper2(new String[] { "c" }, new String[] {}, new String[][] { new String[0] }, true, false);
+ }
+
//----
public void testAddingRequiredMembers0() throws Exception{
String[] fieldNames= {};
diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java
index adfe8fa..0c9ff99 100644
--- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java
+++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/PullUpRefactoringProcessor.java
@@ -1188,25 +1188,40 @@
}
String sourcePackage= oldTypeBinding.getPackage() == null ? "" : oldTypeBinding.getPackage().getName(); //$NON-NLS-1$
String targetPackage= targetRewriter.getRoot().getPackage() == null ? "" : targetRewriter.getRoot().getPackage().getName().toString(); //$NON-NLS-1$
+ String targetTypeBinding= targetPackage + "." + oldTypeBinding.getName(); //$NON-NLS-1$
- if (sourcePackage.isEmpty() ^ targetPackage.isEmpty()) {
- // not one package can be default package, either none or both
- status.merge(RefactoringStatus.createErrorStatus(Messages.format(RefactoringCoreMessages.PullUpRefactoring_moving_fromto_default_package,
- new String[] { JavaElementLabels.getTextLabel(member, JavaElementLabels.ALL_FULLY_QUALIFIED) }), JavaStatusContext.create(member)));
- }
-
- if (!sourcePackage.isEmpty()) {
- Name newName= rewrite.getAST().newName(sourcePackage);
- SimpleName newSimpleName= rewrite.getAST().newSimpleName(oldTypeBinding.getName());
- SimpleType newSimpleType= null;
- if (targetPackage.equals(sourcePackage)) {
- // if source type is in same package as target then we don't need the fully qualified name
- newSimpleType= rewrite.getAST().newSimpleType(newSimpleName);
- } else {
- QualifiedName newQualifiedTypeName= rewrite.getAST().newQualifiedName(newName, newSimpleName);
- newSimpleType= rewrite.getAST().newSimpleType(newQualifiedTypeName);
+ // Find the same type-name field but fully qualified.
+ // In that case it won't shadow the pulled up field
+ boolean qualifiedTypeNameInTarget= true;
+ String sourceSignature= ((IField) member).getTypeSignature();
+ for (IField targetField : fDestinationType.getFields()) {
+ if (sourceSignature.equals(targetField.getTypeSignature())) {
+ qualifiedTypeNameInTarget= false;
+ break;
}
- newField.setType(newSimpleType);
+ }
+ //check if same type name is accessible in new package (targetPackage + <type>)
+ IType findTargetType= target.getJavaProject().findType(targetTypeBinding);
+ if (!qualifiedTypeNameInTarget && findTargetType != null) {
+ if (sourcePackage.isEmpty() ^ targetPackage.isEmpty()) {
+ // not one package can be default package, either none or both
+ status.merge(RefactoringStatus.createErrorStatus(Messages.format(RefactoringCoreMessages.PullUpRefactoring_moving_fromto_default_package,
+ new String[] { JavaElementLabels.getTextLabel(member, JavaElementLabels.ALL_FULLY_QUALIFIED) }), JavaStatusContext.create(member)));
+ }
+
+ if (!sourcePackage.isEmpty()) {
+ Name newName= rewrite.getAST().newName(sourcePackage);
+ SimpleName newSimpleName= rewrite.getAST().newSimpleName(oldTypeBinding.getName());
+ SimpleType newSimpleType= null;
+ if (targetPackage.equals(sourcePackage)) {
+ // if source type is in same package as target then we don't need the fully qualified name
+ newSimpleType= rewrite.getAST().newSimpleType(newSimpleName);
+ } else {
+ QualifiedName newQualifiedTypeName= rewrite.getAST().newQualifiedName(newName, newSimpleName);
+ newSimpleType= rewrite.getAST().newSimpleType(newQualifiedTypeName);
+ }
+ newField.setType(newSimpleType);
+ }
}
}
}