### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java,v retrieving revision 1.76.2.2 diff -u -r1.76.2.2 JavaSearchBugsTests.java --- src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 31 May 2006 17:39:26 -0000 1.76.2.2 +++ src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 23 Jun 2006 10:54:00 -0000 @@ -6638,4 +6638,55 @@ "lib/b140156.jar void X.foo(List) [No source] EXACT_MATCH" ); } + +/** + * Bug 148215: [search] correct results are missing in java search + * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=148215" + */ +public void testBug148215_Types() throws CoreException { + addLibraryEntry(JAVA_PROJECT, "/JavaSearchBugs/lib/b148215.jar", false); + try { + IType type = getClassFile("JavaSearchBugs", "lib/b148215.jar", "test.pack", "Test.class").getType(); + IMethod method = type.getMethods()[1]; + searchDeclarationsOfReferencedTypes(method, this.resultCollector); + assertSearchResults( + ""+ getExternalJCLPathString("1.5") + " java.lang.Object EXACT_MATCH\n" + + ""+ getExternalJCLPathString("1.5") + " java.lang.String EXACT_MATCH\n" + + "lib/b148215.jar test.def.Reference EXACT_MATCH" + ); + } + finally { + removeLibraryEntry(JAVA_PROJECT, new Path("/JavaSearchBugs/lib/b148215.jar")); + } +} +public void testBug148215_Messages() throws CoreException { + addLibraryEntry(JAVA_PROJECT, "/JavaSearchBugs/lib/b148215.jar", false); + try { + IType type = getClassFile("JavaSearchBugs", "lib/b148215.jar", "test.pack", "Test.class").getType(); + IMethod method = type.getMethods()[1]; + searchDeclarationsOfSentMessages(method, this.resultCollector); + assertSearchResults( + "lib/b148215.jar void test.pack.Test.bar(java.lang.String) EXACT_MATCH\n" + + "lib/b148215.jar void test.pack.Test.bar(test.def.Reference) EXACT_MATCH" + ); + } + finally { + removeLibraryEntry(JAVA_PROJECT, new Path("/JavaSearchBugs/lib/b148215.jar")); + } +} +public void testBug148215_Fields() throws CoreException { + addLibraryEntry(JAVA_PROJECT, "/JavaSearchBugs/lib/b148215.jar", false); + try { + IType type = getClassFile("JavaSearchBugs", "lib/b148215.jar", "test.pack", "Test.class").getType(); + IMethod method = type.getMethods()[1]; + searchDeclarationsOfAccessedFields(method, this.resultCollector); + assertSearchResults( + "lib/b148215.jar test.pack.Test.sField EXACT_MATCH\n" + + "lib/b148215.jar test.pack.Test.rField EXACT_MATCH" + ); + } + finally { + removeLibraryEntry(JAVA_PROJECT, new Path("/JavaSearchBugs/lib/b148215.jar")); + } +} } #P org.eclipse.jdt.core Index: search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java,v retrieving revision 1.34 diff -u -r1.34 BasicSearchEngine.java --- search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java 18 Apr 2006 16:28:18 -0000 1.34 +++ search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java 23 Jun 2006 10:54:04 -0000 @@ -319,20 +319,7 @@ } return this.parser; } - - /* - * Returns the underlying resource of the given element. - */ - private IResource getResource(IJavaElement element) { - if (element instanceof IMember) { - ICompilationUnit cu = ((IMember)element).getCompilationUnit(); - if (cu != null) { - return cu.getResource(); - } - } - return element.getResource(); - } - + /* * Returns the list of working copies used by this search engine. * Returns null if none. @@ -1091,7 +1078,18 @@ Util.verbose(" - java element: "+enclosingElement); //$NON-NLS-1$ } IJavaSearchScope scope = createJavaSearchScope(new IJavaElement[] {enclosingElement}); - IResource resource = this.getResource(enclosingElement); + IResource resource = enclosingElement.getResource(); + if (enclosingElement instanceof IMember) { + IMember member = (IMember) enclosingElement; + ICompilationUnit cu = member.getCompilationUnit(); + if (cu != null) { + resource = cu.getResource(); + } else if (member.isBinary()) { + // binary member resource cannot be used as this + // see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=148215 + resource = null; + } + } try { if (resource instanceof IFile) { try {