View | Details | Raw Unified | Return to bug 124645
Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java (-7 / +47 lines)
Lines 42-57 Link Here
42
public static Test suite() {
42
public static Test suite() {
43
	return buildModelTestSuite(JavaSearchBugsTests.class);
43
	return buildModelTestSuite(JavaSearchBugsTests.class);
44
}
44
}
45
// Use this static initializer to specify subset for tests
46
// All specified tests which do not belong to the class are skipped...
47
static {
45
static {
48
//	org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
46
//	org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
49
//	org.eclipse.jdt.internal.codeassist.SelectionEngine.DEBUG = true;
47
//	org.eclipse.jdt.internal.codeassist.SelectionEngine.DEBUG = true;
50
//	TESTS_PREFIX =  "testBug110060";
48
}
51
//	TESTS_NAMES = new String[] { "testBug126330" };
52
//	TESTS_NUMBERS = new int[] { 110060, 130390 };
53
//	TESTS_RANGE = new int[] { 83304, -1 };
54
	}
55
49
56
class TestCollector extends JavaSearchResultCollector {
50
class TestCollector extends JavaSearchResultCollector {
57
	public List matches = new ArrayList();
51
	public List matches = new ArrayList();
Lines 5804-5809 Link Here
5804
		"" // expected no result as parameters annotations are not stored in class file
5798
		"" // expected no result as parameters annotations are not stored in class file
5805
	);
5799
	);
5806
}
5800
}
5801
/**
5802
 * @test Bug 124645: [search] for implementors does not find subclasses of binary classes
5803
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124645"
5804
 */
5805
public void testBug124645a() throws CoreException {
5806
	IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "xy", "BE_124645.class");
5807
	IType type = classFile.getType();
5808
	search(type, IMPLEMENTORS);
5809
	assertSearchResults(
5810
		"src/b124645/xy/X_124645.java b124645.xy.X_124645$Y [BE_124645] EXACT_MATCH\n" + 
5811
		"src/b124645/xy/Y_124645.java b124645.xy.Y_124645 [BE_124645] EXACT_MATCH\n" + 
5812
		"lib/b124645.jar xy.BX_124645$Y EXACT_MATCH\n" + 
5813
		"lib/b124645.jar xy.BY_124645 EXACT_MATCH"
5814
	);
5815
}
5816
public void testBug124645b() throws CoreException {
5817
	IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "test", "BE_124645.class");
5818
	IType type = classFile.getType();
5819
	search(type, IMPLEMENTORS);
5820
	assertSearchResults(
5821
		"src/b124645/test/A_124645.java b124645.test.A_124645 [BE_124645] EXACT_MATCH\n" + 
5822
		"src/b124645/test/A_124645.java void b124645.test.A_124645.m():<anonymous>#1 [BE_124645] EXACT_MATCH\n" + 
5823
		"src/b124645/test/X_124645.java b124645.test.X_124645 [BE_124645] EXACT_MATCH\n" + 
5824
		"src/b124645/test/X_124645.java void b124645.test.X_124645.m():Y_124645#1 [BE_124645] EXACT_MATCH\n" + 
5825
		"lib/b124645.jar test.BA_124645 EXACT_MATCH\n" + 
5826
		"lib/b124645.jar test.<anonymous> EXACT_MATCH\n" + 
5827
		"lib/b124645.jar test.BX_124645 EXACT_MATCH\n" + 
5828
		"lib/b124645.jar test.Y EXACT_MATCH"
5829
	);
5830
}
5831
public void testBug124645c() throws CoreException {
5832
	IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "", "BC_124645.class");
5833
	IType type = classFile.getType();
5834
	search(type, IMPLEMENTORS);
5835
	assertSearchResults(
5836
		"lib/b124645.jar <anonymous> EXACT_MATCH"
5837
	);
5838
}
5839
public void testBug124645d() throws CoreException {
5840
	IClassFile classFile = getClassFile("JavaSearchBugs", "lib/b124645.jar", "", "BI_124645.class");
5841
	IType type = classFile.getType();
5842
	search(type, IMPLEMENTORS);
5843
	assertSearchResults(
5844
		"lib/b124645.jar <anonymous> EXACT_MATCH"
5845
	);
5846
}
5807
5847
5808
/**
5848
/**
5809
 * Bug 125178: [search] AIOOBE in PatternLocator when searching for dependency extent from manifest
5849
 * Bug 125178: [search] AIOOBE in PatternLocator when searching for dependency extent from manifest
(-)src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java (-5 / +8 lines)
Lines 963-970 Link Here
963
		"src/p/X.java p.X [I]", 
963
		"src/p/X.java p.X [I]", 
964
		this.resultCollector);
964
		this.resultCollector);
965
965
966
	// implementors of a class should give no match
966
	/**
967
	// (regression test for 1G5HBQA: ITPJUI:WINNT - Search - search for implementors of a class finds subclasses)
967
	 * Implementors of a class should now give a match
968
	 * Bug 1G5HBQA: "ITPJUI:WINNT - Search - search for implementors of a class finds subclasses" is cancelled
969
	 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124645"
970
	 */
968
	type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
971
	type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
969
	resultCollector = new JavaSearchResultCollector();
972
	resultCollector = new JavaSearchResultCollector();
970
	search(
973
	search(
Lines 973-979 Link Here
973
		getJavaSearchScope(), 
976
		getJavaSearchScope(), 
974
		this.resultCollector);
977
		this.resultCollector);
975
	assertSearchResults(
978
	assertSearchResults(
976
		"", 
979
		"src/p/Y.java p.Y [X]",
977
		this.resultCollector);	
980
		this.resultCollector);	
978
}
981
}
979
/**
982
/**
Lines 1089-1095 Link Here
1089
 * (regression test for bug 48725 Cannot search for local vars in jars.)
1092
 * (regression test for bug 48725 Cannot search for local vars in jars.)
1090
 */
1093
 */
1091
public void testLocalVariableReference3() throws CoreException {
1094
public void testLocalVariableReference3() throws CoreException {
1092
    IClassFile classFile = getClassFile("JavaSearch", "test48725.jar", "p", "X.class");
1095
    IClassFile classFile = getClassFile("JavaSearch", "test48725.jar", "p48725", "X.class");
1093
	ILocalVariable localVar = (ILocalVariable) codeSelect(classFile, "local = 1;", "local")[0];
1096
	ILocalVariable localVar = (ILocalVariable) codeSelect(classFile, "local = 1;", "local")[0];
1094
	search(
1097
	search(
1095
		localVar, 
1098
		localVar, 
Lines 1097-1103 Link Here
1097
		getJavaSearchScope(), 
1100
		getJavaSearchScope(), 
1098
		this.resultCollector);
1101
		this.resultCollector);
1099
	assertSearchResults(
1102
	assertSearchResults(
1100
		"test48725.jar int p.<anonymous>.bar()",
1103
		"test48725.jar int p48725.<anonymous>.bar()",
1101
		this.resultCollector);
1104
		this.resultCollector);
1102
}
1105
}
1103
/**
1106
/**
(-)workspace/JavaSearchBugs/.classpath (+1 lines)
Lines 8-13 Link Here
8
	<classpathentry kind="lib" path="lib/b87627.jar" sourcepath="/JavaSearchBugs/lib/b87627.jar" rootpath=""/>
8
	<classpathentry kind="lib" path="lib/b87627.jar" sourcepath="/JavaSearchBugs/lib/b87627.jar" rootpath=""/>
9
	<classpathentry kind="lib" path="lib/b110422.jar" sourcepath="" rootpath=""/>
9
	<classpathentry kind="lib" path="lib/b110422.jar" sourcepath="" rootpath=""/>
10
	<classpathentry kind="lib" path="lib/b124469.jar" sourcepath="/JavaSearchBugs/lib/b124469.jar" rootpath=""/>
10
	<classpathentry kind="lib" path="lib/b124469.jar" sourcepath="/JavaSearchBugs/lib/b124469.jar" rootpath=""/>
11
	<classpathentry kind="lib" path="lib/b124645.jar"/>
11
	<classpathentry kind="lib" path="lib/b125178.jar" sourcepath="" rootpath=""/>
12
	<classpathentry kind="lib" path="lib/b125178.jar" sourcepath="" rootpath=""/>
12
	<classpathentry kind="lib" path="lib/b126330.jar"/>
13
	<classpathentry kind="lib" path="lib/b126330.jar"/>
13
	<classpathentry kind="lib" path="lib/b128877.jar" sourcepath="/JavaSearchBugs/lib/b128877.jar" rootpath=""/>
14
	<classpathentry kind="lib" path="lib/b128877.jar" sourcepath="/JavaSearchBugs/lib/b128877.jar" rootpath=""/>
(-)workspace/JavaSearchBugs/src/b124645/xy/Y_124645.java (+4 lines)
Added Link Here
1
package b124645.xy;
2
import xy.BE_124645;
3
public class Y_124645 extends BE_124645 { 
4
}
(-)workspace/JavaSearchBugs/src/b124645/xy/X_124645.java (+5 lines)
Added Link Here
1
package b124645.xy;
2
import xy.BE_124645;
3
public class X_124645 { 
4
	class Y extends BE_124645 {}
5
}
(-)workspace/JavaSearchBugs/src/b124645/test/X_124645.java (+7 lines)
Added Link Here
1
package b124645.test;
2
import test.BE_124645;
3
public class X_124645 extends BE_124645 { 
4
    void m() {
5
    	class Y_124645 extends BE_124645 {}
6
    }
7
}
(-)workspace/JavaSearchBugs/src/b124645/test/A_124645.java (+7 lines)
Added Link Here
1
package b124645.test;
2
import test.BE_124645;
3
public class A_124645 extends BE_124645 { 
4
    void m() {
5
        new BE_124645() { /* anonymous */ }; 
6
    }
7
}
(-)workspace/JavaSearchBugs/src/b124645/T_124645.java (+10 lines)
Added Link Here
1
package b124645;
2
class C_124645 {}
3
interface I_124645 {}
4
5
public class T_124645 {
6
    void m() {
7
        new C_124645() {};
8
        new I_124645() {};
9
    }
10
}
(-)search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java (-2 lines)
Lines 231-238 Link Here
231
}
231
}
232
public boolean matchesDecodedKey(SearchPattern decodedPattern) {
232
public boolean matchesDecodedKey(SearchPattern decodedPattern) {
233
	SuperTypeReferencePattern pattern = (SuperTypeReferencePattern) decodedPattern;
233
	SuperTypeReferencePattern pattern = (SuperTypeReferencePattern) decodedPattern;
234
	if (this.superRefKind == ONLY_SUPER_INTERFACES)
235
		if (pattern.superClassOrInterface != IIndexConstants.INTERFACE_SUFFIX) return false;
236
	if (this.superRefKind == ONLY_SUPER_CLASSES && pattern.enclosingTypeName != IIndexConstants.ONE_ZERO/*not an anonymous*/) 
234
	if (this.superRefKind == ONLY_SUPER_CLASSES && pattern.enclosingTypeName != IIndexConstants.ONE_ZERO/*not an anonymous*/) 
237
		// consider enumerations as classes, reject interfaces and annotations
235
		// consider enumerations as classes, reject interfaces and annotations
238
		if (pattern.superClassOrInterface == IIndexConstants.INTERFACE_SUFFIX 
236
		if (pattern.superClassOrInterface == IIndexConstants.INTERFACE_SUFFIX 

Return to bug 124645