### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/SelectionRequestor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SelectionRequestor.java,v retrieving revision 1.80 diff -u -r1.80 SelectionRequestor.java --- model/org/eclipse/jdt/internal/core/SelectionRequestor.java 28 Feb 2011 08:55:13 -0000 1.80 +++ model/org/eclipse/jdt/internal/core/SelectionRequestor.java 5 Sep 2011 10:48:42 -0000 @@ -341,7 +341,7 @@ } } public void acceptLocalMethod(MethodBinding methodBinding) { - IJavaElement res = findLocalElement(methodBinding.sourceStart()); + IJavaElement res = findLocalElement(methodBinding.original().sourceStart()); if(res != null) { if(res.getElementType() == IJavaElement.METHOD) { IMethod method = (IMethod) res; #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/ResolveTests2.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ResolveTests2.java,v retrieving revision 1.6 diff -u -r1.6 ResolveTests2.java --- src/org/eclipse/jdt/core/tests/model/ResolveTests2.java 28 Jul 2011 17:06:05 -0000 1.6 +++ src/org/eclipse/jdt/core/tests/model/ResolveTests2.java 5 Sep 2011 10:48:43 -0000 @@ -1203,4 +1203,48 @@ this.deleteProject("P1"); } } +public void testBug356325() throws Exception{ + try { + // create P1 + this.createJavaProject( + "P1", + new String[]{"src"}, + new String[]{"JCL15_LIB"}, + "bin", + "1.5"); + + this.createFolder("/P1/src/p"); + this.createFile("/P1/src/p/C.java", + "package p;" + + "\n" + + "public class C {\n" + + " public void m() {\n" + + " class Inner {\n" + + " Inner() {\n"+ + " }\n"+ + " Inner i = new Inner();\n"+ + " }\n" + + "}\n"); + + waitUntilIndexesReady(); + + // do code select + ICompilationUnit cu= getCompilationUnit("P1", "src", "p", "C.java"); + + String str = cu.getSource(); + + String selection = "Inner"; + int start = str.lastIndexOf(selection); + int length = selection.length(); + IJavaElement[] elements = cu.codeSelect(start, length); + + assertElementsEqual( + "Unexpected elements", + "Inner() [in Inner [in m() [in C [in C.java [in p [in src [in P1]]]]]]]", + elements + ); + } finally { + this.deleteProject("P1"); + } +} }