### 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.70 diff -u -r1.70 JavaSearchBugsTests.java --- src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 11 Apr 2006 06:21:11 -0000 1.70 +++ src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 12 Apr 2006 08:18:14 -0000 @@ -42,16 +42,10 @@ public static Test suite() { return buildModelTestSuite(JavaSearchBugsTests.class); } -// Use this static initializer to specify subset for tests -// All specified tests which do not belong to the class are skipped... static { // org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true; // org.eclipse.jdt.internal.codeassist.SelectionEngine.DEBUG = true; -// TESTS_PREFIX = "testBug110060"; -// TESTS_NAMES = new String[] { "testBug126330" }; -// TESTS_NUMBERS = new int[] { 110060, 130390 }; -// TESTS_RANGE = new int[] { 83304, -1 }; - } +} class TestCollector extends JavaSearchResultCollector { public List matches = new ArrayList(); @@ -5804,6 +5798,52 @@ "" // expected no result as parameters annotations are not stored in class file ); } +/** + * @test Bug 124645: [search] for implementors does not find subclasses of binary classes + * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124645" + */ +public void testBug124645a() throws CoreException { + IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "xy", "BE_124645.class"); + IType type = classFile.getType(); + search(type, IMPLEMENTORS); + assertSearchResults( + "src/b124645/xy/X_124645.java b124645.xy.X_124645$Y [BE_124645] EXACT_MATCH\n" + + "src/b124645/xy/Y_124645.java b124645.xy.Y_124645 [BE_124645] EXACT_MATCH\n" + + "lib/b124645.jar xy.BX_124645$Y EXACT_MATCH\n" + + "lib/b124645.jar xy.BY_124645 EXACT_MATCH" + ); +} +public void testBug124645b() throws CoreException { + IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "test", "BE_124645.class"); + IType type = classFile.getType(); + search(type, IMPLEMENTORS); + assertSearchResults( + "src/b124645/test/A_124645.java b124645.test.A_124645 [BE_124645] EXACT_MATCH\n" + + "src/b124645/test/A_124645.java void b124645.test.A_124645.m():#1 [BE_124645] EXACT_MATCH\n" + + "src/b124645/test/X_124645.java b124645.test.X_124645 [BE_124645] EXACT_MATCH\n" + + "src/b124645/test/X_124645.java void b124645.test.X_124645.m():Y_124645#1 [BE_124645] EXACT_MATCH\n" + + "lib/b124645.jar test.BA_124645 EXACT_MATCH\n" + + "lib/b124645.jar test. EXACT_MATCH\n" + + "lib/b124645.jar test.BX_124645 EXACT_MATCH\n" + + "lib/b124645.jar test.Y EXACT_MATCH" + ); +} +public void testBug124645c() throws CoreException { + IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "", "BC_124645.class"); + IType type = classFile.getType(); + search(type, IMPLEMENTORS); + assertSearchResults( + "lib/b124645.jar EXACT_MATCH" + ); +} +public void testBug124645d() throws CoreException { + IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "", "BI_124645.class"); + IType type = classFile.getType(); + search(type, IMPLEMENTORS); + assertSearchResults( + "lib/b124645.jar EXACT_MATCH" + ); +} /** * Bug 125178: [search] AIOOBE in PatternLocator when searching for dependency extent from manifest Index: src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java,v retrieving revision 1.150 diff -u -r1.150 JavaSearchTests.java --- src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java 9 Apr 2006 16:45:43 -0000 1.150 +++ src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java 12 Apr 2006 08:18:17 -0000 @@ -963,8 +963,11 @@ "src/p/X.java p.X [I]", this.resultCollector); - // implementors of a class should give no match - // (regression test for 1G5HBQA: ITPJUI:WINNT - Search - search for implementors of a class finds subclasses) + /** + * Implementors of a class should now give a match + * Bug 1G5HBQA: "ITPJUI:WINNT - Search - search for implementors of a class finds subclasses" is cancelled + * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124645" + */ type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); resultCollector = new JavaSearchResultCollector(); search( @@ -973,7 +976,7 @@ getJavaSearchScope(), this.resultCollector); assertSearchResults( - "", + "src/p/Y.java p.Y [X]", this.resultCollector); } /** @@ -1089,7 +1092,7 @@ * (regression test for bug 48725 Cannot search for local vars in jars.) */ public void testLocalVariableReference3() throws CoreException { - IClassFile classFile = getClassFile("JavaSearch", "test48725.jar", "p", "X.class"); + IClassFile classFile = getClassFile("JavaSearch", "test48725.jar", "p48725", "X.class"); ILocalVariable localVar = (ILocalVariable) codeSelect(classFile, "local = 1;", "local")[0]; search( localVar, @@ -1097,7 +1100,7 @@ getJavaSearchScope(), this.resultCollector); assertSearchResults( - "test48725.jar int p..bar()", + "test48725.jar int p48725..bar()", this.resultCollector); } /** Index: workspace/JavaSearchBugs/.classpath =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/workspace/JavaSearchBugs/.classpath,v retrieving revision 1.12 diff -u -r1.12 .classpath --- workspace/JavaSearchBugs/.classpath 9 Apr 2006 16:45:43 -0000 1.12 +++ workspace/JavaSearchBugs/.classpath 12 Apr 2006 08:18:17 -0000 @@ -8,6 +8,7 @@ + Index: workspace/JavaSearchBugs/src/b124645/xy/Y_124645.java =================================================================== RCS file: workspace/JavaSearchBugs/src/b124645/xy/Y_124645.java diff -N workspace/JavaSearchBugs/src/b124645/xy/Y_124645.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ workspace/JavaSearchBugs/src/b124645/xy/Y_124645.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,4 @@ +package b124645.xy; +import xy.BE_124645; +public class Y_124645 extends BE_124645 { +} Index: workspace/JavaSearchBugs/src/b124645/xy/X_124645.java =================================================================== RCS file: workspace/JavaSearchBugs/src/b124645/xy/X_124645.java diff -N workspace/JavaSearchBugs/src/b124645/xy/X_124645.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ workspace/JavaSearchBugs/src/b124645/xy/X_124645.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,5 @@ +package b124645.xy; +import xy.BE_124645; +public class X_124645 { + class Y extends BE_124645 {} +} Index: workspace/JavaSearchBugs/src/b124645/test/X_124645.java =================================================================== RCS file: workspace/JavaSearchBugs/src/b124645/test/X_124645.java diff -N workspace/JavaSearchBugs/src/b124645/test/X_124645.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ workspace/JavaSearchBugs/src/b124645/test/X_124645.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,7 @@ +package b124645.test; +import test.BE_124645; +public class X_124645 extends BE_124645 { + void m() { + class Y_124645 extends BE_124645 {} + } +} Index: workspace/JavaSearchBugs/src/b124645/test/A_124645.java =================================================================== RCS file: workspace/JavaSearchBugs/src/b124645/test/A_124645.java diff -N workspace/JavaSearchBugs/src/b124645/test/A_124645.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ workspace/JavaSearchBugs/src/b124645/test/A_124645.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,7 @@ +package b124645.test; +import test.BE_124645; +public class A_124645 extends BE_124645 { + void m() { + new BE_124645() { /* anonymous */ }; + } +} Index: workspace/JavaSearchBugs/src/b124645/T_124645.java =================================================================== RCS file: workspace/JavaSearchBugs/src/b124645/T_124645.java diff -N workspace/JavaSearchBugs/src/b124645/T_124645.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ workspace/JavaSearchBugs/src/b124645/T_124645.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,10 @@ +package b124645; +class C_124645 {} +interface I_124645 {} + +public class T_124645 { + void m() { + new C_124645() {}; + new I_124645() {}; + } +} #P org.eclipse.jdt.core Index: search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java,v retrieving revision 1.57 diff -u -r1.57 SuperTypeReferencePattern.java --- search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java 29 Mar 2006 03:13:59 -0000 1.57 +++ search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java 12 Apr 2006 08:18:18 -0000 @@ -231,8 +231,6 @@ } public boolean matchesDecodedKey(SearchPattern decodedPattern) { SuperTypeReferencePattern pattern = (SuperTypeReferencePattern) decodedPattern; - if (this.superRefKind == ONLY_SUPER_INTERFACES) - if (pattern.superClassOrInterface != IIndexConstants.INTERFACE_SUFFIX) return false; if (this.superRefKind == ONLY_SUPER_CLASSES && pattern.enclosingTypeName != IIndexConstants.ONE_ZERO/*not an anonymous*/) // consider enumerations as classes, reject interfaces and annotations if (pattern.superClassOrInterface == IIndexConstants.INTERFACE_SUFFIX