### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/DeltaProcessor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java,v retrieving revision 1.301.2.1 diff -u -r1.301.2.1 DeltaProcessor.java --- model/org/eclipse/jdt/internal/core/DeltaProcessor.java 26 Oct 2007 08:54:45 -0000 1.301.2.1 +++ model/org/eclipse/jdt/internal/core/DeltaProcessor.java 16 Jan 2008 14:44:05 -0000 @@ -2133,6 +2133,7 @@ Iterator iterator = rootList.iterator(); while (iterator.hasNext()) { childRootInfo = (RootInfo) iterator.next(); + this.currentElement = null; // ensure that 2 roots refering to the same resource don't share the current element (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=210746 ) this.traverseDelta(child, IJavaElement.PACKAGE_FRAGMENT_ROOT, childRootInfo, null); // binary output of childRootInfo.project cannot be this root } } #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java,v retrieving revision 1.117 diff -u -r1.117 ReconcilerTests.java --- src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java 27 Mar 2007 14:28:56 -0000 1.117 +++ src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java 16 Jan 2008 14:44:09 -0000 @@ -18,6 +18,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.ILogListener; import org.eclipse.core.runtime.IProgressMonitor; @@ -815,6 +816,60 @@ ); } /* + * Ensures that changing a binary folder used as class folder in 2 projects doesn't cause the old binary to be seen + * (regression test for https://bugs.eclipse.org/bugs/show_bug.cgi?id=210746 ) + */ +public void testChangeClassFolder() throws CoreException { + try { + createJavaProject("P1", new String[] {"src"}, new String[] {"JCL_LIB"}, "bin"); + createFolder("/P1/src/p"); + createFile( + "/P1/src/p/X.java", + "package p;\n" + + "public class X {\n" + + "}" + ); + getProject("P1").build(IncrementalProjectBuilder.FULL_BUILD, null); + createJavaProject("P2", new String[0], new String[] {"/P1/bin"}, "bin"); + createJavaProject("P3", new String[] {"src"}, new String[] {"JCL_LIB", "/P1/bin"}, "bin"); + setUpWorkingCopy( + "/P3/src/q/Y.java", + "package q;\n" + + "import p.X;\n" + + "public class Y {\n" + + " void foo(X x) {\n" + + " }\n"+ + "}" + ); + editFile( + "/P1/src/p/X.java", + "package p;\n" + + "public class X {\n" + + " public void bar() {\n" + + " }\n" + + "}" + ); + getProject("P1").build(IncrementalProjectBuilder.INCREMENTAL_BUILD, null); + setWorkingCopyContents( + "package q;\n" + + "import p.X;\n" + + "public class Y {\n" + + " void foo(X x) {\n" + + " x.bar();\n" + + " }\n"+ + "}" + ); + this.workingCopy.reconcile(ICompilationUnit.NO_AST, false, null, null); + assertProblems( + "Unexpected problems", + "----------\n" + + "----------\n" + ); + } finally { + deleteProjects(new String[] {"P1", "P2", "P3"}); + } +} +/* * Ensures that changing and external jar and refreshing takes the change into account * (regression test for bug 134110 [regression] Does not pick-up interface changes from classes in the build path) */