View | Details | Raw Unified | Return to bug 355605 | Differences between
and this patch

Collapse All | Expand All

(-)model/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java (+2 lines)
Lines 846-851 Link Here
846
					char[][] memberTypeNames = CharOperation.splitOn('$', typeName, firstDollar+1, typeName.length);
846
					char[][] memberTypeNames = CharOperation.splitOn('$', typeName, firstDollar+1, typeName.length);
847
					for (int i = 0; i < memberTypeNames.length; i++) {
847
					for (int i = 0; i < memberTypeNames.length; i++) {
848
						this.focusType = this.focusType.getMemberType(memberTypeNames[i]);
848
						this.focusType = this.focusType.getMemberType(memberTypeNames[i]);
849
						if (this.focusType == null)
850
							return this.focusType;
849
					}
851
					}
850
				}
852
				}
851
			}
853
			}
(-)src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java (+41 lines)
Lines 710-715 Link Here
710
	suite.addTest(new JavaSearchBugsTests("testBug350885"));
710
	suite.addTest(new JavaSearchBugsTests("testBug350885"));
711
	suite.addTest(new JavaSearchBugsTests("testBug349683"));
711
	suite.addTest(new JavaSearchBugsTests("testBug349683"));
712
	suite.addTest(new JavaSearchBugsTests("testBug345807"));
712
	suite.addTest(new JavaSearchBugsTests("testBug345807"));
713
	suite.addTest(new JavaSearchBugsTests("testBug355605"));
713
	return suite;
714
	return suite;
714
}
715
}
715
class TestCollector extends JavaSearchResultCollector {
716
class TestCollector extends JavaSearchResultCollector {
Lines 13713-13716 Link Here
13713
		deleteProject("Project2");
13714
		deleteProject("Project2");
13714
	}
13715
	}
13715
}
13716
}
13717
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=355605
13718
public void testBug355605() throws CoreException {
13719
	try {
13720
	IJavaProject project = createJavaProject("P");
13721
13722
		String fileContent = 				
13723
			"public class X { \n" 
13724
			+ "class R {\n"
13725
			+ "   class S {\n" 
13726
			+ "   	void setInfo(String x) {\n"
13727
			+ "   	}\n" 
13728
			+ "   }\n"
13729
			+ "   class T {\n"
13730
			+ "   }\n"
13731
			+ "	T t = new T()  {\n" 
13732
			+ "		S s = new S() {\n"
13733
			+ "           void myMethod() {\n"
13734
			+ "               setInfo(\"a\");\n" 
13735
			+ "           }\n"
13736
			+ "      };// S ends\n"
13737
			+ "   };\n" 
13738
			+ "}\n" 
13739
			+ "}\n" ;
13740
		createFile("/P/X.java", fileContent);
13741
		
13742
		waitUntilIndexesReady();
13743
		this.resultCollector = new TestCollector();
13744
		this.resultCollector.showAccuracy(true);
13745
		IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[]{project}, IJavaSearchScope.SOURCES);
13746
		search("setInfo", METHOD, IMPLEMENTORS, EXACT_RULE, scope, this.resultCollector);
13747
		IMethod method = (IMethod) ((SearchMatch)((TestCollector)this.resultCollector).matches.get(0)).getElement();
13748
		this.resultCollector = new TestCollector();
13749
		IJavaSearchScope hierarchyScope = SearchEngine.createHierarchyScope((IType)method.getParent());
13750
		search(method, IMPLEMENTORS, ERASURE_RULE, hierarchyScope, this.resultCollector);
13751
		assertSearchResults("Unexpected search results!", "X.java void X$R.t:<anonymous>#1.s:<anonymous>#1.myMethod() [myMethod]", this.resultCollector);
13752
		
13753
	} finally {
13754
		deleteProject("P");
13755
	}
13756
}
13716
}
13757
}

Return to bug 355605