diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java index 2ddcd75..e197960 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java @@ -34,7 +34,7 @@ // All specified tests which do not belong to the class are skipped... static { // TESTS_PREFIX = "testBug100772_ProjectScope"; -// TESTS_NAMES = new String[] { "testAddInvalidSubfolder" }; +// TESTS_NAMES = new String[] { "testBug362711" }; // TESTS_NUMBERS = new int[] { 100772 }; // TESTS_RANGE = new int[] { 83304, -1 }; } @@ -3053,5 +3053,33 @@ deleteProject("P"); } } +/** + * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=362711" + */ +public void testBug362711() throws Exception { + try { + createJavaProject("P", new String[] { "src" }, "bin"); + createJavaProject("Q", new String[] { "src" }, "bin"); + + createFile("/P/src/Foo.java", "public class Foo {\n" + + "private int id;\n" + "}"); + createFile("/Q/src/Foo.java", "public class Foo {\n" + "}"); + + startDeltas(); + ICompilationUnit cu = getCompilationUnit("P/src/Foo.java"); + IPackageFragment dest = getPackageFragment("Q", "src", ""); + cu.copy(dest, null, null, true, null); + assertDeltas("Unexpected delta", + "Q[*]: {CHILDREN}\n" + + " src[*]: {CHILDREN}\n" + + " [*]: {CHILDREN}\n" + + " Foo.java[*]: {CONTENT | PRIMARY RESOURCE}"); + + } finally { + stopDeltas(); + deleteProject("P"); + deleteProject("Q"); + } +} } diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java index 291378c..60e848d 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java @@ -317,6 +317,7 @@ if (this.force) { // we can remove it deleteResource(destFile, IResource.KEEP_HISTORY); + getDeltaFor(dest.getJavaProject()).removed(destCU); destCU.close(); // ensure the in-memory buffer for the dest CU is closed } else { // abort