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

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java (-2267 / +2343 lines)
Lines 37-43 Link Here
37
 */
37
 */
38
public class JavaSearchBugsTests extends AbstractJavaSearchTests implements IJavaSearchConstants {
38
public class JavaSearchBugsTests extends AbstractJavaSearchTests implements IJavaSearchConstants {
39
	private final static int UI_DECLARATIONS = DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE;
39
	private final static int UI_DECLARATIONS = DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE;
40
	
40
41
public JavaSearchBugsTests(String name) {
41
public JavaSearchBugsTests(String name) {
42
	super(name);
42
	super(name);
43
	this.endChar = "";
43
	this.endChar = "";
Lines 141-159 Link Here
141
	workingCopies = new ICompilationUnit[1];
141
	workingCopies = new ICompilationUnit[1];
142
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b41018/A.java",
142
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b41018/A.java",
143
		"package b41018;\n" +
143
		"package b41018;\n" +
144
		"public class A {\n" + 
144
		"public class A {\n" +
145
		"	protected void anotherMethod() {\n" + 
145
		"	protected void anotherMethod() {\n" +
146
		"		methodA(null);\n" + 
146
		"		methodA(null);\n" +
147
		"	}\n" + 
147
		"	}\n" +
148
		"	private Object methodA(ClassB.InnerInterface arg3) {\n" + 
148
		"	private Object methodA(ClassB.InnerInterface arg3) {\n" +
149
		"		return null;\n" + 
149
		"		return null;\n" +
150
		"	}\n" + 
150
		"	}\n" +
151
		"}\n" + 
151
		"}\n" +
152
		"class ClassB implements InterfaceB {\n" + 
152
		"class ClassB implements InterfaceB {\n" +
153
		"}\n" + 
153
		"}\n" +
154
		"interface InterfaceB {\n" + 
154
		"interface InterfaceB {\n" +
155
		"	interface InnerInterface {\n" + 
155
		"	interface InnerInterface {\n" +
156
		"	}\n" + 
156
		"	}\n" +
157
		"}\n"
157
		"}\n"
158
		);
158
		);
159
	IType type = workingCopies[0].getType("A");
159
	IType type = workingCopies[0].getType("A");
Lines 171-188 Link Here
171
public void testBug70827() throws CoreException {
171
public void testBug70827() throws CoreException {
172
	workingCopies = new ICompilationUnit[1];
172
	workingCopies = new ICompilationUnit[1];
173
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b70827/A.java",
173
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b70827/A.java",
174
		"package b70827;\n" + 
174
		"package b70827;\n" +
175
		"class A {\n" + 
175
		"class A {\n" +
176
		"	private void privateMethod() {\n" + 
176
		"	private void privateMethod() {\n" +
177
		"	}\n" + 
177
		"	}\n" +
178
		"}\n" + 
178
		"}\n" +
179
		"class Second extends A {\n" + 
179
		"class Second extends A {\n" +
180
		"	void call() {\n" + 
180
		"	void call() {\n" +
181
		"		int i= privateMethod();\n" + 
181
		"		int i= privateMethod();\n" +
182
		"	}\n" + 
182
		"	}\n" +
183
		"	int privateMethod() {\n" + 
183
		"	int privateMethod() {\n" +
184
		"		return 1;\n" + 
184
		"		return 1;\n" +
185
		"	}\n" + 
185
		"	}\n" +
186
		"}\n"
186
		"}\n"
187
		);
187
		);
188
	IType type = workingCopies[0].getType("A");
188
	IType type = workingCopies[0].getType("A");
Lines 208-221 Link Here
208
	};
208
	};
209
	workingCopies = new ICompilationUnit[1];
209
	workingCopies = new ICompilationUnit[1];
210
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b71279/AA.java",
210
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b71279/AA.java",
211
		"package b71279;\n" + 
211
		"package b71279;\n" +
212
		"public class AA {\n" + 
212
		"public class AA {\n" +
213
		"	Unknown ref;\n" + 
213
		"	Unknown ref;\n" +
214
		"}\n"
214
		"}\n"
215
		);
215
		);
216
	new SearchEngine(workingCopies).searchDeclarationsOfReferencedTypes(workingCopies[0], result, null);
216
	new SearchEngine(workingCopies).searchDeclarationsOfReferencedTypes(workingCopies[0], result, null);
217
	assertSearchResults(
217
	assertSearchResults(
218
		"Starting search...\n" + 
218
		"Starting search...\n" +
219
		"Done searching.",
219
		"Done searching.",
220
		result);
220
		result);
221
}
221
}
Lines 228-263 Link Here
228
	workingCopies = new ICompilationUnit[4];
228
	workingCopies = new ICompilationUnit[4];
229
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
229
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
230
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b72866/A.java",
230
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b72866/A.java",
231
		"package b72866;\n" + 
231
		"package b72866;\n" +
232
		"public abstract class A {\n" + 
232
		"public abstract class A {\n" +
233
		"	public abstract void foo(V v);\n" + 
233
		"	public abstract void foo(V v);\n" +
234
		"}\n",
234
		"}\n",
235
		owner
235
		owner
236
	);
236
	);
237
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b72866/SX.java",
237
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b72866/SX.java",
238
		"package b72866;\n" + 
238
		"package b72866;\n" +
239
		"public class SX extends A {\n" + 
239
		"public class SX extends A {\n" +
240
		"	public void foo(V v) {\n" + 
240
		"	public void foo(V v) {\n" +
241
		"	    v.bar(this);\n" + 
241
		"	    v.bar(this);\n" +
242
		"	}\n" + 
242
		"	}\n" +
243
		"}\n"	,
243
		"}\n"	,
244
		owner
244
		owner
245
	);
245
	);
246
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b72866/V.java",
246
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b72866/V.java",
247
		"package b72866;\n" + 
247
		"package b72866;\n" +
248
		"public class V {\n" + 
248
		"public class V {\n" +
249
		"	void bar(A a) {}\n" + 
249
		"	void bar(A a) {}\n" +
250
		"	void bar(X x) {}\n" + 
250
		"	void bar(X x) {}\n" +
251
		"	void bar(SX s) {}\n" + 
251
		"	void bar(SX s) {}\n" +
252
		"}\n"	,
252
		"}\n"	,
253
		owner
253
		owner
254
	);
254
	);
255
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b72866/X.java",
255
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b72866/X.java",
256
		"package b72866;\n" + 
256
		"package b72866;\n" +
257
		"public class X extends A {\n" + 
257
		"public class X extends A {\n" +
258
		"	public void foo(V v) {\n" + 
258
		"	public void foo(V v) {\n" +
259
		"	    v.bar(this);\n" + 
259
		"	    v.bar(this);\n" +
260
		"	}\n" + 
260
		"	}\n" +
261
		"}\n"	,
261
		"}\n"	,
262
		owner
262
		owner
263
	);
263
	);
Lines 276-320 Link Here
276
public void testBug73112a() throws CoreException {
276
public void testBug73112a() throws CoreException {
277
	workingCopies = new ICompilationUnit[1];
277
	workingCopies = new ICompilationUnit[1];
278
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73112/A.java",
278
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73112/A.java",
279
		"package b73112;\n" + 
279
		"package b73112;\n" +
280
		"public class A {\n" + 
280
		"public class A {\n" +
281
		"    int fieldA73112a = 1, fieldA73112b = new Integer(2).intValue(), fieldA73112c = fieldA73112a + fieldA73112b;\n" + 
281
		"    int fieldA73112a = 1, fieldA73112b = new Integer(2).intValue(), fieldA73112c = fieldA73112a + fieldA73112b;\n" +
282
		"    int fieldA73112d;\n" + 
282
		"    int fieldA73112d;\n" +
283
		"    \n" + 
283
		"    \n" +
284
		"    public void method(){}\n" + 
284
		"    public void method(){}\n" +
285
		"}\n");
285
		"}\n");
286
	// search field references to first multiple field
286
	// search field references to first multiple field
287
	search("fieldA73112*", FIELD, ALL_OCCURRENCES);
287
	search("fieldA73112*", FIELD, ALL_OCCURRENCES);
288
	assertSearchResults(
288
	assertSearchResults(
289
		"src/b73112/A.java b73112.A.fieldA73112a [fieldA73112a] EXACT_MATCH\n" + 
289
		"src/b73112/A.java b73112.A.fieldA73112a [fieldA73112a] EXACT_MATCH\n" +
290
		"src/b73112/A.java b73112.A.fieldA73112b [fieldA73112b] EXACT_MATCH\n" + 
290
		"src/b73112/A.java b73112.A.fieldA73112b [fieldA73112b] EXACT_MATCH\n" +
291
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112c] EXACT_MATCH\n" + 
291
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112c] EXACT_MATCH\n" +
292
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112a] EXACT_MATCH\n" + 
292
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112a] EXACT_MATCH\n" +
293
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112b] EXACT_MATCH\n" + 
293
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112b] EXACT_MATCH\n" +
294
		"src/b73112/A.java b73112.A.fieldA73112d [fieldA73112d] EXACT_MATCH"
294
		"src/b73112/A.java b73112.A.fieldA73112d [fieldA73112d] EXACT_MATCH"
295
	);
295
	);
296
}
296
}
297
public void testBug73112b() throws CoreException {
297
public void testBug73112b() throws CoreException {
298
	workingCopies = new ICompilationUnit[1];
298
	workingCopies = new ICompilationUnit[1];
299
	workingCopies[0] = super.getWorkingCopy("/JavaSearchBugs/src/b73112/B.java",
299
	workingCopies[0] = super.getWorkingCopy("/JavaSearchBugs/src/b73112/B.java",
300
		"package b73112;\n" + 
300
		"package b73112;\n" +
301
		"public class B {\n" + 
301
		"public class B {\n" +
302
		"    int fieldB73112a, fieldB73112b = 10;\n" + 
302
		"    int fieldB73112a, fieldB73112b = 10;\n" +
303
		"    int fieldB73112c = fieldB73112a + fieldB73112b, fieldB73112d = fieldB73112c + fieldB73112a, fieldB73112e;\n" + 
303
		"    int fieldB73112c = fieldB73112a + fieldB73112b, fieldB73112d = fieldB73112c + fieldB73112a, fieldB73112e;\n" +
304
		"    \n" + 
304
		"    \n" +
305
		"    public void method(){}\n" + 
305
		"    public void method(){}\n" +
306
		"}\n");
306
		"}\n");
307
	// search field references to first multiple field
307
	// search field references to first multiple field
308
	search("fieldB73112*", FIELD, ALL_OCCURRENCES);
308
	search("fieldB73112*", FIELD, ALL_OCCURRENCES);
309
	assertSearchResults(
309
	assertSearchResults(
310
		"src/b73112/B.java b73112.B.fieldB73112a [fieldB73112a] EXACT_MATCH\n" + 
310
		"src/b73112/B.java b73112.B.fieldB73112a [fieldB73112a] EXACT_MATCH\n" +
311
		"src/b73112/B.java b73112.B.fieldB73112b [fieldB73112b] EXACT_MATCH\n" + 
311
		"src/b73112/B.java b73112.B.fieldB73112b [fieldB73112b] EXACT_MATCH\n" +
312
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112c] EXACT_MATCH\n" + 
312
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112c] EXACT_MATCH\n" +
313
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112a] EXACT_MATCH\n" + 
313
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112a] EXACT_MATCH\n" +
314
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112b] EXACT_MATCH\n" + 
314
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112b] EXACT_MATCH\n" +
315
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112d] EXACT_MATCH\n" + 
315
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112d] EXACT_MATCH\n" +
316
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112c] EXACT_MATCH\n" + 
316
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112c] EXACT_MATCH\n" +
317
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112a] EXACT_MATCH\n" + 
317
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112a] EXACT_MATCH\n" +
318
		"src/b73112/B.java b73112.B.fieldB73112e [fieldB73112e] EXACT_MATCH"
318
		"src/b73112/B.java b73112.B.fieldB73112e [fieldB73112e] EXACT_MATCH"
319
	);
319
	);
320
}
320
}
Lines 327-372 Link Here
327
	workingCopies = new ICompilationUnit[6];
327
	workingCopies = new ICompilationUnit[6];
328
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
328
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
329
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336/A.java",
329
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336/A.java",
330
		"package b73336;\n" + 
330
		"package b73336;\n" +
331
		"public class A {}\n",
331
		"public class A {}\n",
332
		owner
332
		owner
333
	);
333
	);
334
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336/AA.java",
334
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336/AA.java",
335
		"package b73336;\n" + 
335
		"package b73336;\n" +
336
		"public class AA extends A {}\n",
336
		"public class AA extends A {}\n",
337
		owner
337
		owner
338
	);
338
	);
339
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336/B.java",
339
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336/B.java",
340
		"package b73336;\n" + 
340
		"package b73336;\n" +
341
		"public class B extends X<A, A> {\n" + 
341
		"public class B extends X<A, A> {\n" +
342
		"	<T> void foo(T t) {}\n" + 
342
		"	<T> void foo(T t) {}\n" +
343
		"}\n",
343
		"}\n",
344
		owner
344
		owner
345
	);
345
	);
346
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336/C.java",
346
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336/C.java",
347
		"package b73336;\n" + 
347
		"package b73336;\n" +
348
		"public class C implements I<A> {\n" + 
348
		"public class C implements I<A> {\n" +
349
		"	public void foo() {\n" + 
349
		"	public void foo() {\n" +
350
		"		B b = new B();\n" + 
350
		"		B b = new B();\n" +
351
		"		b.<A>foo(new A());\n" + 
351
		"		b.<A>foo(new A());\n" +
352
		"	}\n" + 
352
		"	}\n" +
353
		"}\n",
353
		"}\n",
354
		owner
354
		owner
355
	);
355
	);
356
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b73336/I.java",
356
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b73336/I.java",
357
		"package b73336;\n" + 
357
		"package b73336;\n" +
358
		"public interface I<T>  {\n" + 
358
		"public interface I<T>  {\n" +
359
		"	public void foo();\n" + 
359
		"	public void foo();\n" +
360
		"}\n",
360
		"}\n",
361
		owner
361
		owner
362
	);
362
	);
363
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b73336/X.java",
363
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b73336/X.java",
364
		"package b73336;\n" + 
364
		"package b73336;\n" +
365
		"public class X<T, U> {\n" + 
365
		"public class X<T, U> {\n" +
366
		"	<V> void foo(V v) {}\n" + 
366
		"	<V> void foo(V v) {}\n" +
367
		"	class Member<T> {\n" + 
367
		"	class Member<T> {\n" +
368
		"		void foo() {}\n" + 
368
		"		void foo() {}\n" +
369
		"	}\n" + 
369
		"	}\n" +
370
		"}\n",
370
		"}\n",
371
		owner
371
		owner
372
	);
372
	);
Lines 374-384 Link Here
374
	IType type = workingCopies[0].getType("A");
374
	IType type = workingCopies[0].getType("A");
375
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
375
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
376
	assertSearchResults(
376
	assertSearchResults(
377
		"src/b73336/AA.java b73336.AA [A] EXACT_MATCH\n" + 
377
		"src/b73336/AA.java b73336.AA [A] EXACT_MATCH\n" +
378
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" + 
378
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" +
379
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" + 
379
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" +
380
		"src/b73336/C.java b73336.C [A] EXACT_MATCH\n" + 
380
		"src/b73336/C.java b73336.C [A] EXACT_MATCH\n" +
381
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH\n" + 
381
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH\n" +
382
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH"
382
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH"
383
	);
383
	);
384
}
384
}
Lines 386-417 Link Here
386
	workingCopies = new ICompilationUnit[4];
386
	workingCopies = new ICompilationUnit[4];
387
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
387
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
388
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336b/A.java",
388
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336b/A.java",
389
		"package b73336b;\n" + 
389
		"package b73336b;\n" +
390
		"public class A {}\n",
390
		"public class A {}\n",
391
		owner
391
		owner
392
	);
392
	);
393
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336b/B.java",
393
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336b/B.java",
394
		"package b73336b;\n" + 
394
		"package b73336b;\n" +
395
		"public class B extends X<A, A> {\n" + 
395
		"public class B extends X<A, A> {\n" +
396
		"}\n",
396
		"}\n",
397
		owner
397
		owner
398
	);
398
	);
399
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336b/C.java",
399
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336b/C.java",
400
		"package b73336b;\n" + 
400
		"package b73336b;\n" +
401
		"public class C extends X<A, A>.Member<A> {\n" + 
401
		"public class C extends X<A, A>.Member<A> {\n" +
402
		"	public C() {\n" + 
402
		"	public C() {\n" +
403
		"		new X<A, A>().super();\n" + 
403
		"		new X<A, A>().super();\n" +
404
		"	}\n" + 
404
		"	}\n" +
405
		"}\n",
405
		"}\n",
406
		owner
406
		owner
407
	);
407
	);
408
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336b/X.java",
408
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336b/X.java",
409
		"package b73336b;\n" + 
409
		"package b73336b;\n" +
410
		"public class X<T, U> {\n" + 
410
		"public class X<T, U> {\n" +
411
		"	<V> void foo(V v) {}\n" + 
411
		"	<V> void foo(V v) {}\n" +
412
		"	class Member<T> {\n" + 
412
		"	class Member<T> {\n" +
413
		"		void foo() {}\n" + 
413
		"		void foo() {}\n" +
414
		"	}\n" + 
414
		"	}\n" +
415
		"}\n",
415
		"}\n",
416
		owner
416
		owner
417
	);
417
	);
Lines 420-431 Link Here
420
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336b", false));
420
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336b", false));
421
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
421
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
422
	assertSearchResults(
422
	assertSearchResults(
423
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" + 
423
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" +
424
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" + 
424
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" +
425
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" + 
425
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" +
426
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" + 
426
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" +
427
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" + 
427
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" +
428
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH\n" + 
428
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH\n" +
429
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH"
429
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH"
430
	);
430
	);
431
}
431
}
Lines 434-462 Link Here
434
	workingCopies = new ICompilationUnit[4];
434
	workingCopies = new ICompilationUnit[4];
435
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
435
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
436
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336c/A.java",
436
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336c/A.java",
437
		"package b73336c;\n" + 
437
		"package b73336c;\n" +
438
		"public class A {}\n",
438
		"public class A {}\n",
439
		owner
439
		owner
440
	);
440
	);
441
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336c/B.java",
441
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336c/B.java",
442
		"package b73336c;\n" + 
442
		"package b73336c;\n" +
443
		"public class B extends X<A, A> {\n" + 
443
		"public class B extends X<A, A> {\n" +
444
		"}\n",
444
		"}\n",
445
		owner
445
		owner
446
	);
446
	);
447
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336c/C.java",
447
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336c/C.java",
448
		"package b73336c;\n" + 
448
		"package b73336c;\n" +
449
		"public class C implements X<A, A>.Interface<A>  {\n" + 
449
		"public class C implements X<A, A>.Interface<A>  {\n" +
450
		"	void bar() {}\n" + 
450
		"	void bar() {}\n" +
451
		"}\n",
451
		"}\n",
452
		owner
452
		owner
453
	);
453
	);
454
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336c/X.java",
454
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336c/X.java",
455
		"package b73336c;\n" + 
455
		"package b73336c;\n" +
456
		"public class X<T, U> {\n" + 
456
		"public class X<T, U> {\n" +
457
		"	interface Interface<V> {\n" + 
457
		"	interface Interface<V> {\n" +
458
		"		void bar();\n" + 
458
		"		void bar();\n" +
459
		"	}\n" + 
459
		"	}\n" +
460
		"}\n",
460
		"}\n",
461
		owner
461
		owner
462
	);
462
	);
Lines 465-474 Link Here
465
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336c", false));
465
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336c", false));
466
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
466
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
467
	assertSearchResults(
467
	assertSearchResults(
468
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" + 
468
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" +
469
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" + 
469
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" +
470
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" + 
470
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" +
471
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" + 
471
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" +
472
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH"
472
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH"
473
	);
473
	);
474
}
474
}
Lines 481-498 Link Here
481
	workingCopies = new ICompilationUnit[2];
481
	workingCopies = new ICompilationUnit[2];
482
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
482
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
483
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73696/C.java",
483
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73696/C.java",
484
		"package b73696;\n" + 
484
		"package b73696;\n" +
485
		"public class C implements  I {\n" + 
485
		"public class C implements  I {\n" +
486
		"}",
486
		"}",
487
		owner
487
		owner
488
	);
488
	);
489
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73696/I.java",
489
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73696/I.java",
490
		"package b73696;\n" + 
490
		"package b73696;\n" +
491
		"public interface I {}\n",
491
		"public interface I {}\n",
492
		owner
492
		owner
493
	);
493
	);
494
	IJavaSearchScope scope = SearchEngine.createJavaSearchScope(workingCopies);
494
	IJavaSearchScope scope = SearchEngine.createJavaSearchScope(workingCopies);
495
	
495
496
	// Interface declaration
496
	// Interface declaration
497
	TypeDeclarationPattern pattern = new TypeDeclarationPattern(
497
	TypeDeclarationPattern pattern = new TypeDeclarationPattern(
498
		null,
498
		null,
Lines 522-528 Link Here
522
		resultCollector,
522
		resultCollector,
523
		null);
523
		null);
524
	assertSearchResults(
524
	assertSearchResults(
525
		"src/b73696/I.java b73696.I [I] EXACT_MATCH\n" + 
525
		"src/b73696/I.java b73696.I [I] EXACT_MATCH\n" +
526
		"src/b73696/C.java b73696.C [C] EXACT_MATCH"
526
		"src/b73696/C.java b73696.C [C] EXACT_MATCH"
527
	);
527
	);
528
}
528
}
Lines 535-564 Link Here
535
	workingCopies = new ICompilationUnit[3];
535
	workingCopies = new ICompilationUnit[3];
536
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
536
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
537
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b74776/A.java",
537
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b74776/A.java",
538
		"package b74776;\n" + 
538
		"package b74776;\n" +
539
		"public class A {\n" + 
539
		"public class A {\n" +
540
		"	/**\n" + 
540
		"	/**\n" +
541
		"	 * @deprecated Use {@link #foo(IRegion)} instead\n" + 
541
		"	 * @deprecated Use {@link #foo(IRegion)} instead\n" +
542
		"	 * @param r\n" + 
542
		"	 * @param r\n" +
543
		"	 */\n" + 
543
		"	 */\n" +
544
		"	void foo(Region r) {\n" + 
544
		"	void foo(Region r) {\n" +
545
		"		foo((IRegion)r);\n" + 
545
		"		foo((IRegion)r);\n" +
546
		"	}\n" + 
546
		"	}\n" +
547
		"	void foo(IRegion r) {\n" + 
547
		"	void foo(IRegion r) {\n" +
548
		"	}\n" + 
548
		"	}\n" +
549
		"}\n",
549
		"}\n",
550
		owner
550
		owner
551
	);
551
	);
552
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b74776/IRegion.java",
552
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b74776/IRegion.java",
553
		"package b74776;\n" + 
553
		"package b74776;\n" +
554
		"public interface IRegion {\n" + 
554
		"public interface IRegion {\n" +
555
		"}\n",
555
		"}\n",
556
		owner
556
		owner
557
	);
557
	);
558
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b74776/Region.java",
558
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b74776/Region.java",
559
		"package b74776;\n" + 
559
		"package b74776;\n" +
560
		"public class Region implements IRegion {\n" + 
560
		"public class Region implements IRegion {\n" +
561
		"\n" + 
561
		"\n" +
562
		"}\n",
562
		"}\n",
563
		owner
563
		owner
564
	);
564
	);
Lines 591-613 Link Here
591
private void setUpBug77093() throws CoreException {
591
private void setUpBug77093() throws CoreException {
592
	workingCopies = new ICompilationUnit[1];
592
	workingCopies = new ICompilationUnit[1];
593
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77093/X.java",
593
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77093/X.java",
594
		"package b77093;\n" + 
594
		"package b77093;\n" +
595
		"public class X {\n" + 
595
		"public class X {\n" +
596
		"	class Z {\n" + 
596
		"	class Z {\n" +
597
		"	}\n" + 
597
		"	}\n" +
598
		"	Z[][] z_arrays;\n" + 
598
		"	Z[][] z_arrays;\n" +
599
		"	X() {\n" + 
599
		"	X() {\n" +
600
		"		this(new Z[10][]);\n" + 
600
		"		this(new Z[10][]);\n" +
601
		"	}\n" + 
601
		"	}\n" +
602
		"	X(Z[][] arrays) {\n" + 
602
		"	X(Z[][] arrays) {\n" +
603
		"		z_arrays = arrays;\n" + 
603
		"		z_arrays = arrays;\n" +
604
		"	}\n" + 
604
		"	}\n" +
605
		"	private void foo(Z[] args) {\n" + 
605
		"	private void foo(Z[] args) {\n" +
606
		"	}\n" + 
606
		"	}\n" +
607
		"	void bar() {\n" + 
607
		"	void bar() {\n" +
608
		"		for (int i=0; i<z_arrays.length; i++)\n" + 
608
		"		for (int i=0; i<z_arrays.length; i++)\n" +
609
		"			foo(z_arrays[i]);\n" + 
609
		"			foo(z_arrays[i]);\n" +
610
		"	}\n" + 
610
		"	}\n" +
611
		"}"
611
		"}"
612
	);
612
	);
613
}
613
}
Lines 630-637 Link Here
630
	search(field, ALL_OCCURRENCES);
630
	search(field, ALL_OCCURRENCES);
631
	assertSearchResults(
631
	assertSearchResults(
632
		"src/b77093/X.java b77093.X.z_arrays [z_arrays] EXACT_MATCH\n" +
632
		"src/b77093/X.java b77093.X.z_arrays [z_arrays] EXACT_MATCH\n" +
633
		"src/b77093/X.java b77093.X(Z[][]) [z_arrays] EXACT_MATCH\n" + 
633
		"src/b77093/X.java b77093.X(Z[][]) [z_arrays] EXACT_MATCH\n" +
634
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH\n" + 
634
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH\n" +
635
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH"
635
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH"
636
	);
636
	);
637
}
637
}
Lines 652-664 Link Here
652
public void testBug77388() throws CoreException {
652
public void testBug77388() throws CoreException {
653
	workingCopies = new ICompilationUnit[1];
653
	workingCopies = new ICompilationUnit[1];
654
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77388/Test.java",
654
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77388/Test.java",
655
		"package b77388;\n" + 
655
		"package b77388;\n" +
656
		"class Test {\n" + 
656
		"class Test {\n" +
657
		"	Test(int a, int b) {	}\n" + 
657
		"	Test(int a, int b) {	}\n" +
658
		"	void take(Test mc) { }\n" + 
658
		"	void take(Test mc) { }\n" +
659
		"	void run() {\n" + 
659
		"	void run() {\n" +
660
		"		take( new Test(1, 2) ); // space in \") )\" is in match\n" + 
660
		"		take( new Test(1, 2) ); // space in \") )\" is in match\n" +
661
		"	}\n" + 
661
		"	}\n" +
662
		"}");
662
		"}");
663
	IType type = workingCopies[0].getType("Test");
663
	IType type = workingCopies[0].getType("Test");
664
	IMethod method = type.getMethod("Test", new String[] {"I", "I"});
664
	IMethod method = type.getMethod("Test", new String[] {"I", "I"});
Lines 677-694 Link Here
677
	workingCopies = new ICompilationUnit[2];
677
	workingCopies = new ICompilationUnit[2];
678
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
678
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
679
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b78082/M.java",
679
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b78082/M.java",
680
		"package b78082;\n" + 
680
		"package b78082;\n" +
681
		"public class M {\n" + 
681
		"public class M {\n" +
682
		"	static int VAL=78082;\n" + 
682
		"	static int VAL=78082;\n" +
683
		"}\n",
683
		"}\n",
684
		owner
684
		owner
685
	);
685
	);
686
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b78082/XY.java",
686
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b78082/XY.java",
687
		"package b78082;\n" + 
687
		"package b78082;\n" +
688
		"import static b78082.M.VAL;\n" + 
688
		"import static b78082.M.VAL;\n" +
689
		"public class XY {\n" + 
689
		"public class XY {\n" +
690
		"	double val = VAL;\n" + 
690
		"	double val = VAL;\n" +
691
		"	double val2= b78082.M.VAL;\n" + 
691
		"	double val2= b78082.M.VAL;\n" +
692
		"}\n",
692
		"}\n",
693
		owner
693
		owner
694
	);
694
	);
Lines 697-705 Link Here
697
	IField field = type.getField("VAL");
697
	IField field = type.getField("VAL");
698
	search(field, ALL_OCCURRENCES);
698
	search(field, ALL_OCCURRENCES);
699
	assertSearchResults(
699
	assertSearchResults(
700
		"src/b78082/M.java b78082.M.VAL [VAL] EXACT_MATCH\n" + 
700
		"src/b78082/M.java b78082.M.VAL [VAL] EXACT_MATCH\n" +
701
		"src/b78082/XY.java [VAL] EXACT_MATCH\n" + 
701
		"src/b78082/XY.java [VAL] EXACT_MATCH\n" +
702
		"src/b78082/XY.java b78082.XY.val [VAL] EXACT_MATCH\n" + 
702
		"src/b78082/XY.java b78082.XY.val [VAL] EXACT_MATCH\n" +
703
		"src/b78082/XY.java b78082.XY.val2 [VAL] EXACT_MATCH"
703
		"src/b78082/XY.java b78082.XY.val2 [VAL] EXACT_MATCH"
704
	);
704
	);
705
}
705
}
Lines 711-739 Link Here
711
public void testBug79267() throws CoreException {
711
public void testBug79267() throws CoreException {
712
	workingCopies = new ICompilationUnit[1];
712
	workingCopies = new ICompilationUnit[1];
713
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79267/Test.java",
713
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79267/Test.java",
714
		"package b79267;\n" + 
714
		"package b79267;\n" +
715
		"public class Test {\n" + 
715
		"public class Test {\n" +
716
		"	private static final X<String, String> BEFORE	= new X<String, String>(4);\n" + 
716
		"	private static final X<String, String> BEFORE	= new X<String, String>(4);\n" +
717
		"\n" + 
717
		"\n" +
718
		"	static {\n" + 
718
		"	static {\n" +
719
		"		BEFORE.put(\"key1\",\"value1\");\n" + 
719
		"		BEFORE.put(\"key1\",\"value1\");\n" +
720
		"		BEFORE.put(\"key2\",\"value2\");\n" + 
720
		"		BEFORE.put(\"key2\",\"value2\");\n" +
721
		"	}\n" + 
721
		"	}\n" +
722
		"	\n" + 
722
		"	\n" +
723
		"	private static final X<Y, Object>	objectToPrimitiveMap	= new X<Y, Object>(8);\n" + 
723
		"	private static final X<Y, Object>	objectToPrimitiveMap	= new X<Y, Object>(8);\n" +
724
		"\n" + 
724
		"\n" +
725
		"	static {\n" + 
725
		"	static {\n" +
726
		"		objectToPrimitiveMap.put(new Y<Object>(new Object()), new Object());\n" + 
726
		"		objectToPrimitiveMap.put(new Y<Object>(new Object()), new Object());\n" +
727
		"	}\n" + 
727
		"	}\n" +
728
		"}\n" + 
728
		"}\n" +
729
		"\n" + 
729
		"\n" +
730
		"class X<T, U> {\n" + 
730
		"class X<T, U> {\n" +
731
		"	X(int x) {}\n" + 
731
		"	X(int x) {}\n" +
732
		"	void put(T t, U u) {}\n" + 
732
		"	void put(T t, U u) {}\n" +
733
		"}\n" + 
733
		"}\n" +
734
		"\n" + 
734
		"\n" +
735
		"class Y<T> {\n" + 
735
		"class Y<T> {\n" +
736
		"	Y(T t) {}\n" + 
736
		"	Y(T t) {}\n" +
737
		"}\n");
737
		"}\n");
738
	// search field references
738
	// search field references
739
	IType type = workingCopies[0].getType("Test");
739
	IType type = workingCopies[0].getType("Test");
Lines 742-749 Link Here
742
	field = type.getField("objectToPrimitiveMap");
742
	field = type.getField("objectToPrimitiveMap");
743
	search(field, REFERENCES);
743
	search(field, REFERENCES);
744
	assertSearchResults(
744
	assertSearchResults(
745
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" + 
745
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" +
746
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" + 
746
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" +
747
		"src/b79267/Test.java b79267.Test.static {} [objectToPrimitiveMap] EXACT_MATCH"
747
		"src/b79267/Test.java b79267.Test.static {} [objectToPrimitiveMap] EXACT_MATCH"
748
	);
748
	);
749
}
749
}
Lines 755-769 Link Here
755
public void testBug79378() throws CoreException {
755
public void testBug79378() throws CoreException {
756
	workingCopies = new ICompilationUnit[1];
756
	workingCopies = new ICompilationUnit[1];
757
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
757
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
758
		"package b79378;\n" + 
758
		"package b79378;\n" +
759
		"public class Test {\n" + 
759
		"public class Test {\n" +
760
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" + 
760
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" +
761
		"	void foo79378(RuntimeException[] exceptions) {}\n" + 
761
		"	void foo79378(RuntimeException[] exceptions) {}\n" +
762
		"	void call() {\n" + 
762
		"	void call() {\n" +
763
		"		String s= null; \n" + 
763
		"		String s= null; \n" +
764
		"		Exception[] exceptions= null;\n" + 
764
		"		Exception[] exceptions= null;\n" +
765
		"		foo79378(s, exceptions);\n" + 
765
		"		foo79378(s, exceptions);\n" +
766
		"	}\n" + 
766
		"	}\n" +
767
		"}\n"
767
		"}\n"
768
	);
768
	);
769
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
769
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
Lines 777-791 Link Here
777
	resultCollector.showRule = true;
777
	resultCollector.showRule = true;
778
	workingCopies = new ICompilationUnit[1];
778
	workingCopies = new ICompilationUnit[1];
779
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
779
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
780
		"package b79378;\n" + 
780
		"package b79378;\n" +
781
		"public class Test {\n" + 
781
		"public class Test {\n" +
782
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" + 
782
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" +
783
		"	void foo79378(RuntimeException[] exceptions) {}\n" + 
783
		"	void foo79378(RuntimeException[] exceptions) {}\n" +
784
		"	void call() {\n" + 
784
		"	void call() {\n" +
785
		"		String s= null; \n" + 
785
		"		String s= null; \n" +
786
		"		Exception[] exceptions= null;\n" + 
786
		"		Exception[] exceptions= null;\n" +
787
		"		foo79378(s, exceptions);\n" + 
787
		"		foo79378(s, exceptions);\n" +
788
		"	}\n" + 
788
		"	}\n" +
789
		"}\n"
789
		"}\n"
790
	);
790
	);
791
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
791
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
Lines 801-832 Link Here
801
public void testBug79803() throws CoreException {
801
public void testBug79803() throws CoreException {
802
	workingCopies = new ICompilationUnit[1];
802
	workingCopies = new ICompilationUnit[1];
803
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
803
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
804
		"package b79803;\n" + 
804
		"package b79803;\n" +
805
		"class A<A> {\n" + 
805
		"class A<A> {\n" +
806
		"    A a;\n" + 
806
		"    A a;\n" +
807
		"    b79803.A pa= new b79803.A();\n" + 
807
		"    b79803.A pa= new b79803.A();\n" +
808
		"}\n"	
808
		"}\n"
809
	);
809
	);
810
	IType type = workingCopies[0].getType("A");
810
	IType type = workingCopies[0].getType("A");
811
	search(type, REFERENCES, ERASURE_RULE);
811
	search(type, REFERENCES, ERASURE_RULE);
812
	assertSearchResults(
812
	assertSearchResults(
813
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH\n" + 
813
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH\n" +
814
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH"
814
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH"
815
	);
815
	);
816
}
816
}
817
public void testBug79803string() throws CoreException {
817
public void testBug79803string() throws CoreException {
818
	workingCopies = new ICompilationUnit[1];
818
	workingCopies = new ICompilationUnit[1];
819
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
819
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
820
		"package b79803;\n" + 
820
		"package b79803;\n" +
821
		"class A<A> {\n" + 
821
		"class A<A> {\n" +
822
		"    A a;\n" + 
822
		"    A a;\n" +
823
		"    b79803.A pa= new b79803.A();\n" + 
823
		"    b79803.A pa= new b79803.A();\n" +
824
		"}\n"	
824
		"}\n"
825
	);
825
	);
826
	search("A", TYPE, REFERENCES);
826
	search("A", TYPE, REFERENCES);
827
	assertSearchResults(
827
	assertSearchResults(
828
		"src/b79803/A.java b79803.A.a [A] EXACT_MATCH\n" + 
828
		"src/b79803/A.java b79803.A.a [A] EXACT_MATCH\n" +
829
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH\n" + 
829
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH\n" +
830
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH"
830
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH"
831
	);
831
	);
832
}
832
}
Lines 839-855 Link Here
839
	workingCopies = new ICompilationUnit[2];
839
	workingCopies = new ICompilationUnit[2];
840
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
840
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
841
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
841
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
842
		"package b79860;\n" + 
842
		"package b79860;\n" +
843
		"public class X<T extends A> { }\n" + 
843
		"public class X<T extends A> { }\n" +
844
		"class A { }",
844
		"class A { }",
845
		owner
845
		owner
846
	);
846
	);
847
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
847
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
848
		"package b79860;\n" + 
848
		"package b79860;\n" +
849
		"public class Y<T extends B&I1&I2&I3> { }\n" + 
849
		"public class Y<T extends B&I1&I2&I3> { }\n" +
850
		"class B { }\n" + 
850
		"class B { }\n" +
851
		"interface I1 {}\n" + 
851
		"interface I1 {}\n" +
852
		"interface I2 {}\n" + 
852
		"interface I2 {}\n" +
853
		"interface I3 {}\n",
853
		"interface I3 {}\n",
854
		owner
854
		owner
855
	);
855
	);
Lines 863-886 Link Here
863
	workingCopies = new ICompilationUnit[2];
863
	workingCopies = new ICompilationUnit[2];
864
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
864
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
865
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
865
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
866
		"package b79860;\n" + 
866
		"package b79860;\n" +
867
		"public class X<T extends A> { }\n" + 
867
		"public class X<T extends A> { }\n" +
868
		"class A { }",
868
		"class A { }",
869
		owner
869
		owner
870
	);
870
	);
871
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
871
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
872
		"package b79860;\n" + 
872
		"package b79860;\n" +
873
		"public class Y<T extends B&I1&I2&I3> { }\n" + 
873
		"public class Y<T extends B&I1&I2&I3> { }\n" +
874
		"class B { }\n" + 
874
		"class B { }\n" +
875
		"interface I1 {}\n" + 
875
		"interface I1 {}\n" +
876
		"interface I2 {}\n" + 
876
		"interface I2 {}\n" +
877
		"interface I3 {}\n",
877
		"interface I3 {}\n",
878
		owner
878
		owner
879
	);
879
	);
880
	search("I?", TYPE, REFERENCES);
880
	search("I?", TYPE, REFERENCES);
881
	assertSearchResults(
881
	assertSearchResults(
882
		"src/b79860/Y.java b79860.Y [I1] EXACT_MATCH\n" + 
882
		"src/b79860/Y.java b79860.Y [I1] EXACT_MATCH\n" +
883
		"src/b79860/Y.java b79860.Y [I2] EXACT_MATCH\n" + 
883
		"src/b79860/Y.java b79860.Y [I2] EXACT_MATCH\n" +
884
		"src/b79860/Y.java b79860.Y [I3] EXACT_MATCH"
884
		"src/b79860/Y.java b79860.Y [I3] EXACT_MATCH"
885
	);
885
	);
886
}
886
}
Lines 892-905 Link Here
892
private void setUpBug79990() throws CoreException {
892
private void setUpBug79990() throws CoreException {
893
	workingCopies = new ICompilationUnit[1];
893
	workingCopies = new ICompilationUnit[1];
894
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
894
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
895
		"package b79990;\n" + 
895
		"package b79990;\n" +
896
		"class Test<T> {\n" + 
896
		"class Test<T> {\n" +
897
		"    public void first(Exception num) {}\n" + 
897
		"    public void first(Exception num) {}\n" +
898
		"    public void second(T t) {}\n" + 
898
		"    public void second(T t) {}\n" +
899
		"}\n" + 
899
		"}\n" +
900
		"class Sub extends Test<Exception> {\n" + 
900
		"class Sub extends Test<Exception> {\n" +
901
		"    public void first(Exception num) {}\n" + 
901
		"    public void first(Exception num) {}\n" +
902
		"    public void second(Exception t) {}\n" + 
902
		"    public void second(Exception t) {}\n" +
903
		"}\n"
903
		"}\n"
904
	);}
904
	);}
905
public void testBug79990() throws CoreException {
905
public void testBug79990() throws CoreException {
Lines 907-913 Link Here
907
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
907
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
908
	search(method, DECLARATIONS);
908
	search(method, DECLARATIONS);
909
	assertSearchResults(
909
	assertSearchResults(
910
		"src/b79990/Test.java void b79990.Test.first(Exception) [first] EXACT_MATCH\n" + 
910
		"src/b79990/Test.java void b79990.Test.first(Exception) [first] EXACT_MATCH\n" +
911
		"src/b79990/Test.java void b79990.Sub.first(Exception) [first] EXACT_MATCH"
911
		"src/b79990/Test.java void b79990.Sub.first(Exception) [first] EXACT_MATCH"
912
	);
912
	);
913
}
913
}
Lines 916-922 Link Here
916
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
916
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
917
	search(method, DECLARATIONS);
917
	search(method, DECLARATIONS);
918
	assertSearchResults(
918
	assertSearchResults(
919
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" + 
919
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" +
920
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
920
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
921
	);
921
	);
922
}
922
}
Lines 925-949 Link Here
925
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
925
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
926
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
926
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
927
	assertSearchResults(
927
	assertSearchResults(
928
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" + 
928
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" +
929
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
929
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
930
	);
930
	);
931
}
931
}
932
public void testBug79990d() throws CoreException {
932
public void testBug79990d() throws CoreException {
933
	workingCopies = new ICompilationUnit[1];
933
	workingCopies = new ICompilationUnit[1];
934
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
934
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
935
		"package b79990;\n" + 
935
		"package b79990;\n" +
936
		"public class Test<T> {\n" + 
936
		"public class Test<T> {\n" +
937
		"	void methodT(T t) {}\n" + 
937
		"	void methodT(T t) {}\n" +
938
		"}\n" + 
938
		"}\n" +
939
		"class Sub<X> extends Test<X> {\n" + 
939
		"class Sub<X> extends Test<X> {\n" +
940
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" + 
940
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" +
941
		"}\n"
941
		"}\n"
942
	);
942
	);
943
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
943
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
944
	search(method, DECLARATIONS);
944
	search(method, DECLARATIONS);
945
	assertSearchResults(
945
	assertSearchResults(
946
		"src/b79990/Test.java void b79990.Test.methodT(T) [methodT] EXACT_MATCH\n" + 
946
		"src/b79990/Test.java void b79990.Test.methodT(T) [methodT] EXACT_MATCH\n" +
947
		"src/b79990/Test.java void b79990.Sub.methodT(X) [methodT] EXACT_MATCH"
947
		"src/b79990/Test.java void b79990.Sub.methodT(X) [methodT] EXACT_MATCH"
948
	);
948
	);
949
}
949
}
Lines 955-968 Link Here
955
public void testBug80084() throws CoreException, JavaModelException {
955
public void testBug80084() throws CoreException, JavaModelException {
956
	workingCopies = new ICompilationUnit[1];
956
	workingCopies = new ICompilationUnit[1];
957
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80084/Test.java",
957
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80084/Test.java",
958
		"package b80084;\n" + 
958
		"package b80084;\n" +
959
		"class List<T> {}\n" + 
959
		"class List<T> {}\n" +
960
		"public class Test {\n" + 
960
		"public class Test {\n" +
961
		"  void foo(List<Exception> le) {}\n" + 
961
		"  void foo(List<Exception> le) {}\n" +
962
		"  void bar() {\n" + 
962
		"  void bar() {\n" +
963
		"    List<Exception> le = new List<Exception>();\n" + 
963
		"    List<Exception> le = new List<Exception>();\n" +
964
		"    foo(le);\n" + 
964
		"    foo(le);\n" +
965
		"  }\n" + 
965
		"  }\n" +
966
		"}\n"
966
		"}\n"
967
		);
967
		);
968
	IType type = workingCopies[0].getType("Test");
968
	IType type = workingCopies[0].getType("Test");
Lines 980-998 Link Here
980
private void setUpBug80194() throws CoreException, JavaModelException {
980
private void setUpBug80194() throws CoreException, JavaModelException {
981
	workingCopies = new ICompilationUnit[1];
981
	workingCopies = new ICompilationUnit[1];
982
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80194/Test.java",
982
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80194/Test.java",
983
		"package b80194;\n" + 
983
		"package b80194;\n" +
984
		"interface Map<K, V> {}\n" + 
984
		"interface Map<K, V> {}\n" +
985
		"class HashMap<K, V> implements Map {}\n" + 
985
		"class HashMap<K, V> implements Map {}\n" +
986
		"public class Test {\n" + 
986
		"public class Test {\n" +
987
		"	void callDoSomething() {\n" + 
987
		"	void callDoSomething() {\n" +
988
		"		final Map<String, Object> map = new HashMap<String, Object>();\n" + 
988
		"		final Map<String, Object> map = new HashMap<String, Object>();\n" +
989
		"		doSomething(map);\n" + 
989
		"		doSomething(map);\n" +
990
		"		doSomething(map, true);\n" + 
990
		"		doSomething(map, true);\n" +
991
		"		doSomething(true);\n" + 
991
		"		doSomething(true);\n" +
992
		"	}\n" + 
992
		"	}\n" +
993
		"	void doSomething(final Map<String, Object> map) {}\n" + 
993
		"	void doSomething(final Map<String, Object> map) {}\n" +
994
		"	void doSomething(final Map<String, Object> map, final boolean flag) {}\n" + 
994
		"	void doSomething(final Map<String, Object> map, final boolean flag) {}\n" +
995
		"	void doSomething(final boolean flag) {}\n" + 
995
		"	void doSomething(final boolean flag) {}\n" +
996
		"}\n"
996
		"}\n"
997
	);
997
	);
998
}
998
}
Lines 1018-1025 Link Here
1018
	setUpBug80194();
1018
	setUpBug80194();
1019
	search("doSomething(boolean)", METHOD, ALL_OCCURRENCES);
1019
	search("doSomething(boolean)", METHOD, ALL_OCCURRENCES);
1020
	assertSearchResults(
1020
	assertSearchResults(
1021
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" + 
1021
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" +
1022
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" + 
1022
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" +
1023
		"src/b80194/Test.java void b80194.Test.doSomething(boolean) [doSomething] EXACT_MATCH"
1023
		"src/b80194/Test.java void b80194.Test.doSomething(boolean) [doSomething] EXACT_MATCH"
1024
	);
1024
	);
1025
}
1025
}
Lines 1027-1034 Link Here
1027
	setUpBug80194();
1027
	setUpBug80194();
1028
	search("doSomething(Map<String,Object>)", METHOD, ALL_OCCURRENCES);
1028
	search("doSomething(Map<String,Object>)", METHOD, ALL_OCCURRENCES);
1029
	assertSearchResults(
1029
	assertSearchResults(
1030
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" + 
1030
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" +
1031
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" + 
1031
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" +
1032
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>) [doSomething] EXACT_MATCH"
1032
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>) [doSomething] EXACT_MATCH"
1033
	);
1033
	);
1034
}
1034
}
Lines 1036-1042 Link Here
1036
	setUpBug80194();
1036
	setUpBug80194();
1037
	search("doSomething(Map<String,Object>,boolean)", METHOD, ALL_OCCURRENCES);
1037
	search("doSomething(Map<String,Object>,boolean)", METHOD, ALL_OCCURRENCES);
1038
	assertSearchResults(
1038
	assertSearchResults(
1039
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map, true)] EXACT_MATCH\n" + 
1039
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map, true)] EXACT_MATCH\n" +
1040
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>, boolean) [doSomething] EXACT_MATCH"
1040
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>, boolean) [doSomething] EXACT_MATCH"
1041
	);
1041
	);
1042
}
1042
}
Lines 1049-1064 Link Here
1049
	workingCopies = new ICompilationUnit[2];
1049
	workingCopies = new ICompilationUnit[2];
1050
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
1050
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
1051
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80223/a/A.java",
1051
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80223/a/A.java",
1052
		"package b80223.a;\n" + 
1052
		"package b80223.a;\n" +
1053
		"public class A {\n" + 
1053
		"public class A {\n" +
1054
		"    void m() {}\n" + 
1054
		"    void m() {}\n" +
1055
		"}",
1055
		"}",
1056
		owner
1056
		owner
1057
	);
1057
	);
1058
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b80223/b/B.java",
1058
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b80223/b/B.java",
1059
		"package b80223.b;\n" + 
1059
		"package b80223.b;\n" +
1060
		"public class B extends b80223.a.A {\n" + 
1060
		"public class B extends b80223.a.A {\n" +
1061
		"    void m() {}\n" + 
1061
		"    void m() {}\n" +
1062
		"}",
1062
		"}",
1063
		owner
1063
		owner
1064
	);
1064
	);
Lines 1074-1080 Link Here
1074
/**
1074
/**
1075
 * Bug 80264: [search] Search for method declarations in workspace, disregarding declaring type
1075
 * Bug 80264: [search] Search for method declarations in workspace, disregarding declaring type
1076
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=80264"
1076
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=80264"
1077
 * 
1077
 *
1078
 * Following tests also verify
1078
 * Following tests also verify
1079
 * Bug 87778: [search] doesn't find all declarations of method with covariant return type
1079
 * Bug 87778: [search] doesn't find all declarations of method with covariant return type
1080
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=87778"
1080
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=87778"
Lines 1083-1100 Link Here
1083
private void setUpBug80264_Methods() throws CoreException {
1083
private void setUpBug80264_Methods() throws CoreException {
1084
	workingCopies = new ICompilationUnit[1];
1084
	workingCopies = new ICompilationUnit[1];
1085
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Methods.java",
1085
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Methods.java",
1086
		"package b80264;\n" + 
1086
		"package b80264;\n" +
1087
		"class Methods {\n" + 
1087
		"class Methods {\n" +
1088
		"    Methods stable() { return null; }\n" + 
1088
		"    Methods stable() { return null; }\n" +
1089
		"    Methods covariant() { return null; }\n" + 
1089
		"    Methods covariant() { return null; }\n" +
1090
		"}\n" + 
1090
		"}\n" +
1091
		"class MethodsSub extends Methods {\n" + 
1091
		"class MethodsSub extends Methods {\n" +
1092
		"    Methods stable() { return null; }\n" + 
1092
		"    Methods stable() { return null; }\n" +
1093
		"    MethodsSub covariant() { return null; }\n" + 
1093
		"    MethodsSub covariant() { return null; }\n" +
1094
		"}\n" + 
1094
		"}\n" +
1095
		"class MethodsOther {\n" + 
1095
		"class MethodsOther {\n" +
1096
		"    Methods stable() { return null; }\n" + 
1096
		"    Methods stable() { return null; }\n" +
1097
		"    Methods covariant() { return null; }\n" + 
1097
		"    Methods covariant() { return null; }\n" +
1098
		"}\n"
1098
		"}\n"
1099
	);
1099
	);
1100
}
1100
}
Lines 1105-1113 Link Here
1105
	search(methods[0], DECLARATIONS);
1105
	search(methods[0], DECLARATIONS);
1106
	search(methods[1], DECLARATIONS);
1106
	search(methods[1], DECLARATIONS);
1107
	assertSearchResults(
1107
	assertSearchResults(
1108
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1108
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1109
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1109
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1110
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1110
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1111
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1111
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1112
	);
1112
	);
1113
}
1113
}
Lines 1118-1127 Link Here
1118
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1118
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1119
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1119
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1120
	assertSearchResults(
1120
	assertSearchResults(
1121
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1121
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1122
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1122
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1123
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" + 
1123
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" +
1124
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1124
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1125
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1125
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1126
	);
1126
	);
1127
}
1127
}
Lines 1132-1140 Link Here
1132
	search(methods[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1132
	search(methods[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1133
	search(methods[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1133
	search(methods[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1134
	assertSearchResults(
1134
	assertSearchResults(
1135
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1135
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1136
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1136
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1137
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1137
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1138
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1138
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1139
	);
1139
	);
1140
}
1140
}
Lines 1145-1155 Link Here
1145
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1145
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1146
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1146
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1147
	assertSearchResults(
1147
	assertSearchResults(
1148
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1148
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1149
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1149
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1150
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" + 
1150
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" +
1151
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1151
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1152
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH\n" + 
1152
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH\n" +
1153
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1153
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1154
	);
1154
	);
1155
}
1155
}
Lines 1157-1171 Link Here
1157
private void setUpBug80264_Classes() throws CoreException {
1157
private void setUpBug80264_Classes() throws CoreException {
1158
	workingCopies = new ICompilationUnit[1];
1158
	workingCopies = new ICompilationUnit[1];
1159
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Classes.java",
1159
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Classes.java",
1160
		"package b80264;\n" + 
1160
		"package b80264;\n" +
1161
		"class Classes {\n" + 
1161
		"class Classes {\n" +
1162
		"    class Inner {}\n" + 
1162
		"    class Inner {}\n" +
1163
		"}\n" + 
1163
		"}\n" +
1164
		"class ClassesSub extends Classes {\n" + 
1164
		"class ClassesSub extends Classes {\n" +
1165
		"    class Inner {}\n" + 
1165
		"    class Inner {}\n" +
1166
		"}\n" + 
1166
		"}\n" +
1167
		"class ClassesOther {\n" + 
1167
		"class ClassesOther {\n" +
1168
		"    class Inner {}\n" + 
1168
		"    class Inner {}\n" +
1169
		"}\n"
1169
		"}\n"
1170
	);
1170
	);
1171
}
1171
}
Lines 1182-1189 Link Here
1182
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1182
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1183
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE);
1183
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE);
1184
	assertSearchResults(
1184
	assertSearchResults(
1185
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" + 
1185
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" +
1186
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" + 
1186
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" +
1187
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1187
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1188
	);
1188
	);
1189
}
1189
}
Lines 1200-1207 Link Here
1200
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1200
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1201
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1201
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1202
	assertSearchResults(
1202
	assertSearchResults(
1203
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" + 
1203
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" +
1204
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" + 
1204
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" +
1205
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1205
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1206
	);
1206
	);
1207
}
1207
}
Lines 1209-1226 Link Here
1209
private void setUpBug80264_Fields() throws CoreException {
1209
private void setUpBug80264_Fields() throws CoreException {
1210
	workingCopies = new ICompilationUnit[1];
1210
	workingCopies = new ICompilationUnit[1];
1211
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Fields.java",
1211
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Fields.java",
1212
		"package b80264;\n" + 
1212
		"package b80264;\n" +
1213
		"class Fields {\n" + 
1213
		"class Fields {\n" +
1214
		"    Fields field1;\n" + 
1214
		"    Fields field1;\n" +
1215
		"    Fields field2;\n" + 
1215
		"    Fields field2;\n" +
1216
		"}\n" + 
1216
		"}\n" +
1217
		"class FieldsSub extends Fields {\n" + 
1217
		"class FieldsSub extends Fields {\n" +
1218
		"    Fields field1;\n" + 
1218
		"    Fields field1;\n" +
1219
		"    FieldsSub field2;\n" + 
1219
		"    FieldsSub field2;\n" +
1220
		"}\n" + 
1220
		"}\n" +
1221
		"class FieldsOther {\n" + 
1221
		"class FieldsOther {\n" +
1222
		"    Fields field1;\n" + 
1222
		"    Fields field1;\n" +
1223
		"    Fields field2;\n" + 
1223
		"    Fields field2;\n" +
1224
		"}\n"
1224
		"}\n"
1225
	);
1225
	);
1226
}
1226
}
Lines 1231-1237 Link Here
1231
	search(fields[0], DECLARATIONS);
1231
	search(fields[0], DECLARATIONS);
1232
	search(fields[1], DECLARATIONS);
1232
	search(fields[1], DECLARATIONS);
1233
	assertSearchResults(
1233
	assertSearchResults(
1234
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1234
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1235
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1235
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1236
	);
1236
	);
1237
}
1237
}
Lines 1242-1251 Link Here
1242
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1242
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1243
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1243
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1244
	assertSearchResults(
1244
	assertSearchResults(
1245
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1245
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1246
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" + 
1246
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" +
1247
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" + 
1247
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" +
1248
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" + 
1248
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" +
1249
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1249
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1250
	);
1250
	);
1251
}
1251
}
Lines 1256-1262 Link Here
1256
	search(fields[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1256
	search(fields[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1257
	search(fields[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1257
	search(fields[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1258
	assertSearchResults(
1258
	assertSearchResults(
1259
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1259
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1260
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1260
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1261
	);
1261
	);
1262
}
1262
}
Lines 1267-1277 Link Here
1267
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1267
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1268
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1268
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1269
	assertSearchResults(
1269
	assertSearchResults(
1270
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1270
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1271
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" + 
1271
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" +
1272
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" + 
1272
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" +
1273
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" + 
1273
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" +
1274
		"src/b80264/Fields.java b80264.FieldsSub.field2 [field2] EXACT_MATCH\n" + 
1274
		"src/b80264/Fields.java b80264.FieldsSub.field2 [field2] EXACT_MATCH\n" +
1275
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1275
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1276
	);
1276
	);
1277
}
1277
}
Lines 1283-1302 Link Here
1283
public void testBug80890() throws CoreException, JavaModelException {
1283
public void testBug80890() throws CoreException, JavaModelException {
1284
	workingCopies = new ICompilationUnit[1];
1284
	workingCopies = new ICompilationUnit[1];
1285
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80890/A.java",
1285
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80890/A.java",
1286
		"package b80890;\n" + 
1286
		"package b80890;\n" +
1287
		"public class A {\n" + 
1287
		"public class A {\n" +
1288
		"	protected void foo(Exception e) {}\n" + 
1288
		"	protected void foo(Exception e) {}\n" +
1289
		"	protected void foo(String s) {}\n" + 
1289
		"	protected void foo(String s) {}\n" +
1290
		"}\n" + 
1290
		"}\n" +
1291
		"class B1 extends A {\n" + 
1291
		"class B1 extends A {\n" +
1292
		"	public void bar1() {\n" + 
1292
		"	public void bar1() {\n" +
1293
		"		foo(null);\n" + 
1293
		"		foo(null);\n" +
1294
		"	}\n" + 
1294
		"	}\n" +
1295
		"}\n" + 
1295
		"}\n" +
1296
		"class B2 extends A {\n" + 
1296
		"class B2 extends A {\n" +
1297
		"	public void bar2() {\n" + 
1297
		"	public void bar2() {\n" +
1298
		"		foo(null);\n" + 
1298
		"		foo(null);\n" +
1299
		"	}\n" + 
1299
		"	}\n" +
1300
		"}\n"
1300
		"}\n"
1301
		);
1301
		);
1302
	// search for first and second method should both return 2 inaccurate matches
1302
	// search for first and second method should both return 2 inaccurate matches
Lines 1306-1314 Link Here
1306
	method = type.getMethods()[1];
1306
	method = type.getMethods()[1];
1307
	search(method, REFERENCES);
1307
	search(method, REFERENCES);
1308
	assertSearchResults(
1308
	assertSearchResults(
1309
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" + 
1309
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" +
1310
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH\n" + 
1310
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH\n" +
1311
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" + 
1311
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" +
1312
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH"
1312
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH"
1313
	);
1313
	);
1314
}
1314
}
Lines 1333-1350 Link Here
1333
public void testBug81084a() throws CoreException, JavaModelException {
1333
public void testBug81084a() throws CoreException, JavaModelException {
1334
	workingCopies = new ICompilationUnit[1];
1334
	workingCopies = new ICompilationUnit[1];
1335
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1335
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1336
		"package b81084a;\n" + 
1336
		"package b81084a;\n" +
1337
		"class List<E> {}\n" + 
1337
		"class List<E> {}\n" +
1338
		"public class Test {\n" + 
1338
		"public class Test {\n" +
1339
		"	class Element{}\n" + 
1339
		"	class Element{}\n" +
1340
		"	static class Inner {\n" + 
1340
		"	static class Inner {\n" +
1341
		"		private final List<Element> fList1;\n" + 
1341
		"		private final List<Element> fList1;\n" +
1342
		"		private final List<Test.Element> fList2;\n" + 
1342
		"		private final List<Test.Element> fList2;\n" +
1343
		"		public Inner(List<Element> list) {\n" + 
1343
		"		public Inner(List<Element> list) {\n" +
1344
		"			fList1 = list;\n" + 
1344
		"			fList1 = list;\n" +
1345
		"			fList2 = list;\n" + 
1345
		"			fList2 = list;\n" +
1346
		"		}\n" + 
1346
		"		}\n" +
1347
		"	}\n" + 
1347
		"	}\n" +
1348
		"}\n"
1348
		"}\n"
1349
	);
1349
	);
1350
	IType type = workingCopies[0].getType("Test").getType("Inner");
1350
	IType type = workingCopies[0].getType("Test").getType("Inner");
Lines 1353-1401 Link Here
1353
	IField field2 = type.getField("fList2");
1353
	IField field2 = type.getField("fList2");
1354
	search(field2, REFERENCES);
1354
	search(field2, REFERENCES);
1355
	assertSearchResults(
1355
	assertSearchResults(
1356
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" + 
1356
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" +
1357
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1357
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1358
	);
1358
	);
1359
}
1359
}
1360
public void testBug81084string() throws CoreException, JavaModelException {
1360
public void testBug81084string() throws CoreException, JavaModelException {
1361
	workingCopies = new ICompilationUnit[1];
1361
	workingCopies = new ICompilationUnit[1];
1362
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1362
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1363
		"package b81084a;\n" + 
1363
		"package b81084a;\n" +
1364
		"class List<E> {}\n" + 
1364
		"class List<E> {}\n" +
1365
		"public class Test {\n" + 
1365
		"public class Test {\n" +
1366
		"	class Element{}\n" + 
1366
		"	class Element{}\n" +
1367
		"	static class Inner {\n" + 
1367
		"	static class Inner {\n" +
1368
		"		private final List<Element> fList1;\n" + 
1368
		"		private final List<Element> fList1;\n" +
1369
		"		private final List<Test.Element> fList2;\n" + 
1369
		"		private final List<Test.Element> fList2;\n" +
1370
		"		public Inner(List<Element> list) {\n" + 
1370
		"		public Inner(List<Element> list) {\n" +
1371
		"			fList1 = list;\n" + 
1371
		"			fList1 = list;\n" +
1372
		"			fList2 = list;\n" + 
1372
		"			fList2 = list;\n" +
1373
		"		}\n" + 
1373
		"		}\n" +
1374
		"	}\n" + 
1374
		"	}\n" +
1375
		"}\n"
1375
		"}\n"
1376
	);
1376
	);
1377
	search("fList1", FIELD, REFERENCES);
1377
	search("fList1", FIELD, REFERENCES);
1378
	search("fList2", FIELD, REFERENCES);
1378
	search("fList2", FIELD, REFERENCES);
1379
	assertSearchResults(
1379
	assertSearchResults(
1380
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" + 
1380
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" +
1381
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1381
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1382
	);
1382
	);
1383
}
1383
}
1384
public void testBug81084b() throws CoreException, JavaModelException {
1384
public void testBug81084b() throws CoreException, JavaModelException {
1385
	workingCopies = new ICompilationUnit[1];
1385
	workingCopies = new ICompilationUnit[1];
1386
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084b/Test.java",
1386
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084b/Test.java",
1387
		"package b81084b;\n" + 
1387
		"package b81084b;\n" +
1388
		"class List<E> {}\n" + 
1388
		"class List<E> {}\n" +
1389
		"public class Test {\n" + 
1389
		"public class Test {\n" +
1390
		"	class Element{}\n" + 
1390
		"	class Element{}\n" +
1391
		"	static class Inner {\n" + 
1391
		"	static class Inner {\n" +
1392
		"		private final List<? extends Element> fListb1;\n" + 
1392
		"		private final List<? extends Element> fListb1;\n" +
1393
		"		private final List<? extends Test.Element> fListb2;\n" + 
1393
		"		private final List<? extends Test.Element> fListb2;\n" +
1394
		"		public Inner(List<Element> list) {\n" + 
1394
		"		public Inner(List<Element> list) {\n" +
1395
		"			fListb1 = list;\n" + 
1395
		"			fListb1 = list;\n" +
1396
		"			fListb2 = list;\n" + 
1396
		"			fListb2 = list;\n" +
1397
		"		}\n" + 
1397
		"		}\n" +
1398
		"	}\n" + 
1398
		"	}\n" +
1399
		"}\n"
1399
		"}\n"
1400
		);
1400
		);
1401
	// search element patterns
1401
	// search element patterns
Lines 1405-1411 Link Here
1405
	IField field2 = type.getField("fListb2");
1405
	IField field2 = type.getField("fListb2");
1406
	search(field2, REFERENCES);
1406
	search(field2, REFERENCES);
1407
	assertSearchResults(
1407
	assertSearchResults(
1408
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb1] EXACT_MATCH\n" + 
1408
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb1] EXACT_MATCH\n" +
1409
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb2] EXACT_MATCH"
1409
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb2] EXACT_MATCH"
1410
	);
1410
	);
1411
}
1411
}
Lines 1432-1453 Link Here
1432
	workingCopies = new ICompilationUnit[1];
1432
	workingCopies = new ICompilationUnit[1];
1433
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/m/Test.java",
1433
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/m/Test.java",
1434
		"package b82088.m;\n" +
1434
		"package b82088.m;\n" +
1435
		"/**\n" + 
1435
		"/**\n" +
1436
		" * @see #setA(A)\n" + 
1436
		" * @see #setA(A)\n" +
1437
		" */\n" + 
1437
		" */\n" +
1438
		"public class Test {\n" + 
1438
		"public class Test {\n" +
1439
		"	A a;\n" + 
1439
		"	A a;\n" +
1440
		"	public void setA(A a) {\n" + 
1440
		"	public void setA(A a) {\n" +
1441
		"		this.a = a;\n" + 
1441
		"		this.a = a;\n" +
1442
		"	}\n" + 
1442
		"	}\n" +
1443
		"}\n" + 
1443
		"}\n" +
1444
		"class A {}\n"
1444
		"class A {}\n"
1445
		);
1445
		);
1446
	IType type = workingCopies[0].getType("A");
1446
	IType type = workingCopies[0].getType("A");
1447
	search(type, REFERENCES);
1447
	search(type, REFERENCES);
1448
	assertSearchResults(
1448
	assertSearchResults(
1449
		"src/b82088/m/Test.java b82088.m.Test [A] EXACT_MATCH\n" + 
1449
		"src/b82088/m/Test.java b82088.m.Test [A] EXACT_MATCH\n" +
1450
		"src/b82088/m/Test.java b82088.m.Test.a [A] EXACT_MATCH\n" + 
1450
		"src/b82088/m/Test.java b82088.m.Test.a [A] EXACT_MATCH\n" +
1451
		"src/b82088/m/Test.java void b82088.m.Test.setA(A) [A] EXACT_MATCH"
1451
		"src/b82088/m/Test.java void b82088.m.Test.setA(A) [A] EXACT_MATCH"
1452
	);
1452
	);
1453
}
1453
}
Lines 1455-1476 Link Here
1455
	workingCopies = new ICompilationUnit[1];
1455
	workingCopies = new ICompilationUnit[1];
1456
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/c/Test.java",
1456
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/c/Test.java",
1457
		"package b82088.c;\n" +
1457
		"package b82088.c;\n" +
1458
		"/**\n" + 
1458
		"/**\n" +
1459
		" * @see #Test(A)\n" + 
1459
		" * @see #Test(A)\n" +
1460
		" */\n" + 
1460
		" */\n" +
1461
		"public class Test {\n" + 
1461
		"public class Test {\n" +
1462
		"	A a;\n" + 
1462
		"	A a;\n" +
1463
		"	Test(A a) {\n" + 
1463
		"	Test(A a) {\n" +
1464
		"		this.a = a;\n" + 
1464
		"		this.a = a;\n" +
1465
		"	}\n" + 
1465
		"	}\n" +
1466
		"}\n" + 
1466
		"}\n" +
1467
		"class A {}\n"
1467
		"class A {}\n"
1468
		);
1468
		);
1469
	IType type = workingCopies[0].getType("A");
1469
	IType type = workingCopies[0].getType("A");
1470
	search(type, REFERENCES);
1470
	search(type, REFERENCES);
1471
	assertSearchResults(
1471
	assertSearchResults(
1472
		"src/b82088/c/Test.java b82088.c.Test [A] EXACT_MATCH\n" + 
1472
		"src/b82088/c/Test.java b82088.c.Test [A] EXACT_MATCH\n" +
1473
		"src/b82088/c/Test.java b82088.c.Test.a [A] EXACT_MATCH\n" + 
1473
		"src/b82088/c/Test.java b82088.c.Test.a [A] EXACT_MATCH\n" +
1474
		"src/b82088/c/Test.java b82088.c.Test(A) [A] EXACT_MATCH"
1474
		"src/b82088/c/Test.java b82088.c.Test(A) [A] EXACT_MATCH"
1475
	);
1475
	);
1476
}
1476
}
Lines 1482-1491 Link Here
1482
private void setUpBug82208() throws CoreException {
1482
private void setUpBug82208() throws CoreException {
1483
	workingCopies = new ICompilationUnit[1];
1483
	workingCopies = new ICompilationUnit[1];
1484
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82208/Test.java",
1484
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82208/Test.java",
1485
		"package b82208;\n" + 
1485
		"package b82208;\n" +
1486
		"interface B82208_I {}\n" + 
1486
		"interface B82208_I {}\n" +
1487
		"enum B82208_E {}\n" + 
1487
		"enum B82208_E {}\n" +
1488
		"@interface B82208_A {}\n" + 
1488
		"@interface B82208_A {}\n" +
1489
		"public class B82208 {}\n"
1489
		"public class B82208 {}\n"
1490
	);
1490
	);
1491
}
1491
}
Lines 1494-1502 Link Here
1494
	setUpBug82208();
1494
	setUpBug82208();
1495
	search("B82208*", TYPE, ALL_OCCURRENCES);
1495
	search("B82208*", TYPE, ALL_OCCURRENCES);
1496
	assertSearchResults(
1496
	assertSearchResults(
1497
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" + 
1497
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" +
1498
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" + 
1498
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" +
1499
		"src/b82208/Test.java b82208.B82208_A [B82208_A] EXACT_MATCH\n" + 
1499
		"src/b82208/Test.java b82208.B82208_A [B82208_A] EXACT_MATCH\n" +
1500
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1500
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1501
	);
1501
	);
1502
}
1502
}
Lines 1537-1543 Link Here
1537
	setUpBug82208();
1537
	setUpBug82208();
1538
	search("B82208*", CLASS_AND_INTERFACE, ALL_OCCURRENCES);
1538
	search("B82208*", CLASS_AND_INTERFACE, ALL_OCCURRENCES);
1539
	assertSearchResults(
1539
	assertSearchResults(
1540
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" + 
1540
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" +
1541
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1541
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1542
	);
1542
	);
1543
}
1543
}
Lines 1546-1552 Link Here
1546
	setUpBug82208();
1546
	setUpBug82208();
1547
	search("B82208*", CLASS_AND_ENUM, ALL_OCCURRENCES);
1547
	search("B82208*", CLASS_AND_ENUM, ALL_OCCURRENCES);
1548
	assertSearchResults(
1548
	assertSearchResults(
1549
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" + 
1549
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" +
1550
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1550
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1551
	);
1551
	);
1552
}
1552
}
Lines 1559-1585 Link Here
1559
	resultCollector.showRule = true;
1559
	resultCollector.showRule = true;
1560
	workingCopies = new ICompilationUnit[1];
1560
	workingCopies = new ICompilationUnit[1];
1561
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82673/Test.java",
1561
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82673/Test.java",
1562
		"package b82673;\n" + 
1562
		"package b82673;\n" +
1563
		"public class Test {\n" + 
1563
		"public class Test {\n" +
1564
		"    void test1() {\n" + 
1564
		"    void test1() {\n" +
1565
		"        class Dummy {};\n" + 
1565
		"        class Dummy {};\n" +
1566
		"        Dummy d = new Dummy();\n" + 
1566
		"        Dummy d = new Dummy();\n" +
1567
		"		new X();\n" + 
1567
		"		new X();\n" +
1568
		"    }\n" + 
1568
		"    }\n" +
1569
		"    \n" + 
1569
		"    \n" +
1570
		"    void test2() {\n" + 
1570
		"    void test2() {\n" +
1571
		"        class Dummy {};\n" + 
1571
		"        class Dummy {};\n" +
1572
		"        Dummy d = new Dummy();\n" + 
1572
		"        Dummy d = new Dummy();\n" +
1573
		"		new Y();\n" + 
1573
		"		new Y();\n" +
1574
		"    }\n" + 
1574
		"    }\n" +
1575
		"}\n" + 
1575
		"}\n" +
1576
		"class X {}\n" + 
1576
		"class X {}\n" +
1577
		"class Y {}\n"
1577
		"class Y {}\n"
1578
	);
1578
	);
1579
	IType type = selectType(workingCopies[0], "Test").getMethod("test1", new String[0]).getType("Dummy", 1);
1579
	IType type = selectType(workingCopies[0], "Test").getMethod("test1", new String[0]).getType("Dummy", 1);
1580
	search(type, REFERENCES);
1580
	search(type, REFERENCES);
1581
	assertSearchResults(
1581
	assertSearchResults(
1582
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH\n" + 
1582
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH\n" +
1583
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH"
1583
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH"
1584
	);
1584
	);
1585
}
1585
}
Lines 1592-1617 Link Here
1592
	resultCollector.showRule = true;
1592
	resultCollector.showRule = true;
1593
	workingCopies = new ICompilationUnit[1];
1593
	workingCopies = new ICompilationUnit[1];
1594
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83012/Test.java",
1594
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83012/Test.java",
1595
		"package b83012;\n" + 
1595
		"package b83012;\n" +
1596
		"@interface A {\n" + 
1596
		"@interface A {\n" +
1597
		"    String value() default \"\";\n" + 
1597
		"    String value() default \"\";\n" +
1598
		"}\n" + 
1598
		"}\n" +
1599
		"@interface Main {\n" + 
1599
		"@interface Main {\n" +
1600
		"	A first() default @A(\"Void\");\n" + 
1600
		"	A first() default @A(\"Void\");\n" +
1601
		"	A second();\n" + 
1601
		"	A second();\n" +
1602
		"}\n" + 
1602
		"}\n" +
1603
		"\n" + 
1603
		"\n" +
1604
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" + 
1604
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" +
1605
		"public class Test {\n" + 
1605
		"public class Test {\n" +
1606
		"}\n"
1606
		"}\n"
1607
	);
1607
	);
1608
	IType type = selectType(workingCopies[0], "A");
1608
	IType type = selectType(workingCopies[0], "A");
1609
	search(type, REFERENCES);
1609
	search(type, REFERENCES);
1610
	assertSearchResults(
1610
	assertSearchResults(
1611
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" + 
1611
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" +
1612
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" + 
1612
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" +
1613
		"src/b83012/Test.java A b83012.Main.second() [A] EXACT_MATCH\n" + 
1613
		"src/b83012/Test.java A b83012.Main.second() [A] EXACT_MATCH\n" +
1614
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH\n" + 
1614
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH\n" +
1615
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH"
1615
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH"
1616
	);
1616
	);
1617
}
1617
}
Lines 1624-1661 Link Here
1624
	resultCollector.showRule = true;
1624
	resultCollector.showRule = true;
1625
	workingCopies = new ICompilationUnit[1];
1625
	workingCopies = new ICompilationUnit[1];
1626
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1626
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1627
		"package b83230;\n" + 
1627
		"package b83230;\n" +
1628
		"@interface Author {\n" + 
1628
		"@interface Author {\n" +
1629
		"	String[] authorName() default \"FREDERIC\";\n" + 
1629
		"	String[] authorName() default \"FREDERIC\";\n" +
1630
		"	int[] age();\n" + 
1630
		"	int[] age();\n" +
1631
		"	int ageMin = 20;\n" + 
1631
		"	int ageMin = 20;\n" +
1632
		"	@interface Surname {}\n" + 
1632
		"	@interface Surname {}\n" +
1633
		"	class Address {\n" + 
1633
		"	class Address {\n" +
1634
		"		String city;\n" + 
1634
		"		String city;\n" +
1635
		"		public void foo(Object obj) {}\n" + 
1635
		"		public void foo(Object obj) {}\n" +
1636
		"	}\n" + 
1636
		"	}\n" +
1637
		"}\n" +
1637
		"}\n" +
1638
		"\n" +
1638
		"\n" +
1639
		"@Author(authorName=\"FREDERIC\", age=41)\n" + 
1639
		"@Author(authorName=\"FREDERIC\", age=41)\n" +
1640
		"public class Test {\n" + 
1640
		"public class Test {\n" +
1641
		"	@Author(authorName={\"FREDERIC\", \"JEROME\"}, age={41, 35} )\n" + 
1641
		"	@Author(authorName={\"FREDERIC\", \"JEROME\"}, age={41, 35} )\n" +
1642
		"	Test() {}\n" + 
1642
		"	Test() {}\n" +
1643
		"	@Author(authorName=\"PHILIPPE\", age=37)\n" + 
1643
		"	@Author(authorName=\"PHILIPPE\", age=37)\n" +
1644
		"	void foo() {\n" + 
1644
		"	void foo() {\n" +
1645
		"		@Author(authorName=\"FREDERIC\", age=41)\n" + 
1645
		"		@Author(authorName=\"FREDERIC\", age=41)\n" +
1646
		"		final Object obj = new Object() {};\n" + 
1646
		"		final Object obj = new Object() {};\n" +
1647
		"		@Author(authorName=\"FREDERIC\", age=41)\n" + 
1647
		"		@Author(authorName=\"FREDERIC\", age=41)\n" +
1648
		"		class Local {\n" + 
1648
		"		class Local {\n" +
1649
		"			@Author(authorName=\"FREDERIC\", age=41)\n" + 
1649
		"			@Author(authorName=\"FREDERIC\", age=41)\n" +
1650
		"			String foo() {\n" + 
1650
		"			String foo() {\n" +
1651
		"				Author.Address address = new Author.Address();\n" + 
1651
		"				Author.Address address = new Author.Address();\n" +
1652
		"				address.foo(obj);\n" + 
1652
		"				address.foo(obj);\n" +
1653
		"				return address.city;\n" + 
1653
		"				return address.city;\n" +
1654
		"			}\n" + 
1654
		"			}\n" +
1655
		"		}\n" + 
1655
		"		}\n" +
1656
		"	}\n" + 
1656
		"	}\n" +
1657
		"	@Author(authorName=\"DAVID\", age=28)\n" + 
1657
		"	@Author(authorName=\"DAVID\", age=28)\n" +
1658
		"	int min = Author.ageMin;\n" + 
1658
		"	int min = Author.ageMin;\n" +
1659
		"}\n"
1659
		"}\n"
1660
	);
1660
	);
1661
}
1661
}
Lines 1665-1676 Link Here
1665
	IMethod method = selectMethod(workingCopies[0], "authorName");
1665
	IMethod method = selectMethod(workingCopies[0], "authorName");
1666
	search(method, REFERENCES);
1666
	search(method, REFERENCES);
1667
	assertSearchResults(
1667
	assertSearchResults(
1668
		"src/b83230/Test.java b83230.Test [authorName] EXACT_MATCH\n" + 
1668
		"src/b83230/Test.java b83230.Test [authorName] EXACT_MATCH\n" +
1669
		"src/b83230/Test.java b83230.Test.min [authorName] EXACT_MATCH\n" + 
1669
		"src/b83230/Test.java b83230.Test.min [authorName] EXACT_MATCH\n" +
1670
		"src/b83230/Test.java b83230.Test() [authorName] EXACT_MATCH\n" + 
1670
		"src/b83230/Test.java b83230.Test() [authorName] EXACT_MATCH\n" +
1671
		"src/b83230/Test.java void b83230.Test.foo():Local#1 [authorName] EXACT_MATCH\n" + 
1671
		"src/b83230/Test.java void b83230.Test.foo():Local#1 [authorName] EXACT_MATCH\n" +
1672
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [authorName] EXACT_MATCH\n" + 
1672
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [authorName] EXACT_MATCH\n" +
1673
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH\n" + 
1673
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH\n" +
1674
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH"
1674
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH"
1675
	);
1675
	);
1676
}
1676
}
Lines 1689-1695 Link Here
1689
	IType type = selectType(workingCopies[0], "Address");
1689
	IType type = selectType(workingCopies[0], "Address");
1690
	search(type, REFERENCES);
1690
	search(type, REFERENCES);
1691
	assertSearchResults(
1691
	assertSearchResults(
1692
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH\n" + 
1692
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH\n" +
1693
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH"
1693
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH"
1694
	);
1694
	);
1695
}
1695
}
Lines 1724-1747 Link Here
1724
	resultCollector.showRule = true;
1724
	resultCollector.showRule = true;
1725
	workingCopies = new ICompilationUnit[1];
1725
	workingCopies = new ICompilationUnit[1];
1726
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1726
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1727
		"package b83230;\n" + 
1727
		"package b83230;\n" +
1728
		"@interface Annot {\n" + 
1728
		"@interface Annot {\n" +
1729
		"	int value();\n" +
1729
		"	int value();\n" +
1730
		"}\n" +
1730
		"}\n" +
1731
		"@Annot(41)\n" + 
1731
		"@Annot(41)\n" +
1732
		"public class Test {\n" + 
1732
		"public class Test {\n" +
1733
		"	@Annot(10)\n" + 
1733
		"	@Annot(10)\n" +
1734
		"	public void foo() {}\n" + 
1734
		"	public void foo() {}\n" +
1735
		"	@Annot(21)\n" + 
1735
		"	@Annot(21)\n" +
1736
		"	int bar;\n" + 
1736
		"	int bar;\n" +
1737
		"}\n"
1737
		"}\n"
1738
	);
1738
	);
1739
	IType type = selectType(workingCopies[0], "Annot");
1739
	IType type = selectType(workingCopies[0], "Annot");
1740
	IMethod method = type.getMethod("value", new String[0]);
1740
	IMethod method = type.getMethod("value", new String[0]);
1741
	search(method, REFERENCES);
1741
	search(method, REFERENCES);
1742
	assertSearchResults(
1742
	assertSearchResults(
1743
		"src/b83230/Test.java b83230.Test [41] EXACT_MATCH\n" + 
1743
		"src/b83230/Test.java b83230.Test [41] EXACT_MATCH\n" +
1744
		"src/b83230/Test.java b83230.Test.bar [21] EXACT_MATCH\n" + 
1744
		"src/b83230/Test.java b83230.Test.bar [21] EXACT_MATCH\n" +
1745
		"src/b83230/Test.java void b83230.Test.foo() [10] EXACT_MATCH"
1745
		"src/b83230/Test.java void b83230.Test.foo() [10] EXACT_MATCH"
1746
	);
1746
	);
1747
}
1747
}
Lines 1749-1773 Link Here
1749
	resultCollector.showRule = true;
1749
	resultCollector.showRule = true;
1750
	workingCopies = new ICompilationUnit[1];
1750
	workingCopies = new ICompilationUnit[1];
1751
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1751
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1752
		"package b83230;\n" + 
1752
		"package b83230;\n" +
1753
		"@interface A {\n" + 
1753
		"@interface A {\n" +
1754
		"    String value() default \"\";\n" + 
1754
		"    String value() default \"\";\n" +
1755
		"}\n" + 
1755
		"}\n" +
1756
		"@interface Main {\n" + 
1756
		"@interface Main {\n" +
1757
		"	A first() default @A(\"Void\");\n" + 
1757
		"	A first() default @A(\"Void\");\n" +
1758
		"	A second();\n" + 
1758
		"	A second();\n" +
1759
		"}\n" + 
1759
		"}\n" +
1760
		"\n" + 
1760
		"\n" +
1761
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" + 
1761
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" +
1762
		"public class Test {\n" + 
1762
		"public class Test {\n" +
1763
		"}\n"
1763
		"}\n"
1764
	);
1764
	);
1765
	IType type = selectType(workingCopies[0], "A");
1765
	IType type = selectType(workingCopies[0], "A");
1766
	IMethod method = type.getMethod("value", new String[0]);
1766
	IMethod method = type.getMethod("value", new String[0]);
1767
	search(method, REFERENCES);
1767
	search(method, REFERENCES);
1768
	assertSearchResults(
1768
	assertSearchResults(
1769
		"src/b83230/Test.java A b83230.Main.first() [\"Void\"] EXACT_MATCH\n" + 
1769
		"src/b83230/Test.java A b83230.Main.first() [\"Void\"] EXACT_MATCH\n" +
1770
		"src/b83230/Test.java b83230.Test [\"\"] EXACT_MATCH\n" + 
1770
		"src/b83230/Test.java b83230.Test [\"\"] EXACT_MATCH\n" +
1771
		"src/b83230/Test.java b83230.Test [\"2\"] EXACT_MATCH"
1771
		"src/b83230/Test.java b83230.Test [\"2\"] EXACT_MATCH"
1772
	);
1772
	);
1773
}
1773
}
Lines 1780-1800 Link Here
1780
	resultCollector.showRule = true;
1780
	resultCollector.showRule = true;
1781
	workingCopies = new ICompilationUnit[1];
1781
	workingCopies = new ICompilationUnit[1];
1782
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Test.java",
1782
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Test.java",
1783
		"package b83304;\n" + 
1783
		"package b83304;\n" +
1784
		"public class Test {\n" + 
1784
		"public class Test {\n" +
1785
		"	void foo() {\n" + 
1785
		"	void foo() {\n" +
1786
		"		Class<? extends Throwable> l1= null;\n" + 
1786
		"		Class<? extends Throwable> l1= null;\n" +
1787
		"		Class<Exception> l2= null;\n" + 
1787
		"		Class<Exception> l2= null;\n" +
1788
		"		\n" + 
1788
		"		\n" +
1789
		"		Class<String> string_Class;\n" + 
1789
		"		Class<String> string_Class;\n" +
1790
		"	}\n" + 
1790
		"	}\n" +
1791
		"}\n"
1791
		"}\n"
1792
		);
1792
		);
1793
	IType type = selectType(workingCopies[0], "Class", 3);
1793
	IType type = selectType(workingCopies[0], "Class", 3);
1794
	search(type, REFERENCES, ERASURE_RULE, getJavaSearchWorkingCopiesScope());
1794
	search(type, REFERENCES, ERASURE_RULE, getJavaSearchWorkingCopiesScope());
1795
	assertSearchResults(
1795
	assertSearchResults(
1796
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" + 
1796
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" +
1797
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" + 
1797
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" +
1798
		"src/b83304/Test.java void b83304.Test.foo() [Class] EXACT_MATCH"
1798
		"src/b83304/Test.java void b83304.Test.foo() [Class] EXACT_MATCH"
1799
	);
1799
	);
1800
}
1800
}
Lines 1802-1816 Link Here
1802
	resultCollector.showRule = true;
1802
	resultCollector.showRule = true;
1803
	workingCopies = new ICompilationUnit[1];
1803
	workingCopies = new ICompilationUnit[1];
1804
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Types.java",
1804
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Types.java",
1805
		"package b83304;\n" + 
1805
		"package b83304;\n" +
1806
		"import g1.t.s.def.Generic;\n" + 
1806
		"import g1.t.s.def.Generic;\n" +
1807
		"public class Types {\n" + 
1807
		"public class Types {\n" +
1808
		"	public Generic gen;\n" + 
1808
		"	public Generic gen;\n" +
1809
		"	public Generic<Object> gen_obj;\n" + 
1809
		"	public Generic<Object> gen_obj;\n" +
1810
		"	public Generic<Exception> gen_exc;\n" + 
1810
		"	public Generic<Exception> gen_exc;\n" +
1811
		"	public Generic<?> gen_wld;\n" + 
1811
		"	public Generic<?> gen_wld;\n" +
1812
		"	public Generic<? extends Throwable> gen_thr;\n" + 
1812
		"	public Generic<? extends Throwable> gen_thr;\n" +
1813
		"	public Generic<? super RuntimeException> gen_run;\n" + 
1813
		"	public Generic<? super RuntimeException> gen_run;\n" +
1814
		"}\n"
1814
		"}\n"
1815
	);
1815
	);
1816
}
1816
}
Lines 1820-1832 Link Here
1820
	IType type = selectType(workingCopies[0], "Generic", 4);
1820
	IType type = selectType(workingCopies[0], "Generic", 4);
1821
	search(type, REFERENCES, ERASURE_RULE);
1821
	search(type, REFERENCES, ERASURE_RULE);
1822
	assertSearchResults(
1822
	assertSearchResults(
1823
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" + 
1823
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" +
1824
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" + 
1824
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" +
1825
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" + 
1825
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" +
1826
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EXACT_MATCH\n" + 
1826
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EXACT_MATCH\n" +
1827
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" + 
1827
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" +
1828
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] EQUIVALENT_MATCH\n" + 
1828
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] EQUIVALENT_MATCH\n" +
1829
		"src/b83304/Types.java b83304.Types.gen_run [Generic] EQUIVALENT_MATCH\n" + 
1829
		"src/b83304/Types.java b83304.Types.gen_run [Generic] EQUIVALENT_MATCH\n" +
1830
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1830
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1831
	);
1831
	);
1832
}
1832
}
Lines 1836-1848 Link Here
1836
	IType type = getClassFile("JavaSearchBugs", "lib/JavaSearch15.jar", "g1.t.s.def", "Generic.class").getType();
1836
	IType type = getClassFile("JavaSearchBugs", "lib/JavaSearch15.jar", "g1.t.s.def", "Generic.class").getType();
1837
	search(type, REFERENCES, ERASURE_RULE);
1837
	search(type, REFERENCES, ERASURE_RULE);
1838
	assertSearchResults(
1838
	assertSearchResults(
1839
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" + 
1839
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" +
1840
		"src/b83304/Types.java b83304.Types.gen [Generic] ERASURE_RAW_MATCH\n" + 
1840
		"src/b83304/Types.java b83304.Types.gen [Generic] ERASURE_RAW_MATCH\n" +
1841
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" + 
1841
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" +
1842
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] ERASURE_MATCH\n" + 
1842
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] ERASURE_MATCH\n" +
1843
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] ERASURE_MATCH\n" + 
1843
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] ERASURE_MATCH\n" +
1844
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" + 
1844
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" +
1845
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" + 
1845
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" +
1846
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() EXACT_MATCH"
1846
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() EXACT_MATCH"
1847
	);
1847
	);
1848
}
1848
}
Lines 1851-1863 Link Here
1851
	setUpBug83304_TypeParameterizedElementPattern();
1851
	setUpBug83304_TypeParameterizedElementPattern();
1852
	search("Generic<? super Exception>", TYPE, REFERENCES, ERASURE_RULE);
1852
	search("Generic<? super Exception>", TYPE, REFERENCES, ERASURE_RULE);
1853
	assertSearchResults(
1853
	assertSearchResults(
1854
		"src/b83304/Types.java [Generic] EQUIVALENT_RAW_MATCH\n" + 
1854
		"src/b83304/Types.java [Generic] EQUIVALENT_RAW_MATCH\n" +
1855
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" + 
1855
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" +
1856
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] EQUIVALENT_MATCH\n" + 
1856
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] EQUIVALENT_MATCH\n" +
1857
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EQUIVALENT_MATCH\n" + 
1857
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EQUIVALENT_MATCH\n" +
1858
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" + 
1858
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" +
1859
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" + 
1859
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" +
1860
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" + 
1860
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" +
1861
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1861
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1862
	);
1862
	);
1863
}
1863
}
Lines 1865-1880 Link Here
1865
	resultCollector.showRule = true;
1865
	resultCollector.showRule = true;
1866
	workingCopies = new ICompilationUnit[1];
1866
	workingCopies = new ICompilationUnit[1];
1867
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Methods.java",
1867
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Methods.java",
1868
		"package b83304;\n" + 
1868
		"package b83304;\n" +
1869
		"import g5.m.def.Single;\n" + 
1869
		"import g5.m.def.Single;\n" +
1870
		"public class Methods {\n" + 
1870
		"public class Methods {\n" +
1871
		"	void test() {\n" + 
1871
		"	void test() {\n" +
1872
		"		Single<Exception> gs = new Single<Exception>();\n" + 
1872
		"		Single<Exception> gs = new Single<Exception>();\n" +
1873
		"		Exception exc = new Exception();\n" + 
1873
		"		Exception exc = new Exception();\n" +
1874
		"		gs.<Throwable>generic(exc);\n" + 
1874
		"		gs.<Throwable>generic(exc);\n" +
1875
		"		gs.<Exception>generic(exc);\n" + 
1875
		"		gs.<Exception>generic(exc);\n" +
1876
		"		gs.<String>generic(\"\");\n" + 
1876
		"		gs.<String>generic(\"\");\n" +
1877
		"	}\n" + 
1877
		"	}\n" +
1878
		"}\n"
1878
		"}\n"
1879
	);
1879
	);
1880
}
1880
}
Lines 1884-1891 Link Here
1884
	IMethod method = selectMethod(workingCopies[0], "generic", 2);
1884
	IMethod method = selectMethod(workingCopies[0], "generic", 2);
1885
	search(method, REFERENCES, ERASURE_RULE);
1885
	search(method, REFERENCES, ERASURE_RULE);
1886
	assertSearchResults(
1886
	assertSearchResults(
1887
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1887
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1888
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" + 
1888
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" +
1889
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1889
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1890
	);
1890
	);
1891
}
1891
}
Lines 1896-1903 Link Here
1896
	IMethod method = type.getMethod("generic", new String[] { "TU;" });
1896
	IMethod method = type.getMethod("generic", new String[] { "TU;" });
1897
	search(method, REFERENCES, ERASURE_RULE);
1897
	search(method, REFERENCES, ERASURE_RULE);
1898
	assertSearchResults(
1898
	assertSearchResults(
1899
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1899
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1900
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1900
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1901
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1901
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1902
	);
1902
	);
1903
}
1903
}
Lines 1906-1913 Link Here
1906
	setUpBug83304_MethodParameterizedElementPattern();
1906
	setUpBug83304_MethodParameterizedElementPattern();
1907
	search("<Exception>generic", METHOD, REFERENCES, ERASURE_RULE);
1907
	search("<Exception>generic", METHOD, REFERENCES, ERASURE_RULE);
1908
	assertSearchResults(
1908
	assertSearchResults(
1909
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1909
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1910
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" + 
1910
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" +
1911
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1911
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1912
	);
1912
	);
1913
}
1913
}
Lines 1915-1929 Link Here
1915
	resultCollector.showRule = true;
1915
	resultCollector.showRule = true;
1916
	workingCopies = new ICompilationUnit[1];
1916
	workingCopies = new ICompilationUnit[1];
1917
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Constructors.java",
1917
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Constructors.java",
1918
		"package b83304;\n" + 
1918
		"package b83304;\n" +
1919
		"import g5.c.def.Single;\n" + 
1919
		"import g5.c.def.Single;\n" +
1920
		"public class Constructors {\n" + 
1920
		"public class Constructors {\n" +
1921
		"	void test() {\n" + 
1921
		"	void test() {\n" +
1922
		"		Exception exc= new Exception();\n" + 
1922
		"		Exception exc= new Exception();\n" +
1923
		"		new <Throwable>Single<String>(\"\", exc);\n" + 
1923
		"		new <Throwable>Single<String>(\"\", exc);\n" +
1924
		"		new <Exception>Single<String>(\"\", exc);\n" + 
1924
		"		new <Exception>Single<String>(\"\", exc);\n" +
1925
		"		new <String>Single<String>(\"\", \"\");\n" + 
1925
		"		new <String>Single<String>(\"\", \"\");\n" +
1926
		"	}\n" + 
1926
		"	}\n" +
1927
		"}\n"
1927
		"}\n"
1928
	);
1928
	);
1929
}
1929
}
Lines 1933-1940 Link Here
1933
	IMethod method = selectMethod(workingCopies[0], "Single", 3);
1933
	IMethod method = selectMethod(workingCopies[0], "Single", 3);
1934
	search(method, REFERENCES, ERASURE_RULE);
1934
	search(method, REFERENCES, ERASURE_RULE);
1935
	assertSearchResults(
1935
	assertSearchResults(
1936
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1936
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1937
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" + 
1937
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" +
1938
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1938
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1939
	);
1939
	);
1940
}
1940
}
Lines 1945-1952 Link Here
1945
	IMethod method = type.getMethod("Single", new String[] { "TT;", "TU;" });
1945
	IMethod method = type.getMethod("Single", new String[] { "TT;", "TU;" });
1946
	search(method, REFERENCES, ERASURE_RULE);
1946
	search(method, REFERENCES, ERASURE_RULE);
1947
	assertSearchResults(
1947
	assertSearchResults(
1948
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1948
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1949
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1949
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1950
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1950
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1951
	);
1951
	);
1952
}
1952
}
Lines 1955-1964 Link Here
1955
	setUpBug83304_ConstructorGenericElementPattern();
1955
	setUpBug83304_ConstructorGenericElementPattern();
1956
	search("<Exception>Single", CONSTRUCTOR, REFERENCES, ERASURE_RULE);
1956
	search("<Exception>Single", CONSTRUCTOR, REFERENCES, ERASURE_RULE);
1957
	assertSearchResults(
1957
	assertSearchResults(
1958
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1958
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1959
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" + 
1959
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" +
1960
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH\n" + 
1960
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH\n" +
1961
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.returnParamType() ERASURE_MATCH\n" + 
1961
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.returnParamType() ERASURE_MATCH\n" +
1962
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.complete(U, g5.m.def.Single<T>) ERASURE_MATCH"
1962
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.complete(U, g5.m.def.Single<T>) ERASURE_MATCH"
1963
	);
1963
	);
1964
}
1964
}
Lines 1970-1997 Link Here
1970
private void setUpBug83804_Type() throws CoreException {
1970
private void setUpBug83804_Type() throws CoreException {
1971
	workingCopies = new ICompilationUnit[2];
1971
	workingCopies = new ICompilationUnit[2];
1972
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83804/package-info.java",
1972
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83804/package-info.java",
1973
		"/**\n" + 
1973
		"/**\n" +
1974
		" * Valid javadoc.\n" + 
1974
		" * Valid javadoc.\n" +
1975
		" * @see Test\n" + 
1975
		" * @see Test\n" +
1976
		" * @see Unknown\n" + 
1976
		" * @see Unknown\n" +
1977
		" * @see Test#foo()\n" + 
1977
		" * @see Test#foo()\n" +
1978
		" * @see Test#unknown()\n" + 
1978
		" * @see Test#unknown()\n" +
1979
		" * @see Test#field\n" + 
1979
		" * @see Test#field\n" +
1980
		" * @see Test#unknown\n" + 
1980
		" * @see Test#unknown\n" +
1981
		" * @param unexpected\n" + 
1981
		" * @param unexpected\n" +
1982
		" * @throws unexpected\n" + 
1982
		" * @throws unexpected\n" +
1983
		" * @return unexpected \n" + 
1983
		" * @return unexpected \n" +
1984
		" */\n" + 
1984
		" */\n" +
1985
		"package b83804;\n"
1985
		"package b83804;\n"
1986
	);
1986
	);
1987
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b83804/Test.java",
1987
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b83804/Test.java",
1988
		"/**\n" + 
1988
		"/**\n" +
1989
		" * Invalid javadoc\n" + 
1989
		" * Invalid javadoc\n" +
1990
		" */\n" + 
1990
		" */\n" +
1991
		"package b83804;\n" + 
1991
		"package b83804;\n" +
1992
		"public class Test {\n" + 
1992
		"public class Test {\n" +
1993
		"	public int field;\n" + 
1993
		"	public int field;\n" +
1994
		"	public void foo() {}\n" + 
1994
		"	public void foo() {}\n" +
1995
		"}\n"
1995
		"}\n"
1996
	);
1996
	);
1997
}
1997
}
Lines 2001-2010 Link Here
2001
	IType type = workingCopies[1].getType("Test");
2001
	IType type = workingCopies[1].getType("Test");
2002
	search(type, REFERENCES);
2002
	search(type, REFERENCES);
2003
	assertSearchResults(
2003
	assertSearchResults(
2004
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2004
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2005
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2005
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2006
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2006
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2007
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2007
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2008
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC"
2008
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC"
2009
	);
2009
	);
2010
}
2010
}
Lines 2037-2052 Link Here
2037
	resultCollector.showRule = true;
2037
	resultCollector.showRule = true;
2038
	workingCopies = new ICompilationUnit[1];
2038
	workingCopies = new ICompilationUnit[1];
2039
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2039
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2040
		"package b83388;\n" + 
2040
		"package b83388;\n" +
2041
		"import b83388.*;\n" + 
2041
		"import b83388.*;\n" +
2042
		"public class R {}\n"
2042
		"public class R {}\n"
2043
	);
2043
	);
2044
	IImportDeclaration importDeclaration = workingCopies[0].getImport("pack");
2044
	IImportDeclaration importDeclaration = workingCopies[0].getImport("pack");
2045
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), importDeclaration);
2045
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), importDeclaration);
2046
	SearchPattern pattern = SearchPattern.createPattern(
2046
	SearchPattern pattern = SearchPattern.createPattern(
2047
		"pack", 
2047
		"pack",
2048
		PACKAGE,
2048
		PACKAGE,
2049
		DECLARATIONS, 
2049
		DECLARATIONS,
2050
		EXACT_RULE);
2050
		EXACT_RULE);
2051
	assertNotNull("Pattern should not be null", pattern);
2051
	assertNotNull("Pattern should not be null", pattern);
2052
	MatchLocator.setFocus(pattern, importDeclaration);
2052
	MatchLocator.setFocus(pattern, importDeclaration);
Lines 2065-2080 Link Here
2065
	resultCollector.showRule = true;
2065
	resultCollector.showRule = true;
2066
	workingCopies = new ICompilationUnit[1];
2066
	workingCopies = new ICompilationUnit[1];
2067
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2067
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2068
		"package b83388;\n" + 
2068
		"package b83388;\n" +
2069
		"import b83388.*;\n" + 
2069
		"import b83388.*;\n" +
2070
		"public class R {}\n"
2070
		"public class R {}\n"
2071
	);
2071
	);
2072
	IPackageDeclaration packageDeclaration = workingCopies[0].getPackageDeclaration("pack");
2072
	IPackageDeclaration packageDeclaration = workingCopies[0].getPackageDeclaration("pack");
2073
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), packageDeclaration);
2073
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), packageDeclaration);
2074
	SearchPattern pattern = SearchPattern.createPattern(
2074
	SearchPattern pattern = SearchPattern.createPattern(
2075
		"pack", 
2075
		"pack",
2076
		PACKAGE,
2076
		PACKAGE,
2077
		DECLARATIONS, 
2077
		DECLARATIONS,
2078
		EXACT_RULE);
2078
		EXACT_RULE);
2079
	assertNotNull("Pattern should not be null", pattern);
2079
	assertNotNull("Pattern should not be null", pattern);
2080
	MatchLocator.setFocus(pattern, packageDeclaration);
2080
	MatchLocator.setFocus(pattern, packageDeclaration);
Lines 2099-2121 Link Here
2099
	resultCollector.showInsideDoc = true;
2099
	resultCollector.showInsideDoc = true;
2100
	workingCopies = new ICompilationUnit[1];
2100
	workingCopies = new ICompilationUnit[1];
2101
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83693/A.java",
2101
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83693/A.java",
2102
		"package b83693;\n" + 
2102
		"package b83693;\n" +
2103
		"import static b83693.A.m;\n" + 
2103
		"import static b83693.A.m;\n" +
2104
		"/**\n" + 
2104
		"/**\n" +
2105
		" * @see A#m(int)\n" + 
2105
		" * @see A#m(int)\n" +
2106
		" */\n" + 
2106
		" */\n" +
2107
		"class A {\n" + 
2107
		"class A {\n" +
2108
		"    static void m(int i) {\n" + 
2108
		"    static void m(int i) {\n" +
2109
		"        b83693.A.m(i);\n" + 
2109
		"        b83693.A.m(i);\n" +
2110
		"    }\n" + 
2110
		"    }\n" +
2111
		"}"
2111
		"}"
2112
	);
2112
	);
2113
	IMethod[] methods = workingCopies[0].getType("A").getMethods();
2113
	IMethod[] methods = workingCopies[0].getType("A").getMethods();
2114
	assertEquals("Invalid number of methods", 1, methods.length);
2114
	assertEquals("Invalid number of methods", 1, methods.length);
2115
	search(methods[0], REFERENCES);
2115
	search(methods[0], REFERENCES);
2116
	assertSearchResults(
2116
	assertSearchResults(
2117
		"src/b83693/A.java [b83693.A.m] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2117
		"src/b83693/A.java [b83693.A.m] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2118
		"src/b83693/A.java b83693.A [m(int)] EXACT_MATCH INSIDE_JAVADOC\n" + 
2118
		"src/b83693/A.java b83693.A [m(int)] EXACT_MATCH INSIDE_JAVADOC\n" +
2119
		"src/b83693/A.java void b83693.A.m(int) [m(i)] EXACT_MATCH OUTSIDE_JAVADOC"
2119
		"src/b83693/A.java void b83693.A.m(int) [m(i)] EXACT_MATCH OUTSIDE_JAVADOC"
2120
	);
2120
	);
2121
}
2121
}
Lines 2123-2129 Link Here
2123
/**
2123
/**
2124
 * Bug 83716: [search] refs to 2-arg constructor on Action found unexpected matches
2124
 * Bug 83716: [search] refs to 2-arg constructor on Action found unexpected matches
2125
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=83716"
2125
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=83716"
2126
 * 
2126
 *
2127
 * Note that this test does verify that bug is really fixed, but only that it has no impact
2127
 * Note that this test does verify that bug is really fixed, but only that it has no impact
2128
 * on existing behavior. It was not really possible to put a test in this suite to verify that
2128
 * on existing behavior. It was not really possible to put a test in this suite to verify that
2129
 * bug is effectively fixed as it appears only to potential match found in plugin dependencies...
2129
 * bug is effectively fixed as it appears only to potential match found in plugin dependencies...
Lines 2131-2144 Link Here
2131
public void testBug83716() throws CoreException {
2131
public void testBug83716() throws CoreException {
2132
	workingCopies = new ICompilationUnit[1];
2132
	workingCopies = new ICompilationUnit[1];
2133
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83716/X.java",
2133
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83716/X.java",
2134
		"package b83716;\n" + 
2134
		"package b83716;\n" +
2135
		"public class X {\n" + 
2135
		"public class X {\n" +
2136
		"	X() {}\n" + 
2136
		"	X() {}\n" +
2137
		"	X(int x) {}\n" + 
2137
		"	X(int x) {}\n" +
2138
		"}\n" + 
2138
		"}\n" +
2139
		"class Y extends X {\n" + 
2139
		"class Y extends X {\n" +
2140
		"	Y(int y) {\n" + 
2140
		"	Y(int y) {\n" +
2141
		"	}\n" + 
2141
		"	}\n" +
2142
		"}"
2142
		"}"
2143
	);
2143
	);
2144
	search("X", CONSTRUCTOR, REFERENCES);
2144
	search("X", CONSTRUCTOR, REFERENCES);
Lines 2155-2181 Link Here
2155
	resultCollector.showRule = true;
2155
	resultCollector.showRule = true;
2156
	workingCopies = new ICompilationUnit[2];
2156
	workingCopies = new ICompilationUnit[2];
2157
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84100/X.java",
2157
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84100/X.java",
2158
		"package b84100;\n" + 
2158
		"package b84100;\n" +
2159
		"public class X {\n" + 
2159
		"public class X {\n" +
2160
		"	void foo() {}\n" + 
2160
		"	void foo() {}\n" +
2161
		"	void foo(String s) {}\n" + 
2161
		"	void foo(String s) {}\n" +
2162
		"	void foo(String... xs) {}\n" + 
2162
		"	void foo(String... xs) {}\n" +
2163
		"	void foo(int x, String... xs) {}\n" + 
2163
		"	void foo(int x, String... xs) {}\n" +
2164
		"	void foo(String s, int x, String... xs) {}\n" + 
2164
		"	void foo(String s, int x, String... xs) {}\n" +
2165
		"}\n"
2165
		"}\n"
2166
		);
2166
		);
2167
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84100/Z.java",
2167
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84100/Z.java",
2168
		"package b84100;\n" + 
2168
		"package b84100;\n" +
2169
		"public class Z {\n" + 
2169
		"public class Z {\n" +
2170
		"	X x;\n" + 
2170
		"	X x;\n" +
2171
		"	void foo() {\n" + 
2171
		"	void foo() {\n" +
2172
		"		x.foo();\n" + 
2172
		"		x.foo();\n" +
2173
		"		x.foo(\"\");\n" + 
2173
		"		x.foo(\"\");\n" +
2174
		"		x.foo(\"\", \"\");\n" + 
2174
		"		x.foo(\"\", \"\");\n" +
2175
		"	 	x.foo(\"\", \"\", null);\n" + 
2175
		"	 	x.foo(\"\", \"\", null);\n" +
2176
		"		x.foo(3, \"\", \"\");\n" + 
2176
		"		x.foo(3, \"\", \"\");\n" +
2177
		"		x.foo(\"\", 3, \"\", \"\");\n" + 
2177
		"		x.foo(\"\", 3, \"\", \"\");\n" +
2178
		"	}\n" + 
2178
		"	}\n" +
2179
		"}\n"
2179
		"}\n"
2180
	);
2180
	);
2181
}
2181
}
Lines 2203-2209 Link Here
2203
	IMethod method = selectMethod(workingCopies[0], "foo", 3);
2203
	IMethod method = selectMethod(workingCopies[0], "foo", 3);
2204
	search(method, REFERENCES);
2204
	search(method, REFERENCES);
2205
	assertSearchResults(
2205
	assertSearchResults(
2206
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\")] EXACT_MATCH\n" + 
2206
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\")] EXACT_MATCH\n" +
2207
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\", null)] EXACT_MATCH"
2207
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\", null)] EXACT_MATCH"
2208
	);
2208
	);
2209
}
2209
}
Lines 2234-2252 Link Here
2234
	resultCollector.showRule = true;
2234
	resultCollector.showRule = true;
2235
	workingCopies = new ICompilationUnit[1];
2235
	workingCopies = new ICompilationUnit[1];
2236
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84121/Test.java",
2236
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84121/Test.java",
2237
		"package b84121;\n" + 
2237
		"package b84121;\n" +
2238
		"public class Test {\n" + 
2238
		"public class Test {\n" +
2239
		"	void foo(Test... t) {}\n" + 
2239
		"	void foo(Test... t) {}\n" +
2240
		"	void foo(int x, Test... t) {}\n" + 
2240
		"	void foo(int x, Test... t) {}\n" +
2241
		"	void foo(Test[] t1, Test... t2) {}\n" + 
2241
		"	void foo(Test[] t1, Test... t2) {}\n" +
2242
		"}\n"
2242
		"}\n"
2243
	);
2243
	);
2244
	IType type = workingCopies[0].getType("Test");
2244
	IType type = workingCopies[0].getType("Test");
2245
	search(type, REFERENCES);
2245
	search(type, REFERENCES);
2246
	assertSearchResults(
2246
	assertSearchResults(
2247
		"src/b84121/Test.java void b84121.Test.foo(Test ...) [Test] EXACT_MATCH\n" + 
2247
		"src/b84121/Test.java void b84121.Test.foo(Test ...) [Test] EXACT_MATCH\n" +
2248
		"src/b84121/Test.java void b84121.Test.foo(int, Test ...) [Test] EXACT_MATCH\n" + 
2248
		"src/b84121/Test.java void b84121.Test.foo(int, Test ...) [Test] EXACT_MATCH\n" +
2249
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH\n" + 
2249
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH\n" +
2250
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH"
2250
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH"
2251
	);
2251
	);
2252
}
2252
}
Lines 2259-2283 Link Here
2259
	resultCollector.showRule = true;
2259
	resultCollector.showRule = true;
2260
	workingCopies = new ICompilationUnit[2];
2260
	workingCopies = new ICompilationUnit[2];
2261
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84724/X.java",
2261
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84724/X.java",
2262
		"package b84724;\n" + 
2262
		"package b84724;\n" +
2263
		"public class X {\n" + 
2263
		"public class X {\n" +
2264
		"	X(String s) {}\n" + 
2264
		"	X(String s) {}\n" +
2265
		"	X(String... v) {}\n" + 
2265
		"	X(String... v) {}\n" +
2266
		"	X(int x, String... v) {}\n" + 
2266
		"	X(int x, String... v) {}\n" +
2267
		"	X(String s, int x, String... v) {}\n" + 
2267
		"	X(String s, int x, String... v) {}\n" +
2268
		"}\n"
2268
		"}\n"
2269
		);
2269
		);
2270
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84724/Z.java",
2270
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84724/Z.java",
2271
		"package b84724;\n" + 
2271
		"package b84724;\n" +
2272
		"public class Z {\n" + 
2272
		"public class Z {\n" +
2273
		"	void foo() {\n" + 
2273
		"	void foo() {\n" +
2274
		"		new X();\n" + 
2274
		"		new X();\n" +
2275
		"		new X(\"\");\n" + 
2275
		"		new X(\"\");\n" +
2276
		"		new X(\"\", \"\");\n" + 
2276
		"		new X(\"\", \"\");\n" +
2277
		"		new X(\"\", \"\", null);\n" + 
2277
		"		new X(\"\", \"\", null);\n" +
2278
		"		new X(3, \"\", \"\");\n" + 
2278
		"		new X(3, \"\", \"\");\n" +
2279
		"		new X(\"\", 3, \"\", \"\");\n" + 
2279
		"		new X(\"\", 3, \"\", \"\");\n" +
2280
		"	}\n" + 
2280
		"	}\n" +
2281
		"}\n"
2281
		"}\n"
2282
	);
2282
	);
2283
}
2283
}
Lines 2296-2303 Link Here
2296
	IMethod method = selectMethod(workingCopies[0], "X", 3);
2296
	IMethod method = selectMethod(workingCopies[0], "X", 3);
2297
	search(method, REFERENCES);
2297
	search(method, REFERENCES);
2298
	assertSearchResults(
2298
	assertSearchResults(
2299
		"src/b84724/Z.java void b84724.Z.foo() [new X()] EXACT_MATCH\n" + 
2299
		"src/b84724/Z.java void b84724.Z.foo() [new X()] EXACT_MATCH\n" +
2300
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\")] EXACT_MATCH\n" + 
2300
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\")] EXACT_MATCH\n" +
2301
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\", null)] EXACT_MATCH"
2301
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\", null)] EXACT_MATCH"
2302
	);
2302
	);
2303
}
2303
}
Lines 2328-2353 Link Here
2328
	resultCollector.showRule = true;
2328
	resultCollector.showRule = true;
2329
	workingCopies = new ICompilationUnit[3];
2329
	workingCopies = new ICompilationUnit[3];
2330
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84727/A.java",
2330
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84727/A.java",
2331
		"package b84727;\n" + 
2331
		"package b84727;\n" +
2332
		"public interface A {\n" + 
2332
		"public interface A {\n" +
2333
		"	Set<Set<Exception>> getXYZ(List<Set<Exception>> arg);\n" + 
2333
		"	Set<Set<Exception>> getXYZ(List<Set<Exception>> arg);\n" +
2334
		"	void getXYZ(String s);\n" + 
2334
		"	void getXYZ(String s);\n" +
2335
		"}\n"
2335
		"}\n"
2336
		);
2336
		);
2337
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84727/X.java",
2337
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84727/X.java",
2338
		"package b84727;\n" + 
2338
		"package b84727;\n" +
2339
		"public class X {\n" + 
2339
		"public class X {\n" +
2340
		"	A a;\n" + 
2340
		"	A a;\n" +
2341
		"	void foo() {\n" + 
2341
		"	void foo() {\n" +
2342
		"		a.getXYZ(new ArrayList());\n" + 
2342
		"		a.getXYZ(new ArrayList());\n" +
2343
		"		a.getXYZ(\"\");\n" + 
2343
		"		a.getXYZ(\"\");\n" +
2344
		"	}\n" + 
2344
		"	}\n" +
2345
		"}\n"
2345
		"}\n"
2346
		);
2346
		);
2347
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b84727/List.java",
2347
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b84727/List.java",
2348
		"package b84727;\n" + 
2348
		"package b84727;\n" +
2349
		"public interface List<E> {}\n" + 
2349
		"public interface List<E> {}\n" +
2350
		"interface Set<E> {}\n" + 
2350
		"interface Set<E> {}\n" +
2351
		"class ArrayList<E> implements List<E> {}"
2351
		"class ArrayList<E> implements List<E> {}"
2352
	);
2352
	);
2353
}
2353
}
Lines 2380-2395 Link Here
2380
	resultCollector.showRule = true;
2380
	resultCollector.showRule = true;
2381
	workingCopies = new ICompilationUnit[1];
2381
	workingCopies = new ICompilationUnit[1];
2382
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b85810/Test.java",
2382
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b85810/Test.java",
2383
		"package b85810;\n" + 
2383
		"package b85810;\n" +
2384
		"public class Test<E> implements In<Test<E>> {\n" + 
2384
		"public class Test<E> implements In<Test<E>> {\n" +
2385
		"	E e;\n" + 
2385
		"	E e;\n" +
2386
		"}\n" +
2386
		"}\n" +
2387
		"interface In<T> {}\n"
2387
		"interface In<T> {}\n"
2388
		);
2388
		);
2389
	ITypeParameter param = selectTypeParameter(workingCopies[0], "E");
2389
	ITypeParameter param = selectTypeParameter(workingCopies[0], "E");
2390
	search(param, REFERENCES);
2390
	search(param, REFERENCES);
2391
	assertSearchResults(
2391
	assertSearchResults(
2392
		"src/b85810/Test.java b85810.Test [E] EXACT_MATCH\n" + 
2392
		"src/b85810/Test.java b85810.Test [E] EXACT_MATCH\n" +
2393
		"src/b85810/Test.java b85810.Test.e [E] EXACT_MATCH"
2393
		"src/b85810/Test.java b85810.Test.e [E] EXACT_MATCH"
2394
	);
2394
	);
2395
}
2395
}
Lines 2402-2426 Link Here
2402
	resultCollector.showRule = true;
2402
	resultCollector.showRule = true;
2403
	workingCopies = new ICompilationUnit[3];
2403
	workingCopies = new ICompilationUnit[3];
2404
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86596/aa/link/A.java",
2404
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86596/aa/link/A.java",
2405
		"package b86596.aa.link;\n" + 
2405
		"package b86596.aa.link;\n" +
2406
		"public interface A {}\n"
2406
		"public interface A {}\n"
2407
	);
2407
	);
2408
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86596/bb/Link.java",
2408
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86596/bb/Link.java",
2409
		"package b86596.bb;\n" + 
2409
		"package b86596.bb;\n" +
2410
		"public class Link{}\n"
2410
		"public class Link{}\n"
2411
	);
2411
	);
2412
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b86596/cc/X.java",
2412
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b86596/cc/X.java",
2413
		"package b86596.cc;\n" + 
2413
		"package b86596.cc;\n" +
2414
		"import b86596.aa.link.A;\n" + 
2414
		"import b86596.aa.link.A;\n" +
2415
		"import b86596.bb.Link;\n" + 
2415
		"import b86596.bb.Link;\n" +
2416
		"public class X {\n" + 
2416
		"public class X {\n" +
2417
		"	A a;\n" + 
2417
		"	A a;\n" +
2418
		"	Link l;\n" + 
2418
		"	Link l;\n" +
2419
		"}\n"
2419
		"}\n"
2420
	);
2420
	);
2421
	search("Link", TYPE, REFERENCES, SearchPattern.R_EXACT_MATCH);
2421
	search("Link", TYPE, REFERENCES, SearchPattern.R_EXACT_MATCH);
2422
	assertSearchResults(
2422
	assertSearchResults(
2423
		"src/b86596/cc/X.java [Link] EXACT_RAW_MATCH\n" + 
2423
		"src/b86596/cc/X.java [Link] EXACT_RAW_MATCH\n" +
2424
		"src/b86596/cc/X.java b86596.cc.X.l [Link] EXACT_MATCH"
2424
		"src/b86596/cc/X.java b86596.cc.X.l [Link] EXACT_MATCH"
2425
	);
2425
	);
2426
}
2426
}
Lines 2433-2457 Link Here
2433
	resultCollector.showRule = true;
2433
	resultCollector.showRule = true;
2434
	workingCopies = new ICompilationUnit[2];
2434
	workingCopies = new ICompilationUnit[2];
2435
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86642/A.java",
2435
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86642/A.java",
2436
		"package b86642;\n" + 
2436
		"package b86642;\n" +
2437
		"class A {\n" + 
2437
		"class A {\n" +
2438
		"	public void m() {}\n" + 
2438
		"	public void m() {}\n" +
2439
		"	protected void f(A a){}\n" + 
2439
		"	protected void f(A a){}\n" +
2440
		"}\n"
2440
		"}\n"
2441
	);
2441
	);
2442
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86642/B.java",
2442
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86642/B.java",
2443
		"package b86642;\n" + 
2443
		"package b86642;\n" +
2444
		"public class B extends A{\n" + 
2444
		"public class B extends A{\n" +
2445
		"	protected void f(A a){\n" + 
2445
		"	protected void f(A a){\n" +
2446
		"		a.m();\n" + 
2446
		"		a.m();\n" +
2447
		"	}\n" + 
2447
		"	}\n" +
2448
		"}\n"
2448
		"}\n"
2449
	);
2449
	);
2450
	IType type = workingCopies[0].getType("A");
2450
	IType type = workingCopies[0].getType("A");
2451
	search(type, REFERENCES);
2451
	search(type, REFERENCES);
2452
	assertSearchResults(
2452
	assertSearchResults(
2453
		"src/b86642/A.java void b86642.A.f(A) [A] EXACT_MATCH\n" + 
2453
		"src/b86642/A.java void b86642.A.f(A) [A] EXACT_MATCH\n" +
2454
		"src/b86642/B.java b86642.B [A] EXACT_MATCH\n" + 
2454
		"src/b86642/B.java b86642.B [A] EXACT_MATCH\n" +
2455
		"src/b86642/B.java void b86642.B.f(A) [A] EXACT_MATCH"
2455
		"src/b86642/B.java void b86642.B.f(A) [A] EXACT_MATCH"
2456
	);
2456
	);
2457
}
2457
}
Lines 2464-2470 Link Here
2464
	IMethod method = type.getMethod("m86293", new String[0]);
2464
	IMethod method = type.getMethod("m86293", new String[0]);
2465
	search(method, DECLARATIONS);
2465
	search(method, DECLARATIONS);
2466
	assertSearchResults(
2466
	assertSearchResults(
2467
		"lib/b86293.jar void <anonymous>.m86293() EXACT_MATCH\n" + 
2467
		"lib/b86293.jar void <anonymous>.m86293() EXACT_MATCH\n" +
2468
		"lib/b86293.jar void I86293.m86293() EXACT_MATCH"
2468
		"lib/b86293.jar void I86293.m86293() EXACT_MATCH"
2469
	);
2469
	);
2470
}
2470
}
Lines 2477-2493 Link Here
2477
	resultCollector.showInsideDoc = true;
2477
	resultCollector.showInsideDoc = true;
2478
	workingCopies = new ICompilationUnit[2];
2478
	workingCopies = new ICompilationUnit[2];
2479
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86380/package-info.java",
2479
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86380/package-info.java",
2480
		"/**\n" + 
2480
		"/**\n" +
2481
		" * @see Annot#field\n" + 
2481
		" * @see Annot#field\n" +
2482
		" */\n" + 
2482
		" */\n" +
2483
		"@Annot(value=11)\n" + 
2483
		"@Annot(value=11)\n" +
2484
		"package b86380;\n"
2484
		"package b86380;\n"
2485
	);
2485
	);
2486
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86380/Test.java",
2486
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86380/Test.java",
2487
		"package b86380;\n" + 
2487
		"package b86380;\n" +
2488
		"@Annot(12) public class Test {\n" + 
2488
		"@Annot(12) public class Test {\n" +
2489
		"	public int field = Annot.field;\n" + 
2489
		"	public int field = Annot.field;\n" +
2490
		"	public void foo() {}\n" + 
2490
		"	public void foo() {}\n" +
2491
		"}\n"
2491
		"}\n"
2492
	);
2492
	);
2493
}
2493
}
Lines 2498-2506 Link Here
2498
	IType type = unit.getType("Annot");
2498
	IType type = unit.getType("Annot");
2499
	search(type, REFERENCES);
2499
	search(type, REFERENCES);
2500
	assertSearchResults(
2500
	assertSearchResults(
2501
		"src/b86380/Test.java b86380.Test [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2501
		"src/b86380/Test.java b86380.Test [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2502
		"src/b86380/Test.java b86380.Test.field [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2502
		"src/b86380/Test.java b86380.Test.field [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2503
		"src/b86380/package-info.java [Annot] EXACT_MATCH INSIDE_JAVADOC\n" + 
2503
		"src/b86380/package-info.java [Annot] EXACT_MATCH INSIDE_JAVADOC\n" +
2504
		"src/b86380/package-info.java [Annot] EXACT_MATCH OUTSIDE_JAVADOC"
2504
		"src/b86380/package-info.java [Annot] EXACT_MATCH OUTSIDE_JAVADOC"
2505
	);
2505
	);
2506
}
2506
}
Lines 2512-2518 Link Here
2512
	assertEquals("Invalid number of methods", 1, methods.length);
2512
	assertEquals("Invalid number of methods", 1, methods.length);
2513
	search(methods[0], REFERENCES);
2513
	search(methods[0], REFERENCES);
2514
	assertSearchResults(
2514
	assertSearchResults(
2515
		"src/b86380/Test.java b86380.Test [12] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2515
		"src/b86380/Test.java b86380.Test [12] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2516
		"src/b86380/package-info.java [value] EXACT_MATCH OUTSIDE_JAVADOC"
2516
		"src/b86380/package-info.java [value] EXACT_MATCH OUTSIDE_JAVADOC"
2517
	);
2517
	);
2518
}
2518
}
Lines 2524-2530 Link Here
2524
	assertEquals("Invalid number of fields", 1, fields.length);
2524
	assertEquals("Invalid number of fields", 1, fields.length);
2525
	search(fields[0], REFERENCES);
2525
	search(fields[0], REFERENCES);
2526
	assertSearchResults(
2526
	assertSearchResults(
2527
		"src/b86380/Test.java b86380.Test.field [field] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2527
		"src/b86380/Test.java b86380.Test.field [field] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2528
		"src/b86380/package-info.java [field] EXACT_MATCH INSIDE_JAVADOC"
2528
		"src/b86380/package-info.java [field] EXACT_MATCH INSIDE_JAVADOC"
2529
	);
2529
	);
2530
}
2530
}
Lines 2537-2569 Link Here
2537
	resultCollector.showRule = true;
2537
	resultCollector.showRule = true;
2538
	workingCopies = new ICompilationUnit[2];
2538
	workingCopies = new ICompilationUnit[2];
2539
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88174/Test.java",
2539
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88174/Test.java",
2540
		"package b88174;\n" + 
2540
		"package b88174;\n" +
2541
		"public enum Test {\n" + 
2541
		"public enum Test {\n" +
2542
		"  a {\n" + 
2542
		"  a {\n" +
2543
		"    int getTheValue() { // not found\n" + 
2543
		"    int getTheValue() { // not found\n" +
2544
		"      return 0;\n" + 
2544
		"      return 0;\n" +
2545
		"    }\n" + 
2545
		"    }\n" +
2546
		"  };\n" + 
2546
		"  };\n" +
2547
		"  abstract int getTheValue();\n" + 
2547
		"  abstract int getTheValue();\n" +
2548
		"}\n"
2548
		"}\n"
2549
	);
2549
	);
2550
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88174/X.java",
2550
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88174/X.java",
2551
		"package b88174;\n" + 
2551
		"package b88174;\n" +
2552
		"public class X {\n" + 
2552
		"public class X {\n" +
2553
		"  X x = new X() {\n" + 
2553
		"  X x = new X() {\n" +
2554
		"    int getTheValue() {\n" + 
2554
		"    int getTheValue() {\n" +
2555
		"      return 0;\n" + 
2555
		"      return 0;\n" +
2556
		"    }\n" + 
2556
		"    }\n" +
2557
		"  };\n" + 
2557
		"  };\n" +
2558
		"  int getTheValue() { return 0; }\n" + 
2558
		"  int getTheValue() { return 0; }\n" +
2559
		"}\n"
2559
		"}\n"
2560
	);
2560
	);
2561
	IMethod method = workingCopies[0].getType("Test").getMethod("getTheValue", new String[0]);
2561
	IMethod method = workingCopies[0].getType("Test").getMethod("getTheValue", new String[0]);
2562
	search(method, DECLARATIONS | IGNORE_DECLARING_TYPE);
2562
	search(method, DECLARATIONS | IGNORE_DECLARING_TYPE);
2563
	assertSearchResults(
2563
	assertSearchResults(
2564
		"src/b88174/Test.java int b88174.Test.a:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" + 
2564
		"src/b88174/Test.java int b88174.Test.a:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" +
2565
		"src/b88174/Test.java int b88174.Test.getTheValue() [getTheValue] EXACT_MATCH\n" + 
2565
		"src/b88174/Test.java int b88174.Test.getTheValue() [getTheValue] EXACT_MATCH\n" +
2566
		"src/b88174/X.java int b88174.X.x:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" + 
2566
		"src/b88174/X.java int b88174.X.x:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" +
2567
		"src/b88174/X.java int b88174.X.getTheValue() [getTheValue] EXACT_MATCH"
2567
		"src/b88174/X.java int b88174.X.getTheValue() [getTheValue] EXACT_MATCH"
2568
	);
2568
	);
2569
}
2569
}
Lines 2579-2585 Link Here
2579
	assertEquals("Wrong number of parameters", 1, parameters.length);
2579
	assertEquals("Wrong number of parameters", 1, parameters.length);
2580
	search(parameters[0], REFERENCES);
2580
	search(parameters[0], REFERENCES);
2581
	assertSearchResults(
2581
	assertSearchResults(
2582
		"lib/b87627.jar b87627.List EXACT_MATCH\n" + 
2582
		"lib/b87627.jar b87627.List EXACT_MATCH\n" +
2583
		"lib/b87627.jar boolean b87627.List.addAll(b87627.Collection<? extends E>) EXACT_MATCH"
2583
		"lib/b87627.jar boolean b87627.List.addAll(b87627.Collection<? extends E>) EXACT_MATCH"
2584
	);
2584
	);
2585
}
2585
}
Lines 2591-2618 Link Here
2591
public void testBug88300() throws CoreException {
2591
public void testBug88300() throws CoreException {
2592
	workingCopies = new ICompilationUnit[3];
2592
	workingCopies = new ICompilationUnit[3];
2593
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2593
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2594
		"package b88300;\n" + 
2594
		"package b88300;\n" +
2595
		"public class SubClass extends SuperClass {\n" + 
2595
		"public class SubClass extends SuperClass {\n" +
2596
		"	private void aMethod(String x) {\n" + 
2596
		"	private void aMethod(String x) {\n" +
2597
		"	}\n" + 
2597
		"	}\n" +
2598
		"	public void aMethod(Object x) {\n" + 
2598
		"	public void aMethod(Object x) {\n" +
2599
		"	}\n" + 
2599
		"	}\n" +
2600
		"}\n"
2600
		"}\n"
2601
	);
2601
	);
2602
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2602
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2603
		"package b88300;\n" + 
2603
		"package b88300;\n" +
2604
		"public class SuperClass {\n" + 
2604
		"public class SuperClass {\n" +
2605
		"    public void aMethod(Object x) {\n" + 
2605
		"    public void aMethod(Object x) {\n" +
2606
		"    }\n" + 
2606
		"    }\n" +
2607
		"}\n"
2607
		"}\n"
2608
		);
2608
		);
2609
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2609
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2610
		"package b88300;\n" + 
2610
		"package b88300;\n" +
2611
		"public class User {\n" + 
2611
		"public class User {\n" +
2612
		"    public void methodUsingSubClassMethod() {\n" + 
2612
		"    public void methodUsingSubClassMethod() {\n" +
2613
		"        SuperClass user = new SubClass();\n" + 
2613
		"        SuperClass user = new SubClass();\n" +
2614
		"        user.aMethod(new Object());\n" + 
2614
		"        user.aMethod(new Object());\n" +
2615
		"    }\n" + 
2615
		"    }\n" +
2616
		"}\n"
2616
		"}\n"
2617
	);
2617
	);
2618
	IType type = workingCopies[0].getType("SubClass");
2618
	IType type = workingCopies[0].getType("SubClass");
Lines 2624-2651 Link Here
2624
public void testBug88300b() throws CoreException {
2624
public void testBug88300b() throws CoreException {
2625
	workingCopies = new ICompilationUnit[3];
2625
	workingCopies = new ICompilationUnit[3];
2626
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2626
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2627
		"package b88300;\n" + 
2627
		"package b88300;\n" +
2628
		"public class SubClass extends SuperClass {\n" + 
2628
		"public class SubClass extends SuperClass {\n" +
2629
		"	public void aMethod(Object x) {\n" + 
2629
		"	public void aMethod(Object x) {\n" +
2630
		"	}\n" + 
2630
		"	}\n" +
2631
		"	private void aMethod(String x) {\n" + 
2631
		"	private void aMethod(String x) {\n" +
2632
		"	}\n" + 
2632
		"	}\n" +
2633
		"}\n"
2633
		"}\n"
2634
	);
2634
	);
2635
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2635
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2636
		"package b88300;\n" + 
2636
		"package b88300;\n" +
2637
		"public class SuperClass {\n" + 
2637
		"public class SuperClass {\n" +
2638
		"    public void aMethod(Object x) {\n" + 
2638
		"    public void aMethod(Object x) {\n" +
2639
		"    }\n" + 
2639
		"    }\n" +
2640
		"}\n"
2640
		"}\n"
2641
		);
2641
		);
2642
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2642
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2643
		"package b88300;\n" + 
2643
		"package b88300;\n" +
2644
		"public class User {\n" + 
2644
		"public class User {\n" +
2645
		"    public void methodUsingSubClassMethod() {\n" + 
2645
		"    public void methodUsingSubClassMethod() {\n" +
2646
		"        SuperClass user = new SubClass();\n" + 
2646
		"        SuperClass user = new SubClass();\n" +
2647
		"        user.aMethod(new Object());\n" + 
2647
		"        user.aMethod(new Object());\n" +
2648
		"    }\n" + 
2648
		"    }\n" +
2649
		"}\n"
2649
		"}\n"
2650
	);
2650
	);
2651
	IType type = workingCopies[0].getType("SubClass");
2651
	IType type = workingCopies[0].getType("SubClass");
Lines 2657-2699 Link Here
2657
public void testBug88300c() throws CoreException {
2657
public void testBug88300c() throws CoreException {
2658
	workingCopies = new ICompilationUnit[3];
2658
	workingCopies = new ICompilationUnit[3];
2659
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/ConditionalFlowInfo.java",
2659
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/ConditionalFlowInfo.java",
2660
		"package b88300.not.fixed;\n" + 
2660
		"package b88300.not.fixed;\n" +
2661
		"public class ConditionalFlowInfo extends FlowInfo {\n" + 
2661
		"public class ConditionalFlowInfo extends FlowInfo {\n" +
2662
		"	public FlowInfo info;\n" + 
2662
		"	public FlowInfo info;\n" +
2663
		"	ConditionalFlowInfo(FlowInfo info){\n" + 
2663
		"	ConditionalFlowInfo(FlowInfo info){\n" +
2664
		"		this.info = info;\n" + 
2664
		"		this.info = info;\n" +
2665
		"	}\n" + 
2665
		"	}\n" +
2666
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" + 
2666
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" +
2667
		"		info.markAsDefinitelyNull(field);\n" + 
2667
		"		info.markAsDefinitelyNull(field);\n" +
2668
		"	}\n" + 
2668
		"	}\n" +
2669
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" + 
2669
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" +
2670
		"		info.markAsDefinitelyNull(local);\n" + 
2670
		"		info.markAsDefinitelyNull(local);\n" +
2671
		"	}\n" + 
2671
		"	}\n" +
2672
		"}\n"
2672
		"}\n"
2673
	);
2673
	);
2674
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/FlowInfo.java",
2674
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/FlowInfo.java",
2675
		"package b88300.not.fixed;\n" + 
2675
		"package b88300.not.fixed;\n" +
2676
		"\n" + 
2676
		"\n" +
2677
		"class FieldBinding {\n" + 
2677
		"class FieldBinding {\n" +
2678
		"	int id;\n" + 
2678
		"	int id;\n" +
2679
		"}\n" + 
2679
		"}\n" +
2680
		"class LocalVariableBinding extends FieldBinding {}\n" + 
2680
		"class LocalVariableBinding extends FieldBinding {}\n" +
2681
		"\n" + 
2681
		"\n" +
2682
		"public abstract class FlowInfo {\n" + 
2682
		"public abstract class FlowInfo {\n" +
2683
		"	abstract public void markAsDefinitelyNull(LocalVariableBinding local);\n" + 
2683
		"	abstract public void markAsDefinitelyNull(LocalVariableBinding local);\n" +
2684
		"	abstract public void markAsDefinitelyNull(FieldBinding field);\n" + 
2684
		"	abstract public void markAsDefinitelyNull(FieldBinding field);\n" +
2685
		"}\n"
2685
		"}\n"
2686
		);
2686
		);
2687
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/UnconditionalFlowInfo.java",
2687
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/UnconditionalFlowInfo.java",
2688
		"package b88300.not.fixed;\n" + 
2688
		"package b88300.not.fixed;\n" +
2689
		"public class UnconditionalFlowInfo extends FlowInfo {\n" + 
2689
		"public class UnconditionalFlowInfo extends FlowInfo {\n" +
2690
		"	final private void markAsDefinitelyNull(int position) {}\n" + 
2690
		"	final private void markAsDefinitelyNull(int position) {}\n" +
2691
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" + 
2691
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" +
2692
		"		markAsDefinitelyNull(field.id);\n" + 
2692
		"		markAsDefinitelyNull(field.id);\n" +
2693
		"	}\n" + 
2693
		"	}\n" +
2694
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" + 
2694
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" +
2695
		"		markAsDefinitelyNull(local.id + 1);\n" + 
2695
		"		markAsDefinitelyNull(local.id + 1);\n" +
2696
		"	}\n" + 
2696
		"	}\n" +
2697
		"}\n"
2697
		"}\n"
2698
		);
2698
		);
2699
	IType type = workingCopies[2].getType("UnconditionalFlowInfo");
2699
	IType type = workingCopies[2].getType("UnconditionalFlowInfo");
Lines 2710-2745 Link Here
2710
public void testBug89686() throws CoreException {
2710
public void testBug89686() throws CoreException {
2711
	workingCopies = new ICompilationUnit[1];
2711
	workingCopies = new ICompilationUnit[1];
2712
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2712
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2713
		"package b89686;\n" + 
2713
		"package b89686;\n" +
2714
		"public enum Color {\n" + 
2714
		"public enum Color {\n" +
2715
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" + 
2715
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" +
2716
		"    Color() {}\n" + 
2716
		"    Color() {}\n" +
2717
		"    Color(int i) {}\n" + 
2717
		"    Color(int i) {}\n" +
2718
		"}"
2718
		"}"
2719
	);
2719
	);
2720
	IType type = workingCopies[0].getType("Color");
2720
	IType type = workingCopies[0].getType("Color");
2721
	IMethod method = type.getMethod("Color", new String[0]);
2721
	IMethod method = type.getMethod("Color", new String[0]);
2722
	search(method, REFERENCES);
2722
	search(method, REFERENCES);
2723
	assertSearchResults(
2723
	assertSearchResults(
2724
		"src/b89686/A.java b89686.Color.RED [RED] EXACT_MATCH\n" + 
2724
		"src/b89686/A.java b89686.Color.RED [RED] EXACT_MATCH\n" +
2725
		"src/b89686/A.java b89686.Color.GREEN [GREEN()] EXACT_MATCH"
2725
		"src/b89686/A.java b89686.Color.GREEN [GREEN()] EXACT_MATCH"
2726
	);
2726
	);
2727
}
2727
}
2728
public void testBug89686b() throws CoreException {
2728
public void testBug89686b() throws CoreException {
2729
	workingCopies = new ICompilationUnit[1];
2729
	workingCopies = new ICompilationUnit[1];
2730
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2730
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2731
		"package b89686;\n" + 
2731
		"package b89686;\n" +
2732
		"public enum Color {\n" + 
2732
		"public enum Color {\n" +
2733
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" + 
2733
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" +
2734
		"    Color() {}\n" + 
2734
		"    Color() {}\n" +
2735
		"    Color(int i) {}\n" + 
2735
		"    Color(int i) {}\n" +
2736
		"}"
2736
		"}"
2737
	);
2737
	);
2738
	IType type = workingCopies[0].getType("Color");
2738
	IType type = workingCopies[0].getType("Color");
2739
	IMethod method = type.getMethod("Color", new String[] { "I"} );
2739
	IMethod method = type.getMethod("Color", new String[] { "I"} );
2740
	search(method, REFERENCES);
2740
	search(method, REFERENCES);
2741
	assertSearchResults(
2741
	assertSearchResults(
2742
		"src/b89686/A.java b89686.Color.BLUE [BLUE(17)] EXACT_MATCH\n" + 
2742
		"src/b89686/A.java b89686.Color.BLUE [BLUE(17)] EXACT_MATCH\n" +
2743
		"src/b89686/A.java b89686.Color.PINK [PINK((1+(1+1)))] EXACT_MATCH"
2743
		"src/b89686/A.java b89686.Color.PINK [PINK((1+(1+1)))] EXACT_MATCH"
2744
	);
2744
	);
2745
}
2745
}
Lines 2753-2759 Link Here
2753
	IMethod method = classFile.getMethod("foo", new String[0]);
2753
	IMethod method = classFile.getMethod("foo", new String[0]);
2754
	search(method, ALL_OCCURRENCES);
2754
	search(method, ALL_OCCURRENCES);
2755
	assertSearchResults(
2755
	assertSearchResults(
2756
		"lib/b89848/Test.class void b89848.Test.foo() EXACT_MATCH\n" + 
2756
		"lib/b89848/Test.class void b89848.Test.foo() EXACT_MATCH\n" +
2757
		"lib/b89848/X.class void b89848.X.foo() EXACT_MATCH"
2757
		"lib/b89848/X.class void b89848.X.foo() EXACT_MATCH"
2758
	);
2758
	);
2759
}
2759
}
Lines 2766-2785 Link Here
2766
	workingCopies = new ICompilationUnit[3];
2766
	workingCopies = new ICompilationUnit[3];
2767
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90779/A.java",
2767
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90779/A.java",
2768
		"package b90779;\n" +
2768
		"package b90779;\n" +
2769
		"public class A {\n" + 
2769
		"public class A {\n" +
2770
		"	public A() {}\n" + 
2770
		"	public A() {}\n" +
2771
		"}\n"
2771
		"}\n"
2772
	);
2772
	);
2773
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b90779/B.java",
2773
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b90779/B.java",
2774
		"package b90779;\n" +
2774
		"package b90779;\n" +
2775
		"public class B {\n" + 
2775
		"public class B {\n" +
2776
		"	public B() {}\n" + 
2776
		"	public B() {}\n" +
2777
		"}\n"
2777
		"}\n"
2778
	);
2778
	);
2779
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b90779/C.java",
2779
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b90779/C.java",
2780
		"package b90779;\n" +
2780
		"package b90779;\n" +
2781
		"public class C {\n" + 
2781
		"public class C {\n" +
2782
		"	public C() {}\n" + 
2782
		"	public C() {}\n" +
2783
		"}\n"
2783
		"}\n"
2784
	);
2784
	);
2785
	IType type = workingCopies[0].getType("A");
2785
	IType type = workingCopies[0].getType("A");
Lines 2799-2813 Link Here
2799
	workingCopies = new ICompilationUnit[1];
2799
	workingCopies = new ICompilationUnit[1];
2800
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90915/X.java",
2800
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90915/X.java",
2801
		"package b90915;\n" +
2801
		"package b90915;\n" +
2802
		"import g5.m.def.Single;\n" + 
2802
		"import g5.m.def.Single;\n" +
2803
		"public class X<T> {\n" + 
2803
		"public class X<T> {\n" +
2804
		"	void foo() {\n" + 
2804
		"	void foo() {\n" +
2805
		"		Single<String> single = new Single<String>() {\n" + 
2805
		"		Single<String> single = new Single<String>() {\n" +
2806
		"			public <U> String generic(U u) { return \"\"; }\n" + 
2806
		"			public <U> String generic(U u) { return \"\"; }\n" +
2807
		"			public void paramTypesArgs(Single<String> gs) {}\n" + 
2807
		"			public void paramTypesArgs(Single<String> gs) {}\n" +
2808
		"		};\n" + 
2808
		"		};\n" +
2809
		"		single.paramTypesArgs(null);\n" + 
2809
		"		single.paramTypesArgs(null);\n" +
2810
		"	}\n" + 
2810
		"	}\n" +
2811
		"}\n"
2811
		"}\n"
2812
	);
2812
	);
2813
	IType type = workingCopies[0].getType("X");
2813
	IType type = workingCopies[0].getType("X");
Lines 2830-2845 Link Here
2830
public void testBug91542() throws CoreException {
2830
public void testBug91542() throws CoreException {
2831
	workingCopies = new ICompilationUnit[1];
2831
	workingCopies = new ICompilationUnit[1];
2832
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91542/A.java",
2832
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91542/A.java",
2833
		"package b91542;\n" + 
2833
		"package b91542;\n" +
2834
		"\n" + 
2834
		"\n" +
2835
		"class A<T> {\n" + 
2835
		"class A<T> {\n" +
2836
		"	void a(A<T> a){}\n" + 
2836
		"	void a(A<T> a){}\n" +
2837
		"}\n" + 
2837
		"}\n" +
2838
		"\n" + 
2838
		"\n" +
2839
		"class B<T> extends A<T> {\n" + 
2839
		"class B<T> extends A<T> {\n" +
2840
		"	protected void foo() { \n" + 
2840
		"	protected void foo() { \n" +
2841
		"		a(this);\n" + 
2841
		"		a(this);\n" +
2842
		"	}\n" + 
2842
		"	}\n" +
2843
		"}"
2843
		"}"
2844
	);
2844
	);
2845
	IType type = workingCopies[0].getType("B");
2845
	IType type = workingCopies[0].getType("B");
Lines 2857-2896 Link Here
2857
public void testBug91078() throws CoreException {
2857
public void testBug91078() throws CoreException {
2858
	workingCopies = new ICompilationUnit[3];
2858
	workingCopies = new ICompilationUnit[3];
2859
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91078/test/Example.java",
2859
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91078/test/Example.java",
2860
		"package b91078.test;\n" + 
2860
		"package b91078.test;\n" +
2861
		"import b91078.util.HashMap;\n" + 
2861
		"import b91078.util.HashMap;\n" +
2862
		"import b91078.util.Map;\n" + 
2862
		"import b91078.util.Map;\n" +
2863
		"public class Example {\n" + 
2863
		"public class Example {\n" +
2864
		"    public Map.Entry logAll(Object obj) {\n" + 
2864
		"    public Map.Entry logAll(Object obj) {\n" +
2865
		"    	if (obj instanceof b91078.util.HashMap) {\n" + 
2865
		"    	if (obj instanceof b91078.util.HashMap) {\n" +
2866
		"    		HashMap map = (HashMap) obj;\n" + 
2866
		"    		HashMap map = (HashMap) obj;\n" +
2867
		"            return map.entry;\n" + 
2867
		"            return map.entry;\n" +
2868
		"    	}\n" + 
2868
		"    	}\n" +
2869
		"    	if (obj instanceof b91078.util.HashMap.Entry) {\n" + 
2869
		"    	if (obj instanceof b91078.util.HashMap.Entry) {\n" +
2870
		"            Map.Entry entry = (Map.Entry) obj;\n" + 
2870
		"            Map.Entry entry = (Map.Entry) obj;\n" +
2871
		"            return entry;\n" + 
2871
		"            return entry;\n" +
2872
		"    	}\n" + 
2872
		"    	}\n" +
2873
		"    	return null;\n" + 
2873
		"    	return null;\n" +
2874
		"    }\n" + 
2874
		"    }\n" +
2875
		"}\n"
2875
		"}\n"
2876
	);
2876
	);
2877
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/HashMap.java",
2877
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/HashMap.java",
2878
		"package b91078.util;\n" + 
2878
		"package b91078.util;\n" +
2879
		"public class HashMap implements Map {\n" + 
2879
		"public class HashMap implements Map {\n" +
2880
		"	public Entry entry;\n" + 
2880
		"	public Entry entry;\n" +
2881
		"}\n"
2881
		"}\n"
2882
	);
2882
	);
2883
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/Map.java",
2883
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/Map.java",
2884
		"package b91078.util;\n" + 
2884
		"package b91078.util;\n" +
2885
		"public interface Map {\n" + 
2885
		"public interface Map {\n" +
2886
		"	class Entry{}\n" + 
2886
		"	class Entry{}\n" +
2887
		"}\n"
2887
		"}\n"
2888
	);
2888
	);
2889
	search("*", PACKAGE, REFERENCES, getJavaSearchWorkingCopiesScope(workingCopies[0]));
2889
	search("*", PACKAGE, REFERENCES, getJavaSearchWorkingCopiesScope(workingCopies[0]));
2890
	assertSearchResults(
2890
	assertSearchResults(
2891
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" + 
2891
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" +
2892
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" + 
2892
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" +
2893
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH\n" + 
2893
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH\n" +
2894
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH"
2894
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH"
2895
	);
2895
	);
2896
}
2896
}
Lines 2914-2931 Link Here
2914
	);
2914
	);
2915
	assertSearchResults(
2915
	assertSearchResults(
2916
		"Unexpected all type names",
2916
		"Unexpected all type names",
2917
		"java.lang.CharSequence\n" + 
2917
		"java.lang.CharSequence\n" +
2918
		"java.lang.Class\n" + 
2918
		"java.lang.Class\n" +
2919
		"java.lang.CloneNotSupportedException\n" + 
2919
		"java.lang.CloneNotSupportedException\n" +
2920
		"java.lang.Comparable\n" + 
2920
		"java.lang.Comparable\n" +
2921
		"java.lang.Enum\n" + 
2921
		"java.lang.Enum\n" +
2922
		"java.lang.Error\n" + 
2922
		"java.lang.Error\n" +
2923
		"java.lang.Exception\n" + 
2923
		"java.lang.Exception\n" +
2924
		"java.lang.IllegalMonitorStateException\n" + 
2924
		"java.lang.IllegalMonitorStateException\n" +
2925
		"java.lang.InterruptedException\n" + 
2925
		"java.lang.InterruptedException\n" +
2926
		"java.lang.Object\n" + 
2926
		"java.lang.Object\n" +
2927
		"java.lang.RuntimeException\n" + 
2927
		"java.lang.RuntimeException\n" +
2928
		"java.lang.String\n" + 
2928
		"java.lang.String\n" +
2929
		"java.lang.Throwable",
2929
		"java.lang.Throwable",
2930
		requestor);
2930
		requestor);
2931
}
2931
}
Lines 2944-2955 Link Here
2944
	);
2944
	);
2945
	assertSearchResults(
2945
	assertSearchResults(
2946
		"Unexpected all type names",
2946
		"Unexpected all type names",
2947
		"java.lang.CloneNotSupportedException\n" + 
2947
		"java.lang.CloneNotSupportedException\n" +
2948
		"java.lang.Exception\n" + 
2948
		"java.lang.Exception\n" +
2949
		"java.lang.IllegalMonitorStateException\n" + 
2949
		"java.lang.IllegalMonitorStateException\n" +
2950
		"java.lang.InterruptedException\n" + 
2950
		"java.lang.InterruptedException\n" +
2951
		"java.lang.RuntimeException\n" + 
2951
		"java.lang.RuntimeException\n" +
2952
		"java.lang.annotation.Annotation\n" + 
2952
		"java.lang.annotation.Annotation\n" +
2953
		"java.lang.annotation.Retention",
2953
		"java.lang.annotation.Retention",
2954
		requestor);
2954
		requestor);
2955
}
2955
}
Lines 2968-2983 Link Here
2968
	);
2968
	);
2969
	assertSearchResults(
2969
	assertSearchResults(
2970
		"Unexpected all type names",
2970
		"Unexpected all type names",
2971
		"Test$Inner\n" + 
2971
		"Test$Inner\n" +
2972
		"b123679.test.Test\n" + 
2972
		"b123679.test.Test\n" +
2973
		"b123679.test.Test$StaticClass\n" + 
2973
		"b123679.test.Test$StaticClass\n" +
2974
		"b123679.test.Test$StaticClass$Member\n" + 
2974
		"b123679.test.Test$StaticClass$Member\n" +
2975
		"b124645.test.A_124645\n" + 
2975
		"b124645.test.A_124645\n" +
2976
		"b124645.test.X_124645\n" + 
2976
		"b124645.test.X_124645\n" +
2977
		"b127628.Test127628$Member127628\n" + 
2977
		"b127628.Test127628$Member127628\n" +
2978
		"b95794.Test$Color\n" + 
2978
		"b95794.Test$Color\n" +
2979
		"pack.age.Test$Member\n" + 
2979
		"pack.age.Test$Member\n" +
2980
		"test.Test$StaticClass\n" + 
2980
		"test.Test$StaticClass\n" +
2981
		"test.Test$StaticClass$Member",
2981
		"test.Test$StaticClass$Member",
2982
		requestor);
2982
		requestor);
2983
}
2983
}
Lines 2996-3002 Link Here
2996
	);
2996
	);
2997
	assertSearchResults(
2997
	assertSearchResults(
2998
		"Unexpected all type names",
2998
		"Unexpected all type names",
2999
		"b124645.test.X_124645\n" + 
2999
		"b124645.test.X_124645\n" +
3000
		"b124645.xy.X_124645",
3000
		"b124645.xy.X_124645",
3001
		requestor);
3001
		requestor);
3002
}
3002
}
Lines 3009-3018 Link Here
3009
	resultCollector.showRule = true;
3009
	resultCollector.showRule = true;
3010
	workingCopies = new ICompilationUnit[1];
3010
	workingCopies = new ICompilationUnit[1];
3011
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b92944/Test.java",
3011
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b92944/Test.java",
3012
		"package b92944;\n" + 
3012
		"package b92944;\n" +
3013
		"interface B92944_I {}\n" + 
3013
		"interface B92944_I {}\n" +
3014
		"enum B92944_E {}\n" + 
3014
		"enum B92944_E {}\n" +
3015
		"@interface B92944_A {}\n" + 
3015
		"@interface B92944_A {}\n" +
3016
		"public class B92944 {}\n"
3016
		"public class B92944 {}\n"
3017
	);
3017
	);
3018
}
3018
}
Lines 3033-3041 Link Here
3033
	);
3033
	);
3034
	assertSearchResults(
3034
	assertSearchResults(
3035
		"Unexpected all type names",
3035
		"Unexpected all type names",
3036
		"b92944.B92944\n" + 
3036
		"b92944.B92944\n" +
3037
		"b92944.B92944_A\n" + 
3037
		"b92944.B92944_A\n" +
3038
		"b92944.B92944_E\n" + 
3038
		"b92944.B92944_E\n" +
3039
		"b92944.B92944_I",
3039
		"b92944.B92944_I",
3040
		requestor);
3040
		requestor);
3041
}
3041
}
Lines 3078-3084 Link Here
3078
	// Remove enum and annotation
3078
	// Remove enum and annotation
3079
	assertSearchResults(
3079
	assertSearchResults(
3080
		"Unexpected all type names",
3080
		"Unexpected all type names",
3081
		"b92944.B92944\n" + 
3081
		"b92944.B92944\n" +
3082
		"b92944.B92944_I",  // Annotation is an interface in java.lang
3082
		"b92944.B92944_I",  // Annotation is an interface in java.lang
3083
		requestor);
3083
		requestor);
3084
}
3084
}
Lines 3100-3106 Link Here
3100
	// Remove interface and annotation
3100
	// Remove interface and annotation
3101
	assertSearchResults(
3101
	assertSearchResults(
3102
		"Unexpected all type names",
3102
		"Unexpected all type names",
3103
		"b92944.B92944\n" + 
3103
		"b92944.B92944\n" +
3104
		"b92944.B92944_E",
3104
		"b92944.B92944_E",
3105
		requestor);
3105
		requestor);
3106
}
3106
}
Lines 3168-3174 Link Here
3168
/**
3168
/**
3169
 * Bug 93392: [1.5][search][annot] search for annotation elements does not seem to be implemented yet
3169
 * Bug 93392: [1.5][search][annot] search for annotation elements does not seem to be implemented yet
3170
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=93392"
3170
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=93392"
3171
 * 
3171
 *
3172
 * Note that this test valid also:
3172
 * Note that this test valid also:
3173
 * Bug 94062: [1.5][search][annot] search for annotation elements incorrect match range
3173
 * Bug 94062: [1.5][search][annot] search for annotation elements incorrect match range
3174
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=94062"
3174
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=94062"
Lines 3178-3201 Link Here
3178
	collector.showAccuracy = true;
3178
	collector.showAccuracy = true;
3179
	workingCopies = new ICompilationUnit[1];
3179
	workingCopies = new ICompilationUnit[1];
3180
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b93392/Test.java",
3180
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b93392/Test.java",
3181
		"package b93392;\n" + 
3181
		"package b93392;\n" +
3182
		"@interface Annot {\n" + 
3182
		"@interface Annot {\n" +
3183
		"	int value();\n" +
3183
		"	int value();\n" +
3184
		"}\n" +
3184
		"}\n" +
3185
		"@Annot(41)\n" + 
3185
		"@Annot(41)\n" +
3186
		"public class Test {\n" + 
3186
		"public class Test {\n" +
3187
		"	@Annot(21)\n" + 
3187
		"	@Annot(21)\n" +
3188
		"	int bar;\n" + 
3188
		"	int bar;\n" +
3189
		"	@Annot(10)\n" + 
3189
		"	@Annot(10)\n" +
3190
		"	public void foo() {}\n" + 
3190
		"	public void foo() {}\n" +
3191
		"}\n"
3191
		"}\n"
3192
	);
3192
	);
3193
	IType type = selectType(workingCopies[0], "Annot");
3193
	IType type = selectType(workingCopies[0], "Annot");
3194
	IMethod method = type.getMethod("value", new String[0]);
3194
	IMethod method = type.getMethod("value", new String[0]);
3195
	search(method, REFERENCES, getJavaSearchScopeBugs(), collector);
3195
	search(method, REFERENCES, getJavaSearchScopeBugs(), collector);
3196
	assertSearchResults(
3196
	assertSearchResults(
3197
		"src/b93392/Test.java b93392.Test [41] EXACT_MATCH\n" + 
3197
		"src/b93392/Test.java b93392.Test [41] EXACT_MATCH\n" +
3198
		"src/b93392/Test.java b93392.Test.bar [21] EXACT_MATCH\n" + 
3198
		"src/b93392/Test.java b93392.Test.bar [21] EXACT_MATCH\n" +
3199
		"src/b93392/Test.java void b93392.Test.foo() [10] EXACT_MATCH",
3199
		"src/b93392/Test.java void b93392.Test.foo() [10] EXACT_MATCH",
3200
		collector
3200
		collector
3201
	);
3201
	);
Lines 3224-3242 Link Here
3224
public void testBug94160() throws CoreException {
3224
public void testBug94160() throws CoreException {
3225
	workingCopies = new ICompilationUnit[1];
3225
	workingCopies = new ICompilationUnit[1];
3226
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94160/Test.java",
3226
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94160/Test.java",
3227
		"package b94160;\n" + 
3227
		"package b94160;\n" +
3228
		"public class Test {\n" + 
3228
		"public class Test {\n" +
3229
		"	<T> List<T> generateList(Class<T> clazz) {\n" + 
3229
		"	<T> List<T> generateList(Class<T> clazz) {\n" +
3230
		"		return new ArrayList<T>();\n" + 
3230
		"		return new ArrayList<T>();\n" +
3231
		"	}\n" + 
3231
		"	}\n" +
3232
		"}\n" + 
3232
		"}\n" +
3233
		"class CTest extends Test {\n" + 
3233
		"class CTest extends Test {\n" +
3234
		"	private List<String> myList = generateList(String.class);\n" + 
3234
		"	private List<String> myList = generateList(String.class);\n" +
3235
		"	CTest() {\n" + 
3235
		"	CTest() {\n" +
3236
		"		myList = new ArrayList<String>();\n" + 
3236
		"		myList = new ArrayList<String>();\n" +
3237
		"	}\n" + 
3237
		"	}\n" +
3238
		"}\n" + 
3238
		"}\n" +
3239
		"interface List<E> {}\n" + 
3239
		"interface List<E> {}\n" +
3240
		"class ArrayList<E> implements List<E> {}"
3240
		"class ArrayList<E> implements List<E> {}"
3241
	);
3241
	);
3242
	IType type = workingCopies[0].getType("CTest");
3242
	IType type = workingCopies[0].getType("CTest");
Lines 3254-3265 Link Here
3254
public void testBug94389() throws CoreException {
3254
public void testBug94389() throws CoreException {
3255
	workingCopies = new ICompilationUnit[1];
3255
	workingCopies = new ICompilationUnit[1];
3256
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94389/Test.java",
3256
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94389/Test.java",
3257
		"package b94389;\n" + 
3257
		"package b94389;\n" +
3258
		"public class Test {\n" + 
3258
		"public class Test {\n" +
3259
		"	public void foo() {}\n" + 
3259
		"	public void foo() {}\n" +
3260
		"	public void foo() {}\n" + 
3260
		"	public void foo() {}\n" +
3261
		"	public void foo() {}\n" + 
3261
		"	public void foo() {}\n" +
3262
		"	public void foo() {}\n" + 
3262
		"	public void foo() {}\n" +
3263
		"}\n"
3263
		"}\n"
3264
	);
3264
	);
3265
	IType type = workingCopies[0].getType("Test");
3265
	IType type = workingCopies[0].getType("Test");
Lines 3269-3286 Link Here
3269
	// Perform search on each duplicate method
3269
	// Perform search on each duplicate method
3270
	IJavaSearchScope scope = getJavaSearchScopeBugs();
3270
	IJavaSearchScope scope = getJavaSearchScopeBugs();
3271
	for (int m=0; m<methodsLength; m++) {
3271
	for (int m=0; m<methodsLength; m++) {
3272
		
3272
3273
		// Search method declaration
3273
		// Search method declaration
3274
		TestCollector collector = new TestCollector();
3274
		TestCollector collector = new TestCollector();
3275
		search(methods[m], DECLARATIONS, scope, collector);
3275
		search(methods[m], DECLARATIONS, scope, collector);
3276
		assertSearchResults(
3276
		assertSearchResults(
3277
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" + 
3277
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" +
3278
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" + 
3278
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" +
3279
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" + 
3279
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" +
3280
			"src/b94389/Test.java void b94389.Test.foo() [foo]",
3280
			"src/b94389/Test.java void b94389.Test.foo() [foo]",
3281
			collector
3281
			collector
3282
		);
3282
		);
3283
	
3283
3284
		// Verify that all matches have correct occurence count
3284
		// Verify that all matches have correct occurence count
3285
		int size = collector.matches.size();
3285
		int size = collector.matches.size();
3286
		for (int i=0; i<size; i++) {
3286
		for (int i=0; i<size; i++) {
Lines 3296-3310 Link Here
3296
public void testBug94718() throws CoreException {
3296
public void testBug94718() throws CoreException {
3297
	workingCopies = new ICompilationUnit[2];
3297
	workingCopies = new ICompilationUnit[2];
3298
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94718/SetUp.java",
3298
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94718/SetUp.java",
3299
		"package b94718;\n" + 
3299
		"package b94718;\n" +
3300
		"public @interface SetUp {\n" + 
3300
		"public @interface SetUp {\n" +
3301
		"	String value() {}\n" + 
3301
		"	String value() {}\n" +
3302
		"}\n"
3302
		"}\n"
3303
	);
3303
	);
3304
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b94718/Test.java",
3304
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b94718/Test.java",
3305
		"package b94718;\n" + 
3305
		"package b94718;\n" +
3306
		"@SetUp(\"howdy\")\n" + 
3306
		"@SetUp(\"howdy\")\n" +
3307
		"public class Test {\n" + 
3307
		"public class Test {\n" +
3308
		"}\n"
3308
		"}\n"
3309
	);
3309
	);
3310
	IType type = workingCopies[1].getType("SetUp");
3310
	IType type = workingCopies[1].getType("SetUp");
Lines 3326-3332 Link Here
3326
	// search constructor second level member
3326
	// search constructor second level member
3327
	search(type.getMethods()[0], REFERENCES);
3327
	search(type.getMethods()[0], REFERENCES);
3328
	assertSearchResults(
3328
	assertSearchResults(
3329
		"lib/b95152.jar b95152.T1() EXACT_MATCH\n" + 
3329
		"lib/b95152.jar b95152.T1() EXACT_MATCH\n" +
3330
		"lib/b95152.jar b95152.T1() EXACT_MATCH"
3330
		"lib/b95152.jar b95152.T1() EXACT_MATCH"
3331
	);
3331
	);
3332
}
3332
}
Lines 3338-3344 Link Here
3338
	// search constructor second level member
3338
	// search constructor second level member
3339
	search(type.getMethods()[0], REFERENCES);
3339
	search(type.getMethods()[0], REFERENCES);
3340
	assertSearchResults(
3340
	assertSearchResults(
3341
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH\n" + 
3341
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH\n" +
3342
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH"
3342
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH"
3343
	);
3343
	);
3344
}
3344
}
Lines 3350-3356 Link Here
3350
	// search constructor second level member
3350
	// search constructor second level member
3351
	search(type.getMethods()[0], REFERENCES);
3351
	search(type.getMethods()[0], REFERENCES);
3352
	assertSearchResults(
3352
	assertSearchResults(
3353
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH\n" + 
3353
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH\n" +
3354
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH"
3354
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH"
3355
	);
3355
	);
3356
}
3356
}
Lines 3362-3388 Link Here
3362
	// search constructor second level member
3362
	// search constructor second level member
3363
	search(type.getMethods()[0], REFERENCES);
3363
	search(type.getMethods()[0], REFERENCES);
3364
	assertSearchResults(
3364
	assertSearchResults(
3365
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH\n" + 
3365
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH\n" +
3366
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH"
3366
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH"
3367
	);
3367
	);
3368
}
3368
}
3369
public void testBug95152_wc01() throws CoreException {
3369
public void testBug95152_wc01() throws CoreException {
3370
	workingCopies = new ICompilationUnit[1];
3370
	workingCopies = new ICompilationUnit[1];
3371
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3371
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3372
		"package b95152;\n" + 
3372
		"package b95152;\n" +
3373
		"public class T {\n" + 
3373
		"public class T {\n" +
3374
		"	T2 c2;\n" + 
3374
		"	T2 c2;\n" +
3375
		"	T2.T3 c3;\n" + 
3375
		"	T2.T3 c3;\n" +
3376
		"	T() {\n" + 
3376
		"	T() {\n" +
3377
		"		c2 = new T2();\n" + 
3377
		"		c2 = new T2();\n" +
3378
		"		c3 = c2.new T3();\n" + 
3378
		"		c3 = c2.new T3();\n" +
3379
		"	}\n" + 
3379
		"	}\n" +
3380
		"	class T2 {\n" + 
3380
		"	class T2 {\n" +
3381
		"		T2() {}\n" + 
3381
		"		T2() {}\n" +
3382
		"		class T3 {\n" + 
3382
		"		class T3 {\n" +
3383
		"			T3() {}\n" + 
3383
		"			T3() {}\n" +
3384
		"		}\n" + 
3384
		"		}\n" +
3385
		"	}\n" + 
3385
		"	}\n" +
3386
		"}\n"
3386
		"}\n"
3387
	);
3387
	);
3388
	// search constructor first level member
3388
	// search constructor first level member
Lines 3400-3419 Link Here
3400
public void testBug95152_wc02() throws CoreException {
3400
public void testBug95152_wc02() throws CoreException {
3401
	workingCopies = new ICompilationUnit[1];
3401
	workingCopies = new ICompilationUnit[1];
3402
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3402
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3403
		"package b95152;\n" + 
3403
		"package b95152;\n" +
3404
		"public class T {\n" + 
3404
		"public class T {\n" +
3405
		"	T2 c2;\n" + 
3405
		"	T2 c2;\n" +
3406
		"	T2.T3 c3;\n" + 
3406
		"	T2.T3 c3;\n" +
3407
		"	T(int c) {\n" + 
3407
		"	T(int c) {\n" +
3408
		"		c2 = new T2(c);\n" + 
3408
		"		c2 = new T2(c);\n" +
3409
		"		c3 = c2.new T3(c);\n" + 
3409
		"		c3 = c2.new T3(c);\n" +
3410
		"	}\n" + 
3410
		"	}\n" +
3411
		"	class T2 {\n" + 
3411
		"	class T2 {\n" +
3412
		"		T2(int x) {}\n" + 
3412
		"		T2(int x) {}\n" +
3413
		"		class T3 {\n" + 
3413
		"		class T3 {\n" +
3414
		"			T3(int x) {}\n" + 
3414
		"			T3(int x) {}\n" +
3415
		"		}\n" + 
3415
		"		}\n" +
3416
		"	}\n" + 
3416
		"	}\n" +
3417
		"}\n"
3417
		"}\n"
3418
	);
3418
	);
3419
	// search constructor first level member
3419
	// search constructor first level member
Lines 3431-3450 Link Here
3431
public void testBug95152_wc03() throws CoreException {
3431
public void testBug95152_wc03() throws CoreException {
3432
	workingCopies = new ICompilationUnit[1];
3432
	workingCopies = new ICompilationUnit[1];
3433
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3433
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3434
		"package b95152;\n" + 
3434
		"package b95152;\n" +
3435
		"public class T {\n" + 
3435
		"public class T {\n" +
3436
		"	T2 c2;\n" + 
3436
		"	T2 c2;\n" +
3437
		"	T2.T3 c3;\n" + 
3437
		"	T2.T3 c3;\n" +
3438
		"	T(T c) {\n" + 
3438
		"	T(T c) {\n" +
3439
		"		c2 = new T2(c);\n" + 
3439
		"		c2 = new T2(c);\n" +
3440
		"		c3 = c2.new T3(c2);\n" + 
3440
		"		c3 = c2.new T3(c2);\n" +
3441
		"	}\n" + 
3441
		"	}\n" +
3442
		"	class T2 {\n" + 
3442
		"	class T2 {\n" +
3443
		"		T2(T c) {}\n" + 
3443
		"		T2(T c) {}\n" +
3444
		"		class T3 {\n" + 
3444
		"		class T3 {\n" +
3445
		"			T3(T2 c) {}\n" + 
3445
		"			T3(T2 c) {}\n" +
3446
		"		}\n" + 
3446
		"		}\n" +
3447
		"	}\n" + 
3447
		"	}\n" +
3448
		"}\n"
3448
		"}\n"
3449
	);
3449
	);
3450
	// search constructor first level member
3450
	// search constructor first level member
Lines 3462-3481 Link Here
3462
public void testBug95152_wc04() throws CoreException {
3462
public void testBug95152_wc04() throws CoreException {
3463
	workingCopies = new ICompilationUnit[1];
3463
	workingCopies = new ICompilationUnit[1];
3464
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3464
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3465
		"package b95152;\n" + 
3465
		"package b95152;\n" +
3466
		"public class T {\n" + 
3466
		"public class T {\n" +
3467
		"	T2 c2;\n" + 
3467
		"	T2 c2;\n" +
3468
		"	T2.T3 c3;\n" + 
3468
		"	T2.T3 c3;\n" +
3469
		"	T(T c, String str) {\n" + 
3469
		"	T(T c, String str) {\n" +
3470
		"		c2 = new T2(c, str);\n" + 
3470
		"		c2 = new T2(c, str);\n" +
3471
		"		c3 = c2.new T3(c2, str);\n" + 
3471
		"		c3 = c2.new T3(c2, str);\n" +
3472
		"	}\n" + 
3472
		"	}\n" +
3473
		"	class T2 {\n" + 
3473
		"	class T2 {\n" +
3474
		"		T2(T c, String str) {}\n" + 
3474
		"		T2(T c, String str) {}\n" +
3475
		"		class T3 {\n" + 
3475
		"		class T3 {\n" +
3476
		"			T3(T2 c, String str) {}\n" + 
3476
		"			T3(T2 c, String str) {}\n" +
3477
		"		}\n" + 
3477
		"		}\n" +
3478
		"	}\n" + 
3478
		"	}\n" +
3479
		"}\n"
3479
		"}\n"
3480
	);
3480
	);
3481
	// search constructor first level member
3481
	// search constructor first level member
Lines 3486-3492 Link Here
3486
	search(type.getMethods()[0], REFERENCES);
3486
	search(type.getMethods()[0], REFERENCES);
3487
	// verify searches results
3487
	// verify searches results
3488
	assertSearchResults(
3488
	assertSearchResults(
3489
		"src/b95152/T.java b95152.T(T, String) [new T2(c, str)] EXACT_MATCH\n" + 
3489
		"src/b95152/T.java b95152.T(T, String) [new T2(c, str)] EXACT_MATCH\n" +
3490
		"src/b95152/T.java b95152.T(T, String) [c2.new T3(c2, str)] EXACT_MATCH"
3490
		"src/b95152/T.java b95152.T(T, String) [c2.new T3(c2, str)] EXACT_MATCH"
3491
	);
3491
	);
3492
}
3492
}
Lines 3498-3516 Link Here
3498
public void testBug95794() throws CoreException {
3498
public void testBug95794() throws CoreException {
3499
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3499
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3500
	IType type = unit.getType("Test");
3500
	IType type = unit.getType("Test");
3501
	
3501
3502
	// Verify matches
3502
	// Verify matches
3503
	TestCollector occurencesCollector = new TestCollector();
3503
	TestCollector occurencesCollector = new TestCollector();
3504
	occurencesCollector.showAccuracy = true;
3504
	occurencesCollector.showAccuracy = true;
3505
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3505
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3506
	assertSearchResults(
3506
	assertSearchResults(
3507
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" + 
3507
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" +
3508
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" + 
3508
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" +
3509
		"src/b95794/Test.java b95794.Test [Test] EXACT_MATCH\n" + 
3509
		"src/b95794/Test.java b95794.Test [Test] EXACT_MATCH\n" +
3510
		"src/b95794/Test.java b95794.Test.there [Test] EXACT_MATCH",
3510
		"src/b95794/Test.java b95794.Test.there [Test] EXACT_MATCH",
3511
		occurencesCollector
3511
		occurencesCollector
3512
	);
3512
	);
3513
	
3513
3514
	// Verify with references matches
3514
	// Verify with references matches
3515
	TestCollector referencesCollector = new TestCollector();
3515
	TestCollector referencesCollector = new TestCollector();
3516
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
3516
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
Lines 3520-3538 Link Here
3520
	resultCollector.showRule = true;
3520
	resultCollector.showRule = true;
3521
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3521
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3522
	IType type = unit.getType("Test").getType("Color");
3522
	IType type = unit.getType("Test").getType("Color");
3523
	
3523
3524
	// Verify matches
3524
	// Verify matches
3525
	TestCollector occurencesCollector = new TestCollector();
3525
	TestCollector occurencesCollector = new TestCollector();
3526
	occurencesCollector.showAccuracy = true;
3526
	occurencesCollector.showAccuracy = true;
3527
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3527
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3528
	assertSearchResults(
3528
	assertSearchResults(
3529
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" + 
3529
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" +
3530
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" + 
3530
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" +
3531
		"src/b95794/Test.java void b95794.Test.main(String[]) [Color] EXACT_MATCH\n" + 
3531
		"src/b95794/Test.java void b95794.Test.main(String[]) [Color] EXACT_MATCH\n" +
3532
		"src/b95794/Test.java b95794.Test$Color [Color] EXACT_MATCH",
3532
		"src/b95794/Test.java b95794.Test$Color [Color] EXACT_MATCH",
3533
		occurencesCollector
3533
		occurencesCollector
3534
	);
3534
	);
3535
	
3535
3536
	// Verify with references matches
3536
	// Verify with references matches
3537
	TestCollector referencesCollector = new TestCollector();
3537
	TestCollector referencesCollector = new TestCollector();
3538
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
3538
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
Lines 3542-3559 Link Here
3542
	resultCollector.showRule = true;
3542
	resultCollector.showRule = true;
3543
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3543
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3544
	IField field = unit.getType("Test").getType("Color").getField("WHITE");
3544
	IField field = unit.getType("Test").getType("Color").getField("WHITE");
3545
	
3545
3546
	// Verify matches
3546
	// Verify matches
3547
	TestCollector occurencesCollector = new TestCollector();
3547
	TestCollector occurencesCollector = new TestCollector();
3548
	occurencesCollector.showAccuracy = true;
3548
	occurencesCollector.showAccuracy = true;
3549
	search(field, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3549
	search(field, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3550
	assertSearchResults(
3550
	assertSearchResults(
3551
		"src/b95794/Test.java [WHITE] EXACT_MATCH\n" + 
3551
		"src/b95794/Test.java [WHITE] EXACT_MATCH\n" +
3552
		"src/b95794/Test.java void b95794.Test.main(String[]) [WHITE] EXACT_MATCH\n" + 
3552
		"src/b95794/Test.java void b95794.Test.main(String[]) [WHITE] EXACT_MATCH\n" +
3553
		"src/b95794/Test.java b95794.Test$Color.WHITE [WHITE] EXACT_MATCH",
3553
		"src/b95794/Test.java b95794.Test$Color.WHITE [WHITE] EXACT_MATCH",
3554
		occurencesCollector
3554
		occurencesCollector
3555
	);
3555
	);
3556
	
3556
3557
	// Verify with references matches
3557
	// Verify with references matches
3558
	TestCollector referencesCollector = new TestCollector();
3558
	TestCollector referencesCollector = new TestCollector();
3559
	search(field, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
3559
	search(field, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
Lines 3567-3582 Link Here
3567
public void testBug96761() throws CoreException {
3567
public void testBug96761() throws CoreException {
3568
	workingCopies = new ICompilationUnit[1];
3568
	workingCopies = new ICompilationUnit[1];
3569
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96761/Generic.java",
3569
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96761/Generic.java",
3570
		"package b96761;\n" + 
3570
		"package b96761;\n" +
3571
		"public class Generic<G> {\n" + 
3571
		"public class Generic<G> {\n" +
3572
		"	void take(G g) {\n" + 
3572
		"	void take(G g) {\n" +
3573
		"	}\n" + 
3573
		"	}\n" +
3574
		"}\n" + 
3574
		"}\n" +
3575
		"class Impl extends Generic<RuntimeException> {\n" + 
3575
		"class Impl extends Generic<RuntimeException> {\n" +
3576
		"	void take(InterruptedException g) {\n" + 
3576
		"	void take(InterruptedException g) {\n" +
3577
		"	}\n" + 
3577
		"	}\n" +
3578
		"	void take(RuntimeException g) {\n" + 
3578
		"	void take(RuntimeException g) {\n" +
3579
		"	}\n" + 
3579
		"	}\n" +
3580
		"}"
3580
		"}"
3581
	);
3581
	);
3582
	IType type = workingCopies[0].getType("Generic");
3582
	IType type = workingCopies[0].getType("Generic");
Lines 3592-3649 Link Here
3592
public void testBug96763() throws CoreException {
3592
public void testBug96763() throws CoreException {
3593
	workingCopies = new ICompilationUnit[1];
3593
	workingCopies = new ICompilationUnit[1];
3594
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3594
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3595
		"package b96763;\n" + 
3595
		"package b96763;\n" +
3596
		"class Test<T> {\n" + 
3596
		"class Test<T> {\n" +
3597
		"    public void first(Exception num) {}\n" + 
3597
		"    public void first(Exception num) {}\n" +
3598
		"    public void second(T t) {}\n" + 
3598
		"    public void second(T t) {}\n" +
3599
		"}\n" + 
3599
		"}\n" +
3600
		"class Sub extends Test<Exception> {\n" + 
3600
		"class Sub extends Test<Exception> {\n" +
3601
		"    public void first(Exception num) {}\n" + 
3601
		"    public void first(Exception num) {}\n" +
3602
		"    public void second(Exception t) {}\n" + 
3602
		"    public void second(Exception t) {}\n" +
3603
		"}\n"
3603
		"}\n"
3604
	);
3604
	);
3605
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3605
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3606
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3606
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3607
	assertSearchResults(
3607
	assertSearchResults(
3608
		"src/b96763/Test.java void b96763.Test.first(Exception) [first] EXACT_MATCH\n" + 
3608
		"src/b96763/Test.java void b96763.Test.first(Exception) [first] EXACT_MATCH\n" +
3609
		"src/b96763/Test.java void b96763.Sub.first(Exception) [first] EXACT_MATCH"
3609
		"src/b96763/Test.java void b96763.Sub.first(Exception) [first] EXACT_MATCH"
3610
	);
3610
	);
3611
}
3611
}
3612
public void testBug96763b() throws CoreException {
3612
public void testBug96763b() throws CoreException {
3613
	workingCopies = new ICompilationUnit[1];
3613
	workingCopies = new ICompilationUnit[1];
3614
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3614
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3615
		"package b96763;\n" + 
3615
		"package b96763;\n" +
3616
		"class Test<T> {\n" + 
3616
		"class Test<T> {\n" +
3617
		"    public void first(Exception num) {}\n" + 
3617
		"    public void first(Exception num) {}\n" +
3618
		"    public void second(T t) {}\n" + 
3618
		"    public void second(T t) {}\n" +
3619
		"}\n" + 
3619
		"}\n" +
3620
		"class Sub extends Test<Exception> {\n" + 
3620
		"class Sub extends Test<Exception> {\n" +
3621
		"    public void first(Exception num) {}\n" + 
3621
		"    public void first(Exception num) {}\n" +
3622
		"    public void second(Exception t) {}\n" + 
3622
		"    public void second(Exception t) {}\n" +
3623
		"}\n"
3623
		"}\n"
3624
	);
3624
	);
3625
	IMethod method = workingCopies[0].getType("Sub").getMethods()[1];
3625
	IMethod method = workingCopies[0].getType("Sub").getMethods()[1];
3626
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3626
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3627
	assertSearchResults(
3627
	assertSearchResults(
3628
		"src/b96763/Test.java void b96763.Test.second(T) [second] EXACT_MATCH\n" + 
3628
		"src/b96763/Test.java void b96763.Test.second(T) [second] EXACT_MATCH\n" +
3629
		"src/b96763/Test.java void b96763.Sub.second(Exception) [second] EXACT_MATCH"
3629
		"src/b96763/Test.java void b96763.Sub.second(Exception) [second] EXACT_MATCH"
3630
	);
3630
	);
3631
}
3631
}
3632
public void testBug96763c() throws CoreException {
3632
public void testBug96763c() throws CoreException {
3633
	workingCopies = new ICompilationUnit[1];
3633
	workingCopies = new ICompilationUnit[1];
3634
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3634
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3635
		"package b96763;\n" + 
3635
		"package b96763;\n" +
3636
		"public class Test<T> {\n" + 
3636
		"public class Test<T> {\n" +
3637
		"	void methodT(T t) {}\n" + 
3637
		"	void methodT(T t) {}\n" +
3638
		"}\n" + 
3638
		"}\n" +
3639
		"class Sub<X> extends Test<X> {\n" + 
3639
		"class Sub<X> extends Test<X> {\n" +
3640
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" + 
3640
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" +
3641
		"}\n"
3641
		"}\n"
3642
	);
3642
	);
3643
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3643
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3644
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3644
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3645
	assertSearchResults(
3645
	assertSearchResults(
3646
		"src/b96763/Test.java void b96763.Test.methodT(T) [methodT] EXACT_MATCH\n" + 
3646
		"src/b96763/Test.java void b96763.Test.methodT(T) [methodT] EXACT_MATCH\n" +
3647
		"src/b96763/Test.java void b96763.Sub.methodT(X) [methodT] EXACT_MATCH"
3647
		"src/b96763/Test.java void b96763.Sub.methodT(X) [methodT] EXACT_MATCH"
3648
	);
3648
	);
3649
}
3649
}
Lines 3656-3683 Link Here
3656
	workingCopies = new ICompilationUnit[1];
3656
	workingCopies = new ICompilationUnit[1];
3657
	this.resultCollector.showRule = true;
3657
	this.resultCollector.showRule = true;
3658
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97087/Bug.java",
3658
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97087/Bug.java",
3659
		"package b97087;\n" + 
3659
		"package b97087;\n" +
3660
		"public class Bug<Type> {\n" + 
3660
		"public class Bug<Type> {\n" +
3661
		"    Bug(){}\n" + 
3661
		"    Bug(){}\n" +
3662
		"}\n" + 
3662
		"}\n" +
3663
		"class Foo extends Bug<String>{\n" + 
3663
		"class Foo extends Bug<String>{\n" +
3664
		"    Foo(){}\n" + 
3664
		"    Foo(){}\n" +
3665
		"}\n" +
3665
		"}\n" +
3666
		"class Bar extends Bug<Exception>{\n" + 
3666
		"class Bar extends Bug<Exception>{\n" +
3667
		"    Bar(){super();}\n" + 
3667
		"    Bar(){super();}\n" +
3668
		"}"
3668
		"}"
3669
	);
3669
	);
3670
	IType type = workingCopies[0].getType("Bug");
3670
	IType type = workingCopies[0].getType("Bug");
3671
	IMethod method= type.getMethods()[0];
3671
	IMethod method= type.getMethods()[0];
3672
	search(method, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3672
	search(method, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3673
	assertSearchResults(
3673
	assertSearchResults(
3674
		"src/b97087/Bug.java b97087.Foo() [Foo] EXACT_MATCH\n" + 
3674
		"src/b97087/Bug.java b97087.Foo() [Foo] EXACT_MATCH\n" +
3675
		"src/b97087/Bug.java b97087.Bar() [super();] ERASURE_MATCH"
3675
		"src/b97087/Bug.java b97087.Bar() [super();] ERASURE_MATCH"
3676
	);
3676
	);
3677
}
3677
}
3678
3678
3679
/**
3679
/**
3680
 * Bug 97120: 
3680
 * Bug 97120:
3681
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=97120"
3681
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=97120"
3682
 */
3682
 */
3683
public void testBug97120() throws CoreException {
3683
public void testBug97120() throws CoreException {
Lines 3697-3703 Link Here
3697
	);
3697
	);
3698
	assertSearchResults(
3698
	assertSearchResults(
3699
		"Unexpected all type names",
3699
		"Unexpected all type names",
3700
		"java.lang.Error\n" + 
3700
		"java.lang.Error\n" +
3701
		"java.lang.Exception",
3701
		"java.lang.Exception",
3702
		requestor
3702
		requestor
3703
	);
3703
	);
Lines 3710-3721 Link Here
3710
public void testBug97322() throws CoreException {
3710
public void testBug97322() throws CoreException {
3711
	workingCopies = new ICompilationUnit[1];
3711
	workingCopies = new ICompilationUnit[1];
3712
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97322/Test.java",
3712
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97322/Test.java",
3713
		"package b97322;\n" + 
3713
		"package b97322;\n" +
3714
		"class Test {\n" + 
3714
		"class Test {\n" +
3715
		"	static void myMethod(int a, String b) {}\n" + 
3715
		"	static void myMethod(int a, String b) {}\n" +
3716
		"	void call() {\n" + 
3716
		"	void call() {\n" +
3717
		"		myMethod(12);\n" + 
3717
		"		myMethod(12);\n" +
3718
		"	}\n" + 
3718
		"	}\n" +
3719
		"}"
3719
		"}"
3720
	);
3720
	);
3721
	IType type = workingCopies[0].getType("Test");
3721
	IType type = workingCopies[0].getType("Test");
Lines 3731-3746 Link Here
3731
public void testBug97547() throws CoreException {
3731
public void testBug97547() throws CoreException {
3732
	workingCopies = new ICompilationUnit[2];
3732
	workingCopies = new ICompilationUnit[2];
3733
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97547/IX.java",
3733
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97547/IX.java",
3734
		"package b97547;\n" + 
3734
		"package b97547;\n" +
3735
		"public interface IX {\n" + 
3735
		"public interface IX {\n" +
3736
		"	public interface IX1 {}\n" + 
3736
		"	public interface IX1 {}\n" +
3737
		"}"
3737
		"}"
3738
	);
3738
	);
3739
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97547/X.java",
3739
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97547/X.java",
3740
		"package b97547;\n" + 
3740
		"package b97547;\n" +
3741
		"import b97547.IX.*;\n" + 
3741
		"import b97547.IX.*;\n" +
3742
		"class X {\n" + 
3742
		"class X {\n" +
3743
		"	IX x;\n" + 
3743
		"	IX x;\n" +
3744
		"}"
3744
		"}"
3745
	);
3745
	);
3746
	IPackageDeclaration[] packages = workingCopies[0].getPackageDeclarations();
3746
	IPackageDeclaration[] packages = workingCopies[0].getPackageDeclarations();
Lines 3758-3787 Link Here
3758
public void testBug97606() throws CoreException {
3758
public void testBug97606() throws CoreException {
3759
	workingCopies = new ICompilationUnit[4];
3759
	workingCopies = new ICompilationUnit[4];
3760
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3760
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3761
		"package b97606.pack.def;\n" + 
3761
		"package b97606.pack.def;\n" +
3762
		"public interface L<E> {}\n"
3762
		"public interface L<E> {}\n"
3763
	);
3763
	);
3764
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3764
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3765
		"package b97606.pack.def;\n" + 
3765
		"package b97606.pack.def;\n" +
3766
		"public class LL<E> implements L<E> {\n" + 
3766
		"public class LL<E> implements L<E> {\n" +
3767
		"	public Object clone() {\n" + 
3767
		"	public Object clone() {\n" +
3768
		"		return null;\n" + 
3768
		"		return null;\n" +
3769
		"	}\n" + 
3769
		"	}\n" +
3770
		"}\n"
3770
		"}\n"
3771
	);
3771
	);
3772
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3772
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3773
		"package b97606.pack.ref;\n" + 
3773
		"package b97606.pack.ref;\n" +
3774
		"public interface K {}\n"
3774
		"public interface K {}\n"
3775
	);
3775
	);
3776
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3776
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3777
		"package b97606.pack.ref;\n" + 
3777
		"package b97606.pack.ref;\n" +
3778
		"public class X implements K {\n" + 
3778
		"public class X implements K {\n" +
3779
		"	private b97606.pack.def.LL sg;\n" + 
3779
		"	private b97606.pack.def.LL sg;\n" +
3780
		"	protected synchronized b97606.pack.def.L<K> getSG() {\n" + 
3780
		"	protected synchronized b97606.pack.def.L<K> getSG() {\n" +
3781
		"		return (sg != null) \n" + 
3781
		"		return (sg != null) \n" +
3782
		"			? (b97606.pack.def.L) sg.clone()\n" + 
3782
		"			? (b97606.pack.def.L) sg.clone()\n" +
3783
		"			: null;\n" + 
3783
		"			: null;\n" +
3784
		"	}\n" + 
3784
		"	}\n" +
3785
		"}\n"
3785
		"}\n"
3786
	);
3786
	);
3787
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
3787
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
Lines 3798-3805 Link Here
3798
		IType type = workingCopies[0].getType("L");
3798
		IType type = workingCopies[0].getType("L");
3799
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3799
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3800
		assertSearchResults(
3800
		assertSearchResults(
3801
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" + 
3801
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" +
3802
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_MATCH\n" + 
3802
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_MATCH\n" +
3803
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_RAW_MATCH"
3803
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_RAW_MATCH"
3804
		);
3804
		);
3805
	}
3805
	}
Lines 3810-3840 Link Here
3810
public void testBug97606b() throws CoreException {
3810
public void testBug97606b() throws CoreException {
3811
	workingCopies = new ICompilationUnit[4];
3811
	workingCopies = new ICompilationUnit[4];
3812
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3812
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3813
		"package b97606.pack.def;\n" + 
3813
		"package b97606.pack.def;\n" +
3814
		"public interface L<E> {}\n"
3814
		"public interface L<E> {}\n"
3815
	);
3815
	);
3816
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3816
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3817
		"package b97606.pack.def;\n" + 
3817
		"package b97606.pack.def;\n" +
3818
		"public class LL<E> implements L<E> {\n" + 
3818
		"public class LL<E> implements L<E> {\n" +
3819
		"	public Object clone() {\n" + 
3819
		"	public Object clone() {\n" +
3820
		"		return null;\n" + 
3820
		"		return null;\n" +
3821
		"	}\n" + 
3821
		"	}\n" +
3822
		"}\n"
3822
		"}\n"
3823
	);
3823
	);
3824
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3824
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3825
		"package b97606.pack.ref;\n" + 
3825
		"package b97606.pack.ref;\n" +
3826
		"public interface K {}\n"
3826
		"public interface K {}\n"
3827
	);
3827
	);
3828
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3828
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3829
		"package b97606.pack.ref;\n" + 
3829
		"package b97606.pack.ref;\n" +
3830
		"import b97606.pack.def.*;\n" + 
3830
		"import b97606.pack.def.*;\n" +
3831
		"public class X implements K {\n" + 
3831
		"public class X implements K {\n" +
3832
		"	private LL sg;\n" + 
3832
		"	private LL sg;\n" +
3833
		"	protected synchronized L<K> getSG() {\n" + 
3833
		"	protected synchronized L<K> getSG() {\n" +
3834
		"		return (sg != null) \n" + 
3834
		"		return (sg != null) \n" +
3835
		"			? (L) sg.clone()\n" + 
3835
		"			? (L) sg.clone()\n" +
3836
		"			: null;\n" + 
3836
		"			: null;\n" +
3837
		"	}\n" + 
3837
		"	}\n" +
3838
		"}\n"
3838
		"}\n"
3839
	);
3839
	);
3840
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
3840
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
Lines 3851-3858 Link Here
3851
		IType type = workingCopies[0].getType("L");
3851
		IType type = workingCopies[0].getType("L");
3852
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3852
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3853
		assertSearchResults(
3853
		assertSearchResults(
3854
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" + 
3854
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" +
3855
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_MATCH\n" + 
3855
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_MATCH\n" +
3856
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_RAW_MATCH"
3856
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_RAW_MATCH"
3857
		);
3857
		);
3858
	}
3858
	}
Lines 3868-3901 Link Here
3868
public void testBug97614() throws CoreException {
3868
public void testBug97614() throws CoreException {
3869
	workingCopies = new ICompilationUnit[3];
3869
	workingCopies = new ICompilationUnit[3];
3870
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97614/W.java",
3870
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97614/W.java",
3871
		"package b97614;\n" + 
3871
		"package b97614;\n" +
3872
		"public class W {\n" + 
3872
		"public class W {\n" +
3873
		"	private final Map<String, Y<?, ? extends b97614.X.XX<?, ?>, ? >> m1 = null;     // (a)\n" + 
3873
		"	private final Map<String, Y<?, ? extends b97614.X.XX<?, ?>, ? >> m1 = null;     // (a)\n" +
3874
		"	public void getStore(final Object o) {\n" + 
3874
		"	public void getStore(final Object o) {\n" +
3875
		"		m1.get(o);     // (b)\n" + 
3875
		"		m1.get(o);     // (b)\n" +
3876
		"	}\n" + 
3876
		"	}\n" +
3877
		"}\n" + 
3877
		"}\n" +
3878
		"interface Map<K, V> {\n" + 
3878
		"interface Map<K, V> {\n" +
3879
		"	V get(Object k);\n" + 
3879
		"	V get(Object k);\n" +
3880
		"}"
3880
		"}"
3881
	);
3881
	);
3882
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97614/X.java",
3882
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97614/X.java",
3883
		"package b97614;\n" + 
3883
		"package b97614;\n" +
3884
		"import java.io.Serializable;\n" + 
3884
		"import java.io.Serializable;\n" +
3885
		"public interface X<T extends X<T, U, V>, \n" + 
3885
		"public interface X<T extends X<T, U, V>, \n" +
3886
		"				   U extends X.XX<T, V>, \n" + 
3886
		"				   U extends X.XX<T, V>, \n" +
3887
		"				   V extends X.XY> {\n" + 
3887
		"				   V extends X.XY> {\n" +
3888
		"	public interface XX<TT extends X<TT, ?, UU>, \n" + 
3888
		"	public interface XX<TT extends X<TT, ?, UU>, \n" +
3889
		"	                   UU extends X.XY> \n" + 
3889
		"	                   UU extends X.XY> \n" +
3890
		"			extends	Serializable {\n" + 
3890
		"			extends	Serializable {\n" +
3891
		"	}\n" + 
3891
		"	}\n" +
3892
		"	public interface XY extends Serializable {\n" + 
3892
		"	public interface XY extends Serializable {\n" +
3893
		"	}\n" + 
3893
		"	}\n" +
3894
		"}"
3894
		"}"
3895
	);
3895
	);
3896
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97614/Y.java",
3896
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97614/Y.java",
3897
		"package b97614;\n" + 
3897
		"package b97614;\n" +
3898
		"public class Y<T extends X<T, U, V>, U extends X.XX<T, V>, V extends X.XY> {\n" + 
3898
		"public class Y<T extends X<T, U, V>, U extends X.XX<T, V>, V extends X.XY> {\n" +
3899
		"}\n"
3899
		"}\n"
3900
	);
3900
	);
3901
	IField field = workingCopies[0].getType("W").getField("m1");
3901
	IField field = workingCopies[0].getType("W").getField("m1");
Lines 3912-3930 Link Here
3912
public void testBug98378() throws CoreException {
3912
public void testBug98378() throws CoreException {
3913
	workingCopies = new ICompilationUnit[2];
3913
	workingCopies = new ICompilationUnit[2];
3914
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3914
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3915
		"package b98378;\n" + 
3915
		"package b98378;\n" +
3916
		"public class  X implements java.lang.CharSequence {\n" + 
3916
		"public class  X implements java.lang.CharSequence {\n" +
3917
		"	public int length() {\n" + 
3917
		"	public int length() {\n" +
3918
		"		return 1;\n" + 
3918
		"		return 1;\n" +
3919
		"	}\n" + 
3919
		"	}\n" +
3920
		"}"
3920
		"}"
3921
	);
3921
	);
3922
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3922
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3923
		"package b98378;\n" + 
3923
		"package b98378;\n" +
3924
		"public class Y {\n" + 
3924
		"public class Y {\n" +
3925
		"	public int length() {\n" + 
3925
		"	public int length() {\n" +
3926
		"		return -1;\n" + 
3926
		"		return -1;\n" +
3927
		"	}\n" + 
3927
		"	}\n" +
3928
		"}\n"
3928
		"}\n"
3929
	);
3929
	);
3930
	String jclPath = getExternalJCLPathString("1.5");
3930
	String jclPath = getExternalJCLPathString("1.5");
Lines 3932-3957 Link Here
3932
	IMethod method = type.getMethod("length", new String[] {});
3932
	IMethod method = type.getMethod("length", new String[] {});
3933
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type, this.wcOwner));
3933
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type, this.wcOwner));
3934
	assertSearchResults(
3934
	assertSearchResults(
3935
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" + 
3935
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" +
3936
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3936
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3937
	);
3937
	);
3938
}
3938
}
3939
public void testBug98378b() throws CoreException {
3939
public void testBug98378b() throws CoreException {
3940
	workingCopies = new ICompilationUnit[2];
3940
	workingCopies = new ICompilationUnit[2];
3941
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3941
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3942
		"package b98378;\n" + 
3942
		"package b98378;\n" +
3943
		"public class  X implements java.lang.CharSequence {\n" + 
3943
		"public class  X implements java.lang.CharSequence {\n" +
3944
		"	public int length() {\n" + 
3944
		"	public int length() {\n" +
3945
		"		return 1;\n" + 
3945
		"		return 1;\n" +
3946
		"	}\n" + 
3946
		"	}\n" +
3947
		"}"
3947
		"}"
3948
	);
3948
	);
3949
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3949
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3950
		"package b98378;\n" + 
3950
		"package b98378;\n" +
3951
		"public class Y {\n" + 
3951
		"public class Y {\n" +
3952
		"	public int length() {\n" + 
3952
		"	public int length() {\n" +
3953
		"		return -1;\n" + 
3953
		"		return -1;\n" +
3954
		"	}\n" + 
3954
		"	}\n" +
3955
		"}\n"
3955
		"}\n"
3956
	);
3956
	);
3957
	String jclPath = getExternalJCLPathString("1.5");
3957
	String jclPath = getExternalJCLPathString("1.5");
Lines 3959-3966 Link Here
3959
	IMethod method = type.getMethod("length", new String[] {});
3959
	IMethod method = type.getMethod("length", new String[] {});
3960
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE, SearchEngine.createHierarchyScope(type, this.wcOwner));
3960
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE, SearchEngine.createHierarchyScope(type, this.wcOwner));
3961
	assertSearchResults(
3961
	assertSearchResults(
3962
		"src/b98378/X.java int b98378.X.length() [length] EXACT_MATCH\n" + 
3962
		"src/b98378/X.java int b98378.X.length() [length] EXACT_MATCH\n" +
3963
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" + 
3963
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" +
3964
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3964
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3965
	);
3965
	);
3966
}
3966
}
Lines 3972-3988 Link Here
3972
public void testBug99600() throws CoreException {
3972
public void testBug99600() throws CoreException {
3973
	workingCopies = new ICompilationUnit[1];
3973
	workingCopies = new ICompilationUnit[1];
3974
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99600/Test.java",
3974
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99600/Test.java",
3975
		"package b99600;\n" + 
3975
		"package b99600;\n" +
3976
		"public class Test {\n" + 
3976
		"public class Test {\n" +
3977
		"	public class C1 {}\n" + 
3977
		"	public class C1 {}\n" +
3978
		"	public class C2 {\n" + 
3978
		"	public class C2 {\n" +
3979
		"		class C3 {\n" + 
3979
		"		class C3 {\n" +
3980
		"			int foo(C1 c) { return 0; }\n" + 
3980
		"			int foo(C1 c) { return 0; }\n" +
3981
		"		}\n" + 
3981
		"		}\n" +
3982
		"		public void foo(C1 c, int i) {\n" + 
3982
		"		public void foo(C1 c, int i) {\n" +
3983
		"			new C3().foo(c);\n" + 
3983
		"			new C3().foo(c);\n" +
3984
		"		}\n" + 
3984
		"		}\n" +
3985
		"	}\n" + 
3985
		"	}\n" +
3986
		"}\n"
3986
		"}\n"
3987
	);
3987
	);
3988
	IType type = workingCopies[0].getType("Test").getType("C2");
3988
	IType type = workingCopies[0].getType("Test").getType("C2");
Lines 3999-4018 Link Here
3999
public void testBug99903_annotation() throws CoreException {
3999
public void testBug99903_annotation() throws CoreException {
4000
	workingCopies = new ICompilationUnit[3];
4000
	workingCopies = new ICompilationUnit[3];
4001
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4001
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4002
		"/**\n" + 
4002
		"/**\n" +
4003
		" * @see Test\n" + 
4003
		" * @see Test\n" +
4004
		" */\n" + 
4004
		" */\n" +
4005
		"@Annot\n" + 
4005
		"@Annot\n" +
4006
		"package b99903;\n"
4006
		"package b99903;\n"
4007
	);
4007
	);
4008
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4008
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4009
		"package b99903;\n" + 
4009
		"package b99903;\n" +
4010
		"public class Test {\n" + 
4010
		"public class Test {\n" +
4011
		"}\n"
4011
		"}\n"
4012
	);
4012
	);
4013
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4013
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4014
		"package b99903;\n" + 
4014
		"package b99903;\n" +
4015
		"public @interface Annot {\n" + 
4015
		"public @interface Annot {\n" +
4016
		"}\n"
4016
		"}\n"
4017
	);
4017
	);
4018
	IType type = workingCopies[2].getType("Annot");
4018
	IType type = workingCopies[2].getType("Annot");
Lines 4024-4043 Link Here
4024
public void testBug99903_javadoc() throws CoreException {
4024
public void testBug99903_javadoc() throws CoreException {
4025
	workingCopies = new ICompilationUnit[3];
4025
	workingCopies = new ICompilationUnit[3];
4026
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4026
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4027
		"/**\n" + 
4027
		"/**\n" +
4028
		" * @see Test\n" + 
4028
		" * @see Test\n" +
4029
		" */\n" + 
4029
		" */\n" +
4030
		"@Annot\n" + 
4030
		"@Annot\n" +
4031
		"package b99903;\n"
4031
		"package b99903;\n"
4032
	);
4032
	);
4033
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4033
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4034
		"package b99903;\n" + 
4034
		"package b99903;\n" +
4035
		"public class Test {\n" + 
4035
		"public class Test {\n" +
4036
		"}\n"
4036
		"}\n"
4037
	);
4037
	);
4038
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4038
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4039
		"package b99903;\n" + 
4039
		"package b99903;\n" +
4040
		"public @interface Annot {\n" + 
4040
		"public @interface Annot {\n" +
4041
		"}\n"
4041
		"}\n"
4042
	);
4042
	);
4043
	resultCollector.showInsideDoc = true;
4043
	resultCollector.showInsideDoc = true;
Lines 4055-4193 Link Here
4055
public void testBug100695() throws CoreException {
4055
public void testBug100695() throws CoreException {
4056
	workingCopies = new ICompilationUnit[1];
4056
	workingCopies = new ICompilationUnit[1];
4057
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4057
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4058
		"package b100695;\n" + 
4058
		"package b100695;\n" +
4059
		"public class Test {\n" + 
4059
		"public class Test {\n" +
4060
		"	Class<Class>[] foo;\n" + 
4060
		"	Class<Class>[] foo;\n" +
4061
		"	Class<Class>[] bar = foo;\n" + 
4061
		"	Class<Class>[] bar = foo;\n" +
4062
		"	Test() {\n" + 
4062
		"	Test() {\n" +
4063
		"		foo = null;\n" + 
4063
		"		foo = null;\n" +
4064
		"	}\n" + 
4064
		"	}\n" +
4065
		"}\n"
4065
		"}\n"
4066
	);
4066
	);
4067
	IField field = workingCopies[0].getType("Test").getField("foo");
4067
	IField field = workingCopies[0].getType("Test").getField("foo");
4068
	search(field, REFERENCES);
4068
	search(field, REFERENCES);
4069
	assertSearchResults(
4069
	assertSearchResults(
4070
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4070
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4071
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4071
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4072
	);
4072
	);
4073
}
4073
}
4074
public void testBug100695a() throws CoreException {
4074
public void testBug100695a() throws CoreException {
4075
	workingCopies = new ICompilationUnit[1];
4075
	workingCopies = new ICompilationUnit[1];
4076
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4076
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4077
		"package b100695;\n" + 
4077
		"package b100695;\n" +
4078
		"public class Test {\n" + 
4078
		"public class Test {\n" +
4079
		"	Class<Class>[] foo;\n" + 
4079
		"	Class<Class>[] foo;\n" +
4080
		"	Class<Class>[] bar = foo;\n" + 
4080
		"	Class<Class>[] bar = foo;\n" +
4081
		"	Test() {\n" + 
4081
		"	Test() {\n" +
4082
		"		foo = null;\n" + 
4082
		"		foo = null;\n" +
4083
		"	}\n" + 
4083
		"	}\n" +
4084
		"}\n"
4084
		"}\n"
4085
	);
4085
	);
4086
	IField field = workingCopies[0].getType("Test").getField("foo");
4086
	IField field = workingCopies[0].getType("Test").getField("foo");
4087
	search(field, ALL_OCCURRENCES);
4087
	search(field, ALL_OCCURRENCES);
4088
	assertSearchResults(
4088
	assertSearchResults(
4089
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" + 
4089
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" +
4090
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4090
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4091
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4091
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4092
	);
4092
	);
4093
}
4093
}
4094
public void testBug100695b() throws CoreException {
4094
public void testBug100695b() throws CoreException {
4095
	workingCopies = new ICompilationUnit[1];
4095
	workingCopies = new ICompilationUnit[1];
4096
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4096
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4097
		"package b100695;\n" + 
4097
		"package b100695;\n" +
4098
		"public class Test {\n" + 
4098
		"public class Test {\n" +
4099
		"	Class<Class> foo;\n" + 
4099
		"	Class<Class> foo;\n" +
4100
		"	Class<Class> bar = foo;\n" + 
4100
		"	Class<Class> bar = foo;\n" +
4101
		"	Test() {\n" + 
4101
		"	Test() {\n" +
4102
		"		foo = null;\n" + 
4102
		"		foo = null;\n" +
4103
		"	}\n" + 
4103
		"	}\n" +
4104
		"}\n"
4104
		"}\n"
4105
	);
4105
	);
4106
	IField field = workingCopies[0].getType("Test").getField("foo");
4106
	IField field = workingCopies[0].getType("Test").getField("foo");
4107
	search(field, ALL_OCCURRENCES);
4107
	search(field, ALL_OCCURRENCES);
4108
	assertSearchResults(
4108
	assertSearchResults(
4109
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" + 
4109
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" +
4110
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4110
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4111
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4111
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4112
	);
4112
	);
4113
}
4113
}
4114
public void testBug100695c() throws CoreException {
4114
public void testBug100695c() throws CoreException {
4115
	workingCopies = new ICompilationUnit[1];
4115
	workingCopies = new ICompilationUnit[1];
4116
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4116
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4117
		"package b100695;\n" + 
4117
		"package b100695;\n" +
4118
		"public class Test {\n" + 
4118
		"public class Test {\n" +
4119
		"	Class[] foo;\n" + 
4119
		"	Class[] foo;\n" +
4120
		"	Class[] bar = foo;\n" + 
4120
		"	Class[] bar = foo;\n" +
4121
		"	Test() {\n" + 
4121
		"	Test() {\n" +
4122
		"		foo = null;\n" + 
4122
		"		foo = null;\n" +
4123
		"	}\n" + 
4123
		"	}\n" +
4124
		"}\n"
4124
		"}\n"
4125
	);
4125
	);
4126
	IField field = workingCopies[0].getType("Test").getField("foo");
4126
	IField field = workingCopies[0].getType("Test").getField("foo");
4127
	search(field, ALL_OCCURRENCES);
4127
	search(field, ALL_OCCURRENCES);
4128
	assertSearchResults(
4128
	assertSearchResults(
4129
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" + 
4129
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" +
4130
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4130
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4131
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4131
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4132
	);
4132
	);
4133
}
4133
}
4134
public void testBug100695d() throws CoreException {
4134
public void testBug100695d() throws CoreException {
4135
	workingCopies = new ICompilationUnit[1];
4135
	workingCopies = new ICompilationUnit[1];
4136
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4136
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4137
		"package b100695;\n" + 
4137
		"package b100695;\n" +
4138
		"public class Test {\n" + 
4138
		"public class Test {\n" +
4139
		"	  public Class<Class>[] foo(Class<Class>[] a) {\n" + 
4139
		"	  public Class<Class>[] foo(Class<Class>[] a) {\n" +
4140
		"		  return a;\n" + 
4140
		"		  return a;\n" +
4141
		"	  }\n" + 
4141
		"	  }\n" +
4142
		"	  void bar() {\n" + 
4142
		"	  void bar() {\n" +
4143
		"		  foo(new Class[0]);\n" + 
4143
		"		  foo(new Class[0]);\n" +
4144
		"	  }\n" + 
4144
		"	  }\n" +
4145
		"}\n"
4145
		"}\n"
4146
	);
4146
	);
4147
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4147
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4148
	search(method, ALL_OCCURRENCES);
4148
	search(method, ALL_OCCURRENCES);
4149
	assertSearchResults(
4149
	assertSearchResults(
4150
		"src/b100695/Test.java Class<Class>[] b100695.Test.foo(Class<Class>[]) [foo] EXACT_MATCH\n" + 
4150
		"src/b100695/Test.java Class<Class>[] b100695.Test.foo(Class<Class>[]) [foo] EXACT_MATCH\n" +
4151
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4151
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4152
	);
4152
	);
4153
}
4153
}
4154
public void testBug100695e() throws CoreException {
4154
public void testBug100695e() throws CoreException {
4155
	workingCopies = new ICompilationUnit[1];
4155
	workingCopies = new ICompilationUnit[1];
4156
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4156
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4157
		"package b100695;\n" + 
4157
		"package b100695;\n" +
4158
		"public class Test {\n" + 
4158
		"public class Test {\n" +
4159
		"	  public Class<Class> foo(Class<Class> a) {\n" + 
4159
		"	  public Class<Class> foo(Class<Class> a) {\n" +
4160
		"		  return a;\n" + 
4160
		"		  return a;\n" +
4161
		"	  }\n" + 
4161
		"	  }\n" +
4162
		"	  void bar() {\n" + 
4162
		"	  void bar() {\n" +
4163
		"		  foo(null);\n" + 
4163
		"		  foo(null);\n" +
4164
		"	  }\n" + 
4164
		"	  }\n" +
4165
		"}\n"
4165
		"}\n"
4166
	);
4166
	);
4167
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4167
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4168
	search(method, ALL_OCCURRENCES);
4168
	search(method, ALL_OCCURRENCES);
4169
	assertSearchResults(
4169
	assertSearchResults(
4170
		"src/b100695/Test.java Class<Class> b100695.Test.foo(Class<Class>) [foo] EXACT_MATCH\n" + 
4170
		"src/b100695/Test.java Class<Class> b100695.Test.foo(Class<Class>) [foo] EXACT_MATCH\n" +
4171
		"src/b100695/Test.java void b100695.Test.bar() [foo(null)] EXACT_MATCH"
4171
		"src/b100695/Test.java void b100695.Test.bar() [foo(null)] EXACT_MATCH"
4172
	);
4172
	);
4173
}
4173
}
4174
public void testBug100695f() throws CoreException {
4174
public void testBug100695f() throws CoreException {
4175
	workingCopies = new ICompilationUnit[1];
4175
	workingCopies = new ICompilationUnit[1];
4176
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4176
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4177
		"package b100695;\n" + 
4177
		"package b100695;\n" +
4178
		"public class Test {\n" + 
4178
		"public class Test {\n" +
4179
		"	  public Class[] foo(Class[] a) {\n" + 
4179
		"	  public Class[] foo(Class[] a) {\n" +
4180
		"		  return a;\n" + 
4180
		"		  return a;\n" +
4181
		"	  }\n" + 
4181
		"	  }\n" +
4182
		"	  void bar() {\n" + 
4182
		"	  void bar() {\n" +
4183
		"		  foo(new Class[0]);\n" + 
4183
		"		  foo(new Class[0]);\n" +
4184
		"	  }\n" + 
4184
		"	  }\n" +
4185
		"}\n"
4185
		"}\n"
4186
	);
4186
	);
4187
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4187
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4188
	search(method, ALL_OCCURRENCES);
4188
	search(method, ALL_OCCURRENCES);
4189
	assertSearchResults(
4189
	assertSearchResults(
4190
		"src/b100695/Test.java Class[] b100695.Test.foo(Class[]) [foo] EXACT_MATCH\n" + 
4190
		"src/b100695/Test.java Class[] b100695.Test.foo(Class[]) [foo] EXACT_MATCH\n" +
4191
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4191
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4192
	);
4192
	);
4193
}
4193
}
Lines 4199-4212 Link Here
4199
private void setUpBug100772_HierarchyScope_ClassAndSubclass() throws CoreException {
4199
private void setUpBug100772_HierarchyScope_ClassAndSubclass() throws CoreException {
4200
	workingCopies = new ICompilationUnit[1];
4200
	workingCopies = new ICompilationUnit[1];
4201
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4201
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4202
		"package b100772;\n" + 
4202
		"package b100772;\n" +
4203
		"class Test<T> {\n" + 
4203
		"class Test<T> {\n" +
4204
		"    public void foo(T t) {}\n" + 
4204
		"    public void foo(T t) {}\n" +
4205
		"    public void foo(Class c) {}\n" + 
4205
		"    public void foo(Class c) {}\n" +
4206
		"}\n" + 
4206
		"}\n" +
4207
		"class Sub extends Test<String> {\n" + 
4207
		"class Sub extends Test<String> {\n" +
4208
		"    public void foo(String str) {}\n" + 
4208
		"    public void foo(String str) {}\n" +
4209
		"    public void foo(Exception e) {}\n" + 
4209
		"    public void foo(Exception e) {}\n" +
4210
		"}\n"
4210
		"}\n"
4211
	);
4211
	);
4212
}
4212
}
Lines 4216-4222 Link Here
4216
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4216
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4217
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4217
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4218
	assertSearchResults(
4218
	assertSearchResults(
4219
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4219
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4220
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4220
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4221
	);
4221
	);
4222
}
4222
}
Lines 4226-4232 Link Here
4226
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4226
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4227
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4227
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4228
	assertSearchResults(
4228
	assertSearchResults(
4229
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4229
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4230
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4230
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4231
	);
4231
	);
4232
}
4232
}
Lines 4245-4251 Link Here
4245
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4245
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4246
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4246
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4247
	assertSearchResults(
4247
	assertSearchResults(
4248
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4248
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4249
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4249
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4250
	);
4250
	);
4251
}
4251
}
Lines 4261-4279 Link Here
4261
private void setUpBug100772_HierarchyScope_InterfacesAndClass() throws CoreException {
4261
private void setUpBug100772_HierarchyScope_InterfacesAndClass() throws CoreException {
4262
	workingCopies = new ICompilationUnit[1];
4262
	workingCopies = new ICompilationUnit[1];
4263
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4263
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4264
		"package b100772;\n" + 
4264
		"package b100772;\n" +
4265
		"interface Test<T> {\n" + 
4265
		"interface Test<T> {\n" +
4266
		"    public void foo(T t);\n" + 
4266
		"    public void foo(T t);\n" +
4267
		"    public void foo(Class c);\n" + 
4267
		"    public void foo(Class c);\n" +
4268
		"}\n" + 
4268
		"}\n" +
4269
		"interface Sub extends Test<String> {\n" + 
4269
		"interface Sub extends Test<String> {\n" +
4270
		"    public void foo(String str);\n" + 
4270
		"    public void foo(String str);\n" +
4271
		"    public void foo(Exception e);\n" + 
4271
		"    public void foo(Exception e);\n" +
4272
		"}\n" +
4272
		"}\n" +
4273
		"class X implements Test<String> {\n" + 
4273
		"class X implements Test<String> {\n" +
4274
		"    public void foo(String str) {}\n" + 
4274
		"    public void foo(String str) {}\n" +
4275
		"    public void foo(Class c) {}\n" + 
4275
		"    public void foo(Class c) {}\n" +
4276
		"    public void foo(Exception e) {}\n" + 
4276
		"    public void foo(Exception e) {}\n" +
4277
		"}\n"
4277
		"}\n"
4278
	);
4278
	);
4279
}
4279
}
Lines 4283-4290 Link Here
4283
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4283
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4284
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4284
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4285
	assertSearchResults(
4285
	assertSearchResults(
4286
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4286
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4287
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4287
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4288
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4288
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4289
	);
4289
	);
4290
}
4290
}
Lines 4294-4301 Link Here
4294
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4294
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4295
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4295
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4296
	assertSearchResults(
4296
	assertSearchResults(
4297
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4297
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4298
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4298
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4299
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4299
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4300
	);
4300
	);
4301
}
4301
}
Lines 4305-4311 Link Here
4305
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4305
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4306
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4306
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4307
	assertSearchResults(
4307
	assertSearchResults(
4308
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4308
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4309
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4309
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4310
	);
4310
	);
4311
}
4311
}
Lines 4315-4321 Link Here
4315
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4315
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4316
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4316
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4317
	assertSearchResults(
4317
	assertSearchResults(
4318
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4318
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4319
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4319
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4320
	);
4320
	);
4321
}
4321
}
Lines 4334-4340 Link Here
4334
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4334
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4335
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4335
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4336
	assertSearchResults(
4336
	assertSearchResults(
4337
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4337
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4338
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4338
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4339
	);
4339
	);
4340
}
4340
}
Lines 4344-4350 Link Here
4344
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4344
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4345
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4345
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4346
	assertSearchResults(
4346
	assertSearchResults(
4347
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4347
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4348
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4348
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4349
	);
4349
	);
4350
}
4350
}
Lines 4360-4386 Link Here
4360
private void setUpBug100772_HierarchyScope_Complex() throws CoreException {
4360
private void setUpBug100772_HierarchyScope_Complex() throws CoreException {
4361
	workingCopies = new ICompilationUnit[1];
4361
	workingCopies = new ICompilationUnit[1];
4362
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4362
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4363
		"package b100772;\n" + 
4363
		"package b100772;\n" +
4364
		"public class X<T> implements IX<T> {\n" + 
4364
		"public class X<T> implements IX<T> {\n" +
4365
		"	public void foo(T t) {}\n" + 
4365
		"	public void foo(T t) {}\n" +
4366
		"}\n" + 
4366
		"}\n" +
4367
		"class XX extends X<String> {\n" + 
4367
		"class XX extends X<String> {\n" +
4368
		"	public void foo(String s) {}\n" + 
4368
		"	public void foo(String s) {}\n" +
4369
		"	public void foo(Exception e) {}\n" + 
4369
		"	public void foo(Exception e) {}\n" +
4370
		"}\n" + 
4370
		"}\n" +
4371
		"interface IX<U> {\n" + 
4371
		"interface IX<U> {\n" +
4372
		"	public void foo(U u);\n" + 
4372
		"	public void foo(U u);\n" +
4373
		"}\n" + 
4373
		"}\n" +
4374
		"class Y implements IX<String> {\n" + 
4374
		"class Y implements IX<String> {\n" +
4375
		"	public void foo(String s) {}\n" + 
4375
		"	public void foo(String s) {}\n" +
4376
		"	public void foo(Exception e) {}\n" + 
4376
		"	public void foo(Exception e) {}\n" +
4377
		"}\n" + 
4377
		"}\n" +
4378
		"interface IXX<V extends Exception> {\n" + 
4378
		"interface IXX<V extends Exception> {\n" +
4379
		"	public void foo(V v);\n" + 
4379
		"	public void foo(V v);\n" +
4380
		"}\n" + 
4380
		"}\n" +
4381
		"class Z extends Y implements IXX<Exception> {\n" + 
4381
		"class Z extends Y implements IXX<Exception> {\n" +
4382
		"	public void foo(String s) {}\n" + 
4382
		"	public void foo(String s) {}\n" +
4383
		"	public void foo(Exception e) {}\n" + 
4383
		"	public void foo(Exception e) {}\n" +
4384
		"}\n"
4384
		"}\n"
4385
	);
4385
	);
4386
}
4386
}
Lines 4390-4399 Link Here
4390
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4390
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4391
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4391
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4392
	assertSearchResults(
4392
	assertSearchResults(
4393
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4393
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4394
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4394
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4395
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4395
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4396
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4396
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4397
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4397
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4398
	);
4398
	);
4399
}
4399
}
Lines 4403-4410 Link Here
4403
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4403
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4404
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4404
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4405
	assertSearchResults(
4405
	assertSearchResults(
4406
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4406
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4407
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4407
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4408
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4408
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4409
	);
4409
	);
4410
}
4410
}
Lines 4414-4421 Link Here
4414
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4414
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4415
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4415
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4416
	assertSearchResults(
4416
	assertSearchResults(
4417
		"src/b100772/Test.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" + 
4417
		"src/b100772/Test.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" +
4418
		"src/b100772/Test.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" + 
4418
		"src/b100772/Test.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" +
4419
		"src/b100772/Test.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4419
		"src/b100772/Test.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4420
	);
4420
	);
4421
}
4421
}
Lines 4425-4449 Link Here
4425
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4425
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4426
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4426
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4427
	assertSearchResults(
4427
	assertSearchResults(
4428
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4428
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4429
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4429
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4430
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH"
4430
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH"
4431
	);
4431
	);
4432
}
4432
}
4433
private void setUpBug100772_ProjectScope_ClassAndSubclass() throws CoreException {
4433
private void setUpBug100772_ProjectScope_ClassAndSubclass() throws CoreException {
4434
	workingCopies = new ICompilationUnit[2];
4434
	workingCopies = new ICompilationUnit[2];
4435
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4435
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4436
		"package b100772;\n" + 
4436
		"package b100772;\n" +
4437
		"class Test<T> {\n" + 
4437
		"class Test<T> {\n" +
4438
		"    public void foo(T t) {}\n" + 
4438
		"    public void foo(T t) {}\n" +
4439
		"    public void foo(Class c) {}\n" + 
4439
		"    public void foo(Class c) {}\n" +
4440
		"}\n"
4440
		"}\n"
4441
	);
4441
	);
4442
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4442
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4443
		"package b100772;\n" + 
4443
		"package b100772;\n" +
4444
		"class Sub extends Test<String> {\n" + 
4444
		"class Sub extends Test<String> {\n" +
4445
		"    public void foo(String str) {}\n" + 
4445
		"    public void foo(String str) {}\n" +
4446
		"    public void foo(Exception e) {}\n" + 
4446
		"    public void foo(Exception e) {}\n" +
4447
		"}\n"
4447
		"}\n"
4448
	);
4448
	);
4449
}
4449
}
Lines 4453-4459 Link Here
4453
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4453
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4454
	search(method, UI_DECLARATIONS);
4454
	search(method, UI_DECLARATIONS);
4455
	assertSearchResults(
4455
	assertSearchResults(
4456
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4456
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4457
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4457
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4458
	);
4458
	);
4459
}
4459
}
Lines 4463-4469 Link Here
4463
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4463
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4464
	search(method, DECLARATIONS);
4464
	search(method, DECLARATIONS);
4465
	assertSearchResults(
4465
	assertSearchResults(
4466
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4466
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4467
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4467
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4468
	);
4468
	);
4469
}
4469
}
Lines 4482-4488 Link Here
4482
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4482
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4483
	search(method, UI_DECLARATIONS);
4483
	search(method, UI_DECLARATIONS);
4484
	assertSearchResults(
4484
	assertSearchResults(
4485
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4485
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4486
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4486
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4487
	);
4487
	);
4488
}
4488
}
Lines 4498-4522 Link Here
4498
private void setUpBug100772_ProjectScope_InterfacesAndClass() throws CoreException {
4498
private void setUpBug100772_ProjectScope_InterfacesAndClass() throws CoreException {
4499
	workingCopies = new ICompilationUnit[3];
4499
	workingCopies = new ICompilationUnit[3];
4500
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4500
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4501
		"package b100772;\n" + 
4501
		"package b100772;\n" +
4502
		"interface Test<T> {\n" + 
4502
		"interface Test<T> {\n" +
4503
		"    public void foo(T t);\n" + 
4503
		"    public void foo(T t);\n" +
4504
		"    public void foo(Class c);\n" + 
4504
		"    public void foo(Class c);\n" +
4505
		"}\n"
4505
		"}\n"
4506
	);
4506
	);
4507
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4507
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4508
		"package b100772;\n" + 
4508
		"package b100772;\n" +
4509
		"interface Sub extends Test<String> {\n" + 
4509
		"interface Sub extends Test<String> {\n" +
4510
		"    public void foo(String str);\n" + 
4510
		"    public void foo(String str);\n" +
4511
		"    public void foo(Exception e);\n" + 
4511
		"    public void foo(Exception e);\n" +
4512
		"}\n"
4512
		"}\n"
4513
	);
4513
	);
4514
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4514
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4515
		"package b100772;\n" + 
4515
		"package b100772;\n" +
4516
		"class X implements Test<String> {\n" + 
4516
		"class X implements Test<String> {\n" +
4517
		"    public void foo(String str) {}\n" + 
4517
		"    public void foo(String str) {}\n" +
4518
		"    public void foo(Class c) {}\n" + 
4518
		"    public void foo(Class c) {}\n" +
4519
		"    public void foo(Exception e) {}\n" + 
4519
		"    public void foo(Exception e) {}\n" +
4520
		"}\n"
4520
		"}\n"
4521
	);
4521
	);
4522
}
4522
}
Lines 4526-4533 Link Here
4526
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4526
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4527
	search(method, UI_DECLARATIONS);
4527
	search(method, UI_DECLARATIONS);
4528
	assertSearchResults(
4528
	assertSearchResults(
4529
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4529
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4530
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4530
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4531
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4531
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4532
	);
4532
	);
4533
}
4533
}
Lines 4537-4544 Link Here
4537
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4537
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4538
	search(method, DECLARATIONS);
4538
	search(method, DECLARATIONS);
4539
	assertSearchResults(
4539
	assertSearchResults(
4540
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4540
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4541
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4541
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4542
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4542
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4543
	);
4543
	);
4544
}
4544
}
Lines 4548-4554 Link Here
4548
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4548
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4549
	search(method, UI_DECLARATIONS);
4549
	search(method, UI_DECLARATIONS);
4550
	assertSearchResults(
4550
	assertSearchResults(
4551
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4551
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4552
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4552
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4553
	);
4553
	);
4554
}
4554
}
Lines 4558-4565 Link Here
4558
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4558
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4559
	search(method, UI_DECLARATIONS);
4559
	search(method, UI_DECLARATIONS);
4560
	assertSearchResults(
4560
	assertSearchResults(
4561
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4561
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4562
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4562
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4563
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4563
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4564
	);
4564
	);
4565
}
4565
}
Lines 4569-4575 Link Here
4569
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4569
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4570
	search(method, UI_DECLARATIONS);
4570
	search(method, UI_DECLARATIONS);
4571
	assertSearchResults(
4571
	assertSearchResults(
4572
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" + 
4572
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" +
4573
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4573
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4574
	);
4574
	);
4575
}
4575
}
Lines 4579-4586 Link Here
4579
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4579
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4580
	search(method, UI_DECLARATIONS);
4580
	search(method, UI_DECLARATIONS);
4581
	assertSearchResults(
4581
	assertSearchResults(
4582
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4582
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4583
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4583
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4584
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4584
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4585
	);
4585
	);
4586
}
4586
}
Lines 4590-4596 Link Here
4590
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4590
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4591
	search(method, UI_DECLARATIONS);
4591
	search(method, UI_DECLARATIONS);
4592
	assertSearchResults(
4592
	assertSearchResults(
4593
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4593
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4594
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4594
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4595
	);
4595
	);
4596
}
4596
}
Lines 4600-4648 Link Here
4600
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4600
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4601
	search(method, UI_DECLARATIONS);
4601
	search(method, UI_DECLARATIONS);
4602
	assertSearchResults(
4602
	assertSearchResults(
4603
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" + 
4603
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" +
4604
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4604
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4605
	);
4605
	);
4606
}
4606
}
4607
private void setUpBug100772_ProjectScope_Complex() throws CoreException {
4607
private void setUpBug100772_ProjectScope_Complex() throws CoreException {
4608
	workingCopies = new ICompilationUnit[6];
4608
	workingCopies = new ICompilationUnit[6];
4609
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4609
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4610
		"package b100772;\n" + 
4610
		"package b100772;\n" +
4611
		"public class X<T> implements IX<T> {\n" + 
4611
		"public class X<T> implements IX<T> {\n" +
4612
		"	public void foo(T t) {}\n" + 
4612
		"	public void foo(T t) {}\n" +
4613
		"}\n"
4613
		"}\n"
4614
	);
4614
	);
4615
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/XX.java",
4615
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/XX.java",
4616
		"package b100772;\n" + 
4616
		"package b100772;\n" +
4617
		"class XX extends X<String> {\n" + 
4617
		"class XX extends X<String> {\n" +
4618
		"	public void foo(String s) {}\n" + 
4618
		"	public void foo(String s) {}\n" +
4619
		"	public void foo(Exception e) {}\n" + 
4619
		"	public void foo(Exception e) {}\n" +
4620
		"}\n"
4620
		"}\n"
4621
	);
4621
	);
4622
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/IX.java",
4622
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/IX.java",
4623
		"package b100772;\n" + 
4623
		"package b100772;\n" +
4624
		"interface IX<U> {\n" + 
4624
		"interface IX<U> {\n" +
4625
		"	public void foo(U u);\n" + 
4625
		"	public void foo(U u);\n" +
4626
		"}\n"
4626
		"}\n"
4627
	);
4627
	);
4628
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b100772/Y.java",
4628
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b100772/Y.java",
4629
		"package b100772;\n" + 
4629
		"package b100772;\n" +
4630
		"class Y implements IX<String> {\n" + 
4630
		"class Y implements IX<String> {\n" +
4631
		"	public void foo(String s) {}\n" + 
4631
		"	public void foo(String s) {}\n" +
4632
		"	public void foo(Exception e) {}\n" + 
4632
		"	public void foo(Exception e) {}\n" +
4633
		"}\n"
4633
		"}\n"
4634
	);
4634
	);
4635
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b100772/IXX.java",
4635
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b100772/IXX.java",
4636
		"package b100772;\n" + 
4636
		"package b100772;\n" +
4637
		"interface IXX<V extends Exception> {\n" + 
4637
		"interface IXX<V extends Exception> {\n" +
4638
		"	public void foo(V v);\n" + 
4638
		"	public void foo(V v);\n" +
4639
		"}\n"
4639
		"}\n"
4640
	);
4640
	);
4641
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b100772/Z.java",
4641
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b100772/Z.java",
4642
		"package b100772;\n" + 
4642
		"package b100772;\n" +
4643
		"class Z extends Y implements IXX<Exception> {\n" + 
4643
		"class Z extends Y implements IXX<Exception> {\n" +
4644
		"	public void foo(String s) {}\n" + 
4644
		"	public void foo(String s) {}\n" +
4645
		"	public void foo(Exception e) {}\n" + 
4645
		"	public void foo(Exception e) {}\n" +
4646
		"}\n"
4646
		"}\n"
4647
	);
4647
	);
4648
}
4648
}
Lines 4652-4661 Link Here
4652
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4652
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4653
	search(method, DECLARATIONS);
4653
	search(method, DECLARATIONS);
4654
	assertSearchResults(
4654
	assertSearchResults(
4655
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4655
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4656
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4656
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4657
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4657
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4658
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4658
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4659
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4659
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4660
	);
4660
	);
4661
}
4661
}
Lines 4665-4673 Link Here
4665
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4665
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4666
	search(method, UI_DECLARATIONS);
4666
	search(method, UI_DECLARATIONS);
4667
	assertSearchResults(
4667
	assertSearchResults(
4668
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4668
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4669
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4669
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4670
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4670
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4671
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4671
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4672
	);
4672
	);
4673
}
4673
}
Lines 4677-4685 Link Here
4677
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4677
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4678
	search(method, UI_DECLARATIONS);
4678
	search(method, UI_DECLARATIONS);
4679
	assertSearchResults(
4679
	assertSearchResults(
4680
		"src/b100772/IXX.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" + 
4680
		"src/b100772/IXX.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" +
4681
		"src/b100772/XX.java void b100772.XX.foo(Exception) [foo] EXACT_MATCH\n" + 
4681
		"src/b100772/XX.java void b100772.XX.foo(Exception) [foo] EXACT_MATCH\n" +
4682
		"src/b100772/Y.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" + 
4682
		"src/b100772/Y.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" +
4683
		"src/b100772/Z.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4683
		"src/b100772/Z.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4684
	);
4684
	);
4685
}
4685
}
Lines 4689-4696 Link Here
4689
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4689
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4690
	search(method, UI_DECLARATIONS);
4690
	search(method, UI_DECLARATIONS);
4691
	assertSearchResults(
4691
	assertSearchResults(
4692
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4692
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4693
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4693
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4694
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH"
4694
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH"
4695
	);
4695
	);
4696
}
4696
}
Lines 4722-4753 Link Here
4722
private void setUpBug110060_TypePattern() throws CoreException {
4722
private void setUpBug110060_TypePattern() throws CoreException {
4723
	workingCopies = new ICompilationUnit[5];
4723
	workingCopies = new ICompilationUnit[5];
4724
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
4724
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
4725
		"package b110060;\n" + 
4725
		"package b110060;\n" +
4726
		"public class AA {\n" +
4726
		"public class AA {\n" +
4727
		"}\n"
4727
		"}\n"
4728
	);
4728
	);
4729
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
4729
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
4730
		"package b110060;\n" + 
4730
		"package b110060;\n" +
4731
		"public class AAxx {\n" +
4731
		"public class AAxx {\n" +
4732
		"}\n"
4732
		"}\n"
4733
	);
4733
	);
4734
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
4734
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
4735
		"package b110060;\n" + 
4735
		"package b110060;\n" +
4736
		"public class AxxAyy {\n" +
4736
		"public class AxxAyy {\n" +
4737
		"}\n"
4737
		"}\n"
4738
	);
4738
	);
4739
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
4739
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
4740
		"package b110060;\n" + 
4740
		"package b110060;\n" +
4741
		"public class AxA {\n" +
4741
		"public class AxA {\n" +
4742
		"}\n"
4742
		"}\n"
4743
	);
4743
	);
4744
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
4744
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
4745
		"package b110060;\n" + 
4745
		"package b110060;\n" +
4746
		"public class Test {\n" +
4746
		"public class Test {\n" +
4747
		"	AA aa;\n" + 
4747
		"	AA aa;\n" +
4748
		"	AAxx aaxx;\n" + 
4748
		"	AAxx aaxx;\n" +
4749
		"	AxA axa;\n" + 
4749
		"	AxA axa;\n" +
4750
		"	AxxAyy axxayy;\n" + 
4750
		"	AxxAyy axxayy;\n" +
4751
		"}\n"
4751
		"}\n"
4752
	);
4752
	);
4753
}
4753
}
Lines 4755-4763 Link Here
4755
	setUpBug110060_TypePattern();
4755
	setUpBug110060_TypePattern();
4756
	search("AA", TYPE, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
4756
	search("AA", TYPE, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
4757
	assertSearchResults(
4757
	assertSearchResults(
4758
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4758
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4759
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4759
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4760
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4760
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4761
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4761
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4762
	);
4762
	);
4763
}
4763
}
Lines 4766-4778 Link Here
4766
	setUpBug110060_TypePattern();
4766
	setUpBug110060_TypePattern();
4767
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4767
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4768
	assertSearchResults(
4768
	assertSearchResults(
4769
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4769
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4770
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4770
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4771
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4771
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4772
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4772
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4773
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4773
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4774
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4774
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4775
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4775
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4776
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4776
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4777
	);
4777
	);
4778
}
4778
}
Lines 4781-4787 Link Here
4781
	setUpBug110060_TypePattern();
4781
	setUpBug110060_TypePattern();
4782
	search("AAx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4782
	search("AAx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4783
	assertSearchResults(
4783
	assertSearchResults(
4784
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4784
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4785
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4785
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4786
	);
4786
	);
4787
}
4787
}
Lines 4790-4796 Link Here
4790
	setUpBug110060_TypePattern();
4790
	setUpBug110060_TypePattern();
4791
	search("Axx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4791
	search("Axx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4792
	assertSearchResults(
4792
	assertSearchResults(
4793
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4793
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4794
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4794
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4795
	);
4795
	);
4796
}
4796
}
Lines 4799-4807 Link Here
4799
	setUpBug110060_TypePattern();
4799
	setUpBug110060_TypePattern();
4800
	search("Ax", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4800
	search("Ax", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4801
	assertSearchResults(
4801
	assertSearchResults(
4802
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4802
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4803
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4803
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4804
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4804
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4805
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4805
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4806
	);
4806
	);
4807
}
4807
}
Lines 4810-4823 Link Here
4810
	setUpBug110060_TypePattern();
4810
	setUpBug110060_TypePattern();
4811
	search("A*A*", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4811
	search("A*A*", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4812
	assertSearchResults(
4812
	assertSearchResults(
4813
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4813
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4814
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4814
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4815
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4815
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4816
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4816
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4817
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4817
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4818
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4818
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4819
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4819
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4820
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH\n" + 
4820
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH\n" +
4821
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation.Annotation EXACT_MATCH"
4821
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation.Annotation EXACT_MATCH"
4822
	);
4822
	);
4823
}
4823
}
Lines 4832-4840 Link Here
4832
	setUpBug110060_TypePattern();
4832
	setUpBug110060_TypePattern();
4833
	search("aa", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH);
4833
	search("aa", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH);
4834
	assertSearchResults(
4834
	assertSearchResults(
4835
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4835
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4836
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4836
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4837
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4837
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4838
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4838
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4839
	);
4839
	);
4840
}
4840
}
Lines 4843-4855 Link Here
4843
	setUpBug110060_TypePattern();
4843
	setUpBug110060_TypePattern();
4844
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
4844
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
4845
	assertSearchResults(
4845
	assertSearchResults(
4846
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4846
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4847
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4847
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4848
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4848
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4849
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4849
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4850
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4850
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4851
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4851
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4852
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4852
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4853
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4853
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4854
	);
4854
	);
4855
}
4855
}
Lines 4864-4870 Link Here
4864
	setUpBug110060_TypePattern();
4864
	setUpBug110060_TypePattern();
4865
	search("AxxA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4865
	search("AxxA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4866
	assertSearchResults(
4866
	assertSearchResults(
4867
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4867
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4868
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4868
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4869
	);
4869
	);
4870
}
4870
}
Lines 4873-4879 Link Here
4873
	setUpBug110060_TypePattern();
4873
	setUpBug110060_TypePattern();
4874
	search("AxXA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4874
	search("AxXA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4875
	assertSearchResults(
4875
	assertSearchResults(
4876
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4876
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4877
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4877
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4878
	);
4878
	);
4879
}
4879
}
Lines 4894-4902 Link Here
4894
	);
4894
	);
4895
	assertSearchResults(
4895
	assertSearchResults(
4896
		"Unexpected all type names",
4896
		"Unexpected all type names",
4897
		"b110060.AA\n" + 
4897
		"b110060.AA\n" +
4898
		"b110060.AAxx\n" + 
4898
		"b110060.AAxx\n" +
4899
		"b110060.AxA\n" + 
4899
		"b110060.AxA\n" +
4900
		"b110060.AxxAyy",
4900
		"b110060.AxxAyy",
4901
		requestor);
4901
		requestor);
4902
}
4902
}
Lines 4917-4925 Link Here
4917
	);
4917
	);
4918
	assertSearchResults(
4918
	assertSearchResults(
4919
		"Unexpected all type names",
4919
		"Unexpected all type names",
4920
		"b110060.AA\n" + 
4920
		"b110060.AA\n" +
4921
		"b110060.AAxx\n" + 
4921
		"b110060.AAxx\n" +
4922
		"b110060.AxA\n" + 
4922
		"b110060.AxA\n" +
4923
		"b110060.AxxAyy",
4923
		"b110060.AxxAyy",
4924
		requestor);
4924
		requestor);
4925
}
4925
}
Lines 4940-4948 Link Here
4940
	);
4940
	);
4941
	assertSearchResults(
4941
	assertSearchResults(
4942
		"Unexpected all type names",
4942
		"Unexpected all type names",
4943
		"b110060.AA\n" + 
4943
		"b110060.AA\n" +
4944
		"b110060.AAxx\n" + 
4944
		"b110060.AAxx\n" +
4945
		"b110060.AxA\n" + 
4945
		"b110060.AxA\n" +
4946
		"b110060.AxxAyy",
4946
		"b110060.AxxAyy",
4947
		requestor);
4947
		requestor);
4948
}
4948
}
Lines 4963-4971 Link Here
4963
	);
4963
	);
4964
	assertSearchResults(
4964
	assertSearchResults(
4965
		"Unexpected all type names",
4965
		"Unexpected all type names",
4966
		"b110060.AA\n" + 
4966
		"b110060.AA\n" +
4967
		"b110060.AAxx\n" + 
4967
		"b110060.AAxx\n" +
4968
		"b110060.AxA\n" + 
4968
		"b110060.AxA\n" +
4969
		"b110060.AxxAyy",
4969
		"b110060.AxxAyy",
4970
		requestor);
4970
		requestor);
4971
}
4971
}
Lines 4986-4992 Link Here
4986
	);
4986
	);
4987
	assertSearchResults(
4987
	assertSearchResults(
4988
		"Unexpected all type names",
4988
		"Unexpected all type names",
4989
		"b110060.AA\n" + 
4989
		"b110060.AA\n" +
4990
		"b110060.AAxx",
4990
		"b110060.AAxx",
4991
		requestor);
4991
		requestor);
4992
}
4992
}
Lines 5027-5033 Link Here
5027
	);
5027
	);
5028
	assertSearchResults(
5028
	assertSearchResults(
5029
		"Unexpected all type names",
5029
		"Unexpected all type names",
5030
		"b110060.AA\n" + 
5030
		"b110060.AA\n" +
5031
		"b110060.AAxx",
5031
		"b110060.AAxx",
5032
		requestor);
5032
		requestor);
5033
}
5033
}
Lines 5048-5054 Link Here
5048
	);
5048
	);
5049
	assertSearchResults(
5049
	assertSearchResults(
5050
		"Unexpected all type names",
5050
		"Unexpected all type names",
5051
		"b110060.AA\n" + 
5051
		"b110060.AA\n" +
5052
		"b110060.AAxx",
5052
		"b110060.AAxx",
5053
		requestor);
5053
		requestor);
5054
}
5054
}
Lines 5069-5075 Link Here
5069
	);
5069
	);
5070
	assertSearchResults(
5070
	assertSearchResults(
5071
		"Unexpected all type names",
5071
		"Unexpected all type names",
5072
		"b110060.AA\n" + 
5072
		"b110060.AA\n" +
5073
		"b110060.AAxx",
5073
		"b110060.AAxx",
5074
		requestor);
5074
		requestor);
5075
}
5075
}
Lines 5130-5136 Link Here
5130
	);
5130
	);
5131
	assertSearchResults(
5131
	assertSearchResults(
5132
		"Unexpected all type names",
5132
		"Unexpected all type names",
5133
		"b110060.AA\n" + 
5133
		"b110060.AA\n" +
5134
		"b110060.AAxx",
5134
		"b110060.AAxx",
5135
		requestor);
5135
		requestor);
5136
}
5136
}
Lines 5179-5214 Link Here
5179
private void setUpBug110060_ConstructorPattern() throws CoreException {
5179
private void setUpBug110060_ConstructorPattern() throws CoreException {
5180
	workingCopies = new ICompilationUnit[5];
5180
	workingCopies = new ICompilationUnit[5];
5181
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
5181
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
5182
		"package b110060;\n" + 
5182
		"package b110060;\n" +
5183
		"public class AA {\n" +
5183
		"public class AA {\n" +
5184
		"	AA() {}\n" +
5184
		"	AA() {}\n" +
5185
		"}\n"
5185
		"}\n"
5186
	);
5186
	);
5187
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
5187
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
5188
		"package b110060;\n" + 
5188
		"package b110060;\n" +
5189
		"public class AAxx {\n" +
5189
		"public class AAxx {\n" +
5190
		"	AAxx() {}\n" +
5190
		"	AAxx() {}\n" +
5191
		"}\n"
5191
		"}\n"
5192
	);
5192
	);
5193
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
5193
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
5194
		"package b110060;\n" + 
5194
		"package b110060;\n" +
5195
		"public class AxxAyy {\n" +
5195
		"public class AxxAyy {\n" +
5196
		"	AxxAyy() {}\n" +
5196
		"	AxxAyy() {}\n" +
5197
		"}\n"
5197
		"}\n"
5198
	);
5198
	);
5199
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
5199
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
5200
		"package b110060;\n" + 
5200
		"package b110060;\n" +
5201
		"public class AxA {\n" +
5201
		"public class AxA {\n" +
5202
		"	AxA() {}\n" +
5202
		"	AxA() {}\n" +
5203
		"}\n"
5203
		"}\n"
5204
	);
5204
	);
5205
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5205
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5206
		"package b110060;\n" + 
5206
		"package b110060;\n" +
5207
		"public class Test {\n" +
5207
		"public class Test {\n" +
5208
		"	AA aa = new AA();\n" + 
5208
		"	AA aa = new AA();\n" +
5209
		"	AAxx aaxx = new AAxx();\n" + 
5209
		"	AAxx aaxx = new AAxx();\n" +
5210
		"	AxA axa = new AxA();\n" + 
5210
		"	AxA axa = new AxA();\n" +
5211
		"	AxxAyy axxayy = new AxxAyy();\n" + 
5211
		"	AxxAyy axxayy = new AxxAyy();\n" +
5212
		"}\n"
5212
		"}\n"
5213
	);
5213
	);
5214
}
5214
}
Lines 5216-5224 Link Here
5216
	setUpBug110060_ConstructorPattern();
5216
	setUpBug110060_ConstructorPattern();
5217
	search("AA", CONSTRUCTOR, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
5217
	search("AA", CONSTRUCTOR, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
5218
	assertSearchResults(
5218
	assertSearchResults(
5219
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" + 
5219
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" +
5220
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" + 
5220
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" +
5221
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5221
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5222
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5222
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5223
	);
5223
	);
5224
}
5224
}
Lines 5227-5239 Link Here
5227
	setUpBug110060_ConstructorPattern();
5227
	setUpBug110060_ConstructorPattern();
5228
	search("AA", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5228
	search("AA", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5229
	assertSearchResults(
5229
	assertSearchResults(
5230
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" + 
5230
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" +
5231
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" + 
5231
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" +
5232
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" + 
5232
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" +
5233
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5233
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5234
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" + 
5234
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" +
5235
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" + 
5235
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" +
5236
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5236
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5237
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5237
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5238
	);
5238
	);
5239
}
5239
}
Lines 5242-5248 Link Here
5242
	setUpBug110060_ConstructorPattern();
5242
	setUpBug110060_ConstructorPattern();
5243
	search("AAx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5243
	search("AAx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5244
	assertSearchResults(
5244
	assertSearchResults(
5245
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" + 
5245
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" +
5246
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH"
5246
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH"
5247
	);
5247
	);
5248
}
5248
}
Lines 5251-5257 Link Here
5251
	setUpBug110060_ConstructorPattern();
5251
	setUpBug110060_ConstructorPattern();
5252
	search("Axx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5252
	search("Axx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5253
	assertSearchResults(
5253
	assertSearchResults(
5254
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5254
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5255
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5255
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5256
	);
5256
	);
5257
}
5257
}
Lines 5260-5268 Link Here
5260
	setUpBug110060_ConstructorPattern();
5260
	setUpBug110060_ConstructorPattern();
5261
	search("Ax", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5261
	search("Ax", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5262
	assertSearchResults(
5262
	assertSearchResults(
5263
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" + 
5263
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" +
5264
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5264
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5265
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5265
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5266
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5266
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5267
	);
5267
	);
5268
}
5268
}
Lines 5271-5283 Link Here
5271
	setUpBug110060_ConstructorPattern();
5271
	setUpBug110060_ConstructorPattern();
5272
	search("A*A*", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5272
	search("A*A*", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5273
	assertSearchResults(
5273
	assertSearchResults(
5274
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" + 
5274
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" +
5275
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" + 
5275
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" +
5276
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" + 
5276
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" +
5277
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5277
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5278
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" + 
5278
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" +
5279
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" + 
5279
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" +
5280
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5280
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5281
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5281
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5282
	);
5282
	);
5283
}
5283
}
Lines 5286-5305 Link Here
5286
private void setUpBug110060_MethodPattern() throws CoreException {
5286
private void setUpBug110060_MethodPattern() throws CoreException {
5287
	workingCopies = new ICompilationUnit[1];
5287
	workingCopies = new ICompilationUnit[1];
5288
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5288
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5289
		"package b110060;\n" + 
5289
		"package b110060;\n" +
5290
		"public class Test {\n" +
5290
		"public class Test {\n" +
5291
		"	void aMethodWithNothingSpecial() {}\n" + 
5291
		"	void aMethodWithNothingSpecial() {}\n" +
5292
		"	void aMethodWith1Digit() {}\n" + 
5292
		"	void aMethodWith1Digit() {}\n" +
5293
		"	void aMethodWith1DigitAnd_AnUnderscore() {}\n" + 
5293
		"	void aMethodWith1DigitAnd_AnUnderscore() {}\n" +
5294
		"	void aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() {}\n" + 
5294
		"	void aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() {}\n" +
5295
		"	void otherMethodWhichStartsWithAnotherLetter() {}\n" + 
5295
		"	void otherMethodWhichStartsWithAnotherLetter() {}\n" +
5296
		"	void testReferences() {\n" + 
5296
		"	void testReferences() {\n" +
5297
		"		aMethodWith1Digit();\n" + 
5297
		"		aMethodWith1Digit();\n" +
5298
		"		aMethodWith1DigitAnd_AnUnderscore();\n" + 
5298
		"		aMethodWith1DigitAnd_AnUnderscore();\n" +
5299
		"		aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores();\n" + 
5299
		"		aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores();\n" +
5300
		"		aMethodWithNothingSpecial();\n" + 
5300
		"		aMethodWithNothingSpecial();\n" +
5301
		"		otherMethodWhichStartsWithAnotherLetter();\n" + 
5301
		"		otherMethodWhichStartsWithAnotherLetter();\n" +
5302
		"	}\n" + 
5302
		"	}\n" +
5303
		"}\n"
5303
		"}\n"
5304
	);
5304
	);
5305
}
5305
}
Lines 5319-5327 Link Here
5319
	setUpBug110060_MethodPattern();
5319
	setUpBug110060_MethodPattern();
5320
	search("aMWD", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5320
	search("aMWD", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5321
	assertSearchResults(
5321
	assertSearchResults(
5322
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5322
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5323
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5323
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5324
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5324
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5325
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH"
5325
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH"
5326
	);
5326
	);
5327
}
5327
}
Lines 5330-5342 Link Here
5330
	setUpBug110060_MethodPattern();
5330
	setUpBug110060_MethodPattern();
5331
	search("aMW", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5331
	search("aMW", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5332
	assertSearchResults(
5332
	assertSearchResults(
5333
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" + 
5333
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" +
5334
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5334
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5335
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5335
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5336
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5336
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5337
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5337
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5338
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5338
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5339
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" + 
5339
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" +
5340
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5340
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5341
	);
5341
	);
5342
}
5342
}
Lines 5345-5357 Link Here
5345
	setUpBug110060_MethodPattern();
5345
	setUpBug110060_MethodPattern();
5346
	search("aMethod", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5346
	search("aMethod", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5347
	assertSearchResults(
5347
	assertSearchResults(
5348
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" + 
5348
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" +
5349
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5349
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5350
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5350
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5351
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5351
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5352
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5352
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5353
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5353
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5354
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" + 
5354
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" +
5355
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5355
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5356
	);
5356
	);
5357
}
5357
}
Lines 5360-5370 Link Here
5360
	setUpBug110060_MethodPattern();
5360
	setUpBug110060_MethodPattern();
5361
	search("aMethodWith1", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5361
	search("aMethodWith1", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5362
	assertSearchResults(
5362
	assertSearchResults(
5363
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5363
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5364
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5364
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5365
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5365
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5366
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5366
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5367
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5367
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5368
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5368
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5369
	);
5369
	);
5370
}
5370
}
Lines 5373-5385 Link Here
5373
	setUpBug110060_MethodPattern();
5373
	setUpBug110060_MethodPattern();
5374
	search("*Method*With*A*", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5374
	search("*Method*With*A*", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5375
	assertSearchResults(
5375
	assertSearchResults(
5376
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" + 
5376
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" +
5377
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5377
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5378
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5378
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5379
		"src/b110060/Test.java void b110060.Test.otherMethodWhichStartsWithAnotherLetter() [otherMethodWhichStartsWithAnotherLetter] EXACT_MATCH\n" + 
5379
		"src/b110060/Test.java void b110060.Test.otherMethodWhichStartsWithAnotherLetter() [otherMethodWhichStartsWithAnotherLetter] EXACT_MATCH\n" +
5380
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5380
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5381
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" + 
5381
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" +
5382
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH\n" + 
5382
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH\n" +
5383
		"src/b110060/Test.java void b110060.Test.testReferences() [otherMethodWhichStartsWithAnotherLetter()] EXACT_MATCH"
5383
		"src/b110060/Test.java void b110060.Test.testReferences() [otherMethodWhichStartsWithAnotherLetter()] EXACT_MATCH"
5384
	);
5384
	);
5385
}
5385
}
Lines 5394-5400 Link Here
5394
	setUpBug110060_MethodPattern();
5394
	setUpBug110060_MethodPattern();
5395
	search("aMWOOODASU", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5395
	search("aMWOOODASU", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5396
	assertSearchResults(
5396
	assertSearchResults(
5397
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5397
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5398
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5398
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5399
	);
5399
	);
5400
}
5400
}
Lines 5403-5422 Link Here
5403
private void setUpBug110060_FieldPattern() throws CoreException {
5403
private void setUpBug110060_FieldPattern() throws CoreException {
5404
	workingCopies = new ICompilationUnit[1];
5404
	workingCopies = new ICompilationUnit[1];
5405
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5405
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5406
		"package b110060;\n" + 
5406
		"package b110060;\n" +
5407
		"public class Test {\n" +
5407
		"public class Test {\n" +
5408
		"	Object aFieldWithNothingSpecial;\n" + 
5408
		"	Object aFieldWithNothingSpecial;\n" +
5409
		"	Object aFieldWithS$Dollar;\n" + 
5409
		"	Object aFieldWithS$Dollar;\n" +
5410
		"	Object aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" + 
5410
		"	Object aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" +
5411
		"	Object aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" + 
5411
		"	Object aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" +
5412
		"	Object otherFieldWhichStartsWithAnotherLetter;\n" + 
5412
		"	Object otherFieldWhichStartsWithAnotherLetter;\n" +
5413
		"	void testReferences() {\n" + 
5413
		"	void testReferences() {\n" +
5414
		"		Object o0 = aFieldWithNothingSpecial;\n" + 
5414
		"		Object o0 = aFieldWithNothingSpecial;\n" +
5415
		"		Object o1 = aFieldWithS$Dollar;\n" + 
5415
		"		Object o1 = aFieldWithS$Dollar;\n" +
5416
		"		Object o2 = aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" + 
5416
		"		Object o2 = aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" +
5417
		"		Object o3 = aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" + 
5417
		"		Object o3 = aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" +
5418
		"	}\n" + 
5418
		"	}\n" +
5419
		"	Object oF = otherFieldWhichStartsWithAnotherLetter;\n" + 
5419
		"	Object oF = otherFieldWhichStartsWithAnotherLetter;\n" +
5420
		"}\n"
5420
		"}\n"
5421
	);
5421
	);
5422
}
5422
}
Lines 5424-5432 Link Here
5424
	setUpBug110060_FieldPattern();
5424
	setUpBug110060_FieldPattern();
5425
	search("aFWSD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5425
	search("aFWSD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5426
	assertSearchResults(
5426
	assertSearchResults(
5427
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" + 
5427
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" +
5428
		"src/b110060/Test.java b110060.Test.aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH\n" + 
5428
		"src/b110060/Test.java b110060.Test.aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH\n" +
5429
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH\n" + 
5429
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH\n" +
5430
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH"
5430
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH"
5431
	);
5431
	);
5432
}
5432
}
Lines 5441-5447 Link Here
5441
	setUpBug110060_FieldPattern();
5441
	setUpBug110060_FieldPattern();
5442
	search("aFWS$", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5442
	search("aFWS$", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5443
	assertSearchResults(
5443
	assertSearchResults(
5444
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" + 
5444
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" +
5445
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH"
5445
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH"
5446
	);
5446
	);
5447
}
5447
}
Lines 5450-5456 Link Here
5450
	setUpBug110060_FieldPattern();
5450
	setUpBug110060_FieldPattern();
5451
	search("aSFWSCD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5451
	search("aSFWSCD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5452
	assertSearchResults(
5452
	assertSearchResults(
5453
		"src/b110060/Test.java b110060.Test.aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH\n" + 
5453
		"src/b110060/Test.java b110060.Test.aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH\n" +
5454
		"src/b110060/Test.java void b110060.Test.testReferences() [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH"
5454
		"src/b110060/Test.java void b110060.Test.testReferences() [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH"
5455
	);
5455
	);
5456
}
5456
}
Lines 5459-5466 Link Here
5459
	setUpBug110060_FieldPattern();
5459
	setUpBug110060_FieldPattern();
5460
	search("oF", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5460
	search("oF", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5461
	assertSearchResults(
5461
	assertSearchResults(
5462
		"src/b110060/Test.java b110060.Test.otherFieldWhichStartsWithAnotherLetter [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH\n" + 
5462
		"src/b110060/Test.java b110060.Test.otherFieldWhichStartsWithAnotherLetter [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH\n" +
5463
		"src/b110060/Test.java b110060.Test.oF [oF] EXACT_MATCH\n" + 
5463
		"src/b110060/Test.java b110060.Test.oF [oF] EXACT_MATCH\n" +
5464
		"src/b110060/Test.java b110060.Test.oF [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH"
5464
		"src/b110060/Test.java b110060.Test.oF [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH"
5465
	);
5465
	);
5466
}
5466
}
Lines 5472-5479 Link Here
5472
public void testBug110291() throws CoreException {
5472
public void testBug110291() throws CoreException {
5473
	workingCopies = new ICompilationUnit[1];
5473
	workingCopies = new ICompilationUnit[1];
5474
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110291/Test110291XX.java",
5474
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110291/Test110291XX.java",
5475
		"package b110291;\n" + 
5475
		"package b110291;\n" +
5476
		"public class Test110291XX {\n" + 
5476
		"public class Test110291XX {\n" +
5477
		"	class Test110291YY {}" +
5477
		"	class Test110291YY {}" +
5478
		"}\n"
5478
		"}\n"
5479
	);
5479
	);
Lines 5490-5513 Link Here
5490
public void testBug110336a() throws CoreException {
5490
public void testBug110336a() throws CoreException {
5491
	workingCopies = new ICompilationUnit[1];
5491
	workingCopies = new ICompilationUnit[1];
5492
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5492
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5493
		"package b110336;\n" + 
5493
		"package b110336;\n" +
5494
		"public class Test {\n" + 
5494
		"public class Test {\n" +
5495
		"	<TP extends Test> void method(Class<Test> clazz) {\n" + 
5495
		"	<TP extends Test> void method(Class<Test> clazz) {\n" +
5496
		"		Test localVar1 = new Test();\n" + 
5496
		"		Test localVar1 = new Test();\n" +
5497
		"		Class<Test> localVar2 = new Class<Test>();\n" + 
5497
		"		Class<Test> localVar2 = new Class<Test>();\n" +
5498
		"		localVar1.method(localVar2);\n" + 
5498
		"		localVar1.method(localVar2);\n" +
5499
		"	}\n" + 
5499
		"	}\n" +
5500
		"}\n"
5500
		"}\n"
5501
	);
5501
	);
5502
	IType type = this.workingCopies[0].getType("Test");
5502
	IType type = this.workingCopies[0].getType("Test");
5503
	TypeReferencesCollector collector = new TypeReferencesCollector();
5503
	TypeReferencesCollector collector = new TypeReferencesCollector();
5504
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5504
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5505
	assertSearchResults(
5505
	assertSearchResults(
5506
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).TP [Test]\n" + 
5506
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).TP [Test]\n" +
5507
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).clazz [Test]\n" + 
5507
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).clazz [Test]\n" +
5508
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" + 
5508
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" +
5509
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" + 
5509
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" +
5510
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]\n" + 
5510
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]\n" +
5511
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]",
5511
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]",
5512
		collector
5512
		collector
5513
	);
5513
	);
Lines 5515-5542 Link Here
5515
public void testBug110336b() throws CoreException {
5515
public void testBug110336b() throws CoreException {
5516
	workingCopies = new ICompilationUnit[1];
5516
	workingCopies = new ICompilationUnit[1];
5517
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5517
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5518
		"package b110336;\n" + 
5518
		"package b110336;\n" +
5519
		"public class Test {\n" + 
5519
		"public class Test {\n" +
5520
		"	void method1(Test methodParam) {\n" + 
5520
		"	void method1(Test methodParam) {\n" +
5521
		"		Test localVar1 = new Test(){\n" + 
5521
		"		Test localVar1 = new Test(){\n" +
5522
		"			Class c = Test.class;\n" + 
5522
		"			Class c = Test.class;\n" +
5523
		"			<TP extends Test> void foo(){\n" + 
5523
		"			<TP extends Test> void foo(){\n" +
5524
		"				Test o = (Test) null;\n" + 
5524
		"				Test o = (Test) null;\n" +
5525
		"			}\n" + 
5525
		"			}\n" +
5526
		"		};\n" + 
5526
		"		};\n" +
5527
		"	}	\n" + 
5527
		"	}	\n" +
5528
		"}\n"
5528
		"}\n"
5529
	);
5529
	);
5530
	IType type = this.workingCopies[0].getType("Test");
5530
	IType type = this.workingCopies[0].getType("Test");
5531
	TypeReferencesCollector collector = new TypeReferencesCollector();
5531
	TypeReferencesCollector collector = new TypeReferencesCollector();
5532
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5532
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5533
	assertSearchResults(
5533
	assertSearchResults(
5534
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1 [Test]\n" + 
5534
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1 [Test]\n" +
5535
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1.c [Test]\n" + 
5535
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1.c [Test]\n" +
5536
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().TP [Test]\n" + 
5536
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().TP [Test]\n" +
5537
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" + 
5537
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" +
5538
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" + 
5538
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" +
5539
		"src/b110336/Test.java void b110336.Test.method1(Test).methodParam [Test]\n" + 
5539
		"src/b110336/Test.java void b110336.Test.method1(Test).methodParam [Test]\n" +
5540
		"src/b110336/Test.java void b110336.Test.method1(Test).localVar1 [Test]",
5540
		"src/b110336/Test.java void b110336.Test.method1(Test).localVar1 [Test]",
5541
		collector
5541
		collector
5542
	);
5542
	);
Lines 5544-5561 Link Here
5544
public void testBug110336c() throws CoreException {
5544
public void testBug110336c() throws CoreException {
5545
	workingCopies = new ICompilationUnit[1];
5545
	workingCopies = new ICompilationUnit[1];
5546
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5546
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5547
		"package b110336;\n" + 
5547
		"package b110336;\n" +
5548
		"public class Test<TP extends X> {\n" + 
5548
		"public class Test<TP extends X> {\n" +
5549
		"	X x;\n" + 
5549
		"	X x;\n" +
5550
		"\n" + 
5550
		"\n" +
5551
		"}\n" + 
5551
		"}\n" +
5552
		"class X {}\n"
5552
		"class X {}\n"
5553
	);
5553
	);
5554
	IType type = this.workingCopies[0].getType("X");
5554
	IType type = this.workingCopies[0].getType("X");
5555
	TypeReferencesCollector collector = new TypeReferencesCollector();
5555
	TypeReferencesCollector collector = new TypeReferencesCollector();
5556
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5556
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5557
	assertSearchResults(
5557
	assertSearchResults(
5558
		"src/b110336/Test.java b110336.Test.TP [X]\n" + 
5558
		"src/b110336/Test.java b110336.Test.TP [X]\n" +
5559
		"src/b110336/Test.java b110336.Test.x [X]",
5559
		"src/b110336/Test.java b110336.Test.x [X]",
5560
		collector
5560
		collector
5561
	);
5561
	);
Lines 5563-5584 Link Here
5563
public void testBug110336d() throws CoreException {
5563
public void testBug110336d() throws CoreException {
5564
	workingCopies = new ICompilationUnit[1];
5564
	workingCopies = new ICompilationUnit[1];
5565
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5565
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5566
		"package b110336;\n" + 
5566
		"package b110336;\n" +
5567
		"public class Test {\n" + 
5567
		"public class Test {\n" +
5568
		"	Test a1Test = null, b1Test = new Test(), c1Test;\n" + 
5568
		"	Test a1Test = null, b1Test = new Test(), c1Test;\n" +
5569
		"	Test a2Test = new Test(), b2Test, c2Test = null;\n" + 
5569
		"	Test a2Test = new Test(), b2Test, c2Test = null;\n" +
5570
		"	Test a3Test, b3Test = null, c3Test = new Test();\n" + 
5570
		"	Test a3Test, b3Test = null, c3Test = new Test();\n" +
5571
		"}\n"
5571
		"}\n"
5572
	);
5572
	);
5573
	IType type = this.workingCopies[0].getType("Test");
5573
	IType type = this.workingCopies[0].getType("Test");
5574
	TypeReferencesCollector collector = new TypeReferencesCollector();
5574
	TypeReferencesCollector collector = new TypeReferencesCollector();
5575
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5575
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5576
	assertSearchResults(
5576
	assertSearchResults(
5577
		"src/b110336/Test.java b110336.Test.a1Test [Test]+[b1Test,c1Test]\n" + 
5577
		"src/b110336/Test.java b110336.Test.a1Test [Test]+[b1Test,c1Test]\n" +
5578
		"src/b110336/Test.java b110336.Test.b1Test [Test]\n" + 
5578
		"src/b110336/Test.java b110336.Test.b1Test [Test]\n" +
5579
		"src/b110336/Test.java b110336.Test.a2Test [Test]+[b2Test,c2Test]\n" + 
5579
		"src/b110336/Test.java b110336.Test.a2Test [Test]+[b2Test,c2Test]\n" +
5580
		"src/b110336/Test.java b110336.Test.a2Test [Test]\n" + 
5580
		"src/b110336/Test.java b110336.Test.a2Test [Test]\n" +
5581
		"src/b110336/Test.java b110336.Test.a3Test [Test]+[b3Test,c3Test]\n" + 
5581
		"src/b110336/Test.java b110336.Test.a3Test [Test]+[b3Test,c3Test]\n" +
5582
		"src/b110336/Test.java b110336.Test.c3Test [Test]",
5582
		"src/b110336/Test.java b110336.Test.c3Test [Test]",
5583
		collector
5583
		collector
5584
	);
5584
	);
Lines 5586-5609 Link Here
5586
public void testBug110336e() throws CoreException {
5586
public void testBug110336e() throws CoreException {
5587
	workingCopies = new ICompilationUnit[1];
5587
	workingCopies = new ICompilationUnit[1];
5588
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5588
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5589
		"package b110336;\n" + 
5589
		"package b110336;\n" +
5590
		"public class Test {\n" + 
5590
		"public class Test {\n" +
5591
		"	void foo() {\n" + 
5591
		"	void foo() {\n" +
5592
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" + 
5592
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" +
5593
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" + 
5593
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" +
5594
		"		Test lv7, lv8 = null, lv9 = new Test();\n" + 
5594
		"		Test lv7, lv8 = null, lv9 = new Test();\n" +
5595
		"	}\n" + 
5595
		"	}\n" +
5596
		"}\n"
5596
		"}\n"
5597
	);
5597
	);
5598
	IType type = this.workingCopies[0].getType("Test");
5598
	IType type = this.workingCopies[0].getType("Test");
5599
	TypeReferencesCollector collector = new TypeReferencesCollector();
5599
	TypeReferencesCollector collector = new TypeReferencesCollector();
5600
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5600
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5601
	assertSearchResults(
5601
	assertSearchResults(
5602
		"src/b110336/Test.java void b110336.Test.foo().lv1 [Test]+[lv2,lv3]\n" + 
5602
		"src/b110336/Test.java void b110336.Test.foo().lv1 [Test]+[lv2,lv3]\n" +
5603
		"src/b110336/Test.java void b110336.Test.foo().lv2 [Test]\n" + 
5603
		"src/b110336/Test.java void b110336.Test.foo().lv2 [Test]\n" +
5604
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]+[lv5,lv6]\n" + 
5604
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]+[lv5,lv6]\n" +
5605
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]\n" + 
5605
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]\n" +
5606
		"src/b110336/Test.java void b110336.Test.foo().lv7 [Test]+[lv8,lv9]\n" + 
5606
		"src/b110336/Test.java void b110336.Test.foo().lv7 [Test]+[lv8,lv9]\n" +
5607
		"src/b110336/Test.java void b110336.Test.foo().lv9 [Test]",
5607
		"src/b110336/Test.java void b110336.Test.foo().lv9 [Test]",
5608
		collector
5608
		collector
5609
	);
5609
	);
Lines 5611-5638 Link Here
5611
public void testBug110336f() throws CoreException {
5611
public void testBug110336f() throws CoreException {
5612
	workingCopies = new ICompilationUnit[1];
5612
	workingCopies = new ICompilationUnit[1];
5613
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5613
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5614
		"package b110336;\n" + 
5614
		"package b110336;\n" +
5615
		"public class Test extends Exception {\n" + 
5615
		"public class Test extends Exception {\n" +
5616
		"        void foo(Test test1) { // <- no local element\n" + 
5616
		"        void foo(Test test1) { // <- no local element\n" +
5617
		"                Test test2; // <- local element\n" + 
5617
		"                Test test2; // <- local element\n" +
5618
		"                try {\n" + 
5618
		"                try {\n" +
5619
		"                        throw new Test();\n" + 
5619
		"                        throw new Test();\n" +
5620
		"                }\n" + 
5620
		"                }\n" +
5621
		"                catch (Test test4) { // <- no local element\n" + 
5621
		"                catch (Test test4) { // <- no local element\n" +
5622
		"                }\n" + 
5622
		"                }\n" +
5623
		"                for(Test test3;;) {} // <- local element\n" + 
5623
		"                for(Test test3;;) {} // <- local element\n" +
5624
		"        }\n" + 
5624
		"        }\n" +
5625
		"\n" + 
5625
		"\n" +
5626
		"}\n"
5626
		"}\n"
5627
	);
5627
	);
5628
	IType type = this.workingCopies[0].getType("Test");
5628
	IType type = this.workingCopies[0].getType("Test");
5629
	TypeReferencesCollector collector = new TypeReferencesCollector();
5629
	TypeReferencesCollector collector = new TypeReferencesCollector();
5630
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5630
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5631
	assertSearchResults(
5631
	assertSearchResults(
5632
		"src/b110336/Test.java void b110336.Test.foo(Test).test1 [Test]\n" + 
5632
		"src/b110336/Test.java void b110336.Test.foo(Test).test1 [Test]\n" +
5633
		"src/b110336/Test.java void b110336.Test.foo(Test).test2 [Test]\n" + 
5633
		"src/b110336/Test.java void b110336.Test.foo(Test).test2 [Test]\n" +
5634
		"src/b110336/Test.java void b110336.Test.foo(Test) [Test]\n" + 
5634
		"src/b110336/Test.java void b110336.Test.foo(Test) [Test]\n" +
5635
		"src/b110336/Test.java void b110336.Test.foo(Test).test4 [Test]\n" + 
5635
		"src/b110336/Test.java void b110336.Test.foo(Test).test4 [Test]\n" +
5636
		"src/b110336/Test.java void b110336.Test.foo(Test).test3 [Test]",
5636
		"src/b110336/Test.java void b110336.Test.foo(Test).test3 [Test]",
5637
		collector
5637
		collector
5638
	);
5638
	);
Lines 5640-5663 Link Here
5640
public void testBug110336g() throws CoreException {
5640
public void testBug110336g() throws CoreException {
5641
	workingCopies = new ICompilationUnit[1];
5641
	workingCopies = new ICompilationUnit[1];
5642
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5642
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5643
		"package b110336;\n" + 
5643
		"package b110336;\n" +
5644
		"public class Test {\n" + 
5644
		"public class Test {\n" +
5645
		"	{\n" + 
5645
		"	{\n" +
5646
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" + 
5646
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" +
5647
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" + 
5647
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" +
5648
		"		Test lv7, lv8 = null, lv9 = new Test();\n" + 
5648
		"		Test lv7, lv8 = null, lv9 = new Test();\n" +
5649
		"	}\n" + 
5649
		"	}\n" +
5650
		"}\n"
5650
		"}\n"
5651
	);
5651
	);
5652
	IType type = this.workingCopies[0].getType("Test");
5652
	IType type = this.workingCopies[0].getType("Test");
5653
	TypeReferencesCollector collector = new TypeReferencesCollector();
5653
	TypeReferencesCollector collector = new TypeReferencesCollector();
5654
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5654
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5655
	assertSearchResults(
5655
	assertSearchResults(
5656
		"src/b110336/Test.java b110336.Test.{}.lv1 [Test]+[lv2,lv3]\n" + 
5656
		"src/b110336/Test.java b110336.Test.{}.lv1 [Test]+[lv2,lv3]\n" +
5657
		"src/b110336/Test.java b110336.Test.{}.lv2 [Test]\n" + 
5657
		"src/b110336/Test.java b110336.Test.{}.lv2 [Test]\n" +
5658
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]+[lv5,lv6]\n" + 
5658
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]+[lv5,lv6]\n" +
5659
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]\n" + 
5659
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]\n" +
5660
		"src/b110336/Test.java b110336.Test.{}.lv7 [Test]+[lv8,lv9]\n" + 
5660
		"src/b110336/Test.java b110336.Test.{}.lv7 [Test]+[lv8,lv9]\n" +
5661
		"src/b110336/Test.java b110336.Test.{}.lv9 [Test]",
5661
		"src/b110336/Test.java b110336.Test.{}.lv9 [Test]",
5662
		collector
5662
		collector
5663
	);
5663
	);
Lines 5665-5688 Link Here
5665
public void testBug110336h() throws CoreException {
5665
public void testBug110336h() throws CoreException {
5666
	workingCopies = new ICompilationUnit[1];
5666
	workingCopies = new ICompilationUnit[1];
5667
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5667
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5668
		"package b110336;\n" + 
5668
		"package b110336;\n" +
5669
		"public class Test {\n" + 
5669
		"public class Test {\n" +
5670
		"	static {\n" + 
5670
		"	static {\n" +
5671
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" + 
5671
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" +
5672
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" + 
5672
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" +
5673
		"		Test lv7, lv8 = null, lv9 = new Test();\n" + 
5673
		"		Test lv7, lv8 = null, lv9 = new Test();\n" +
5674
		"	}\n" + 
5674
		"	}\n" +
5675
		"}\n"
5675
		"}\n"
5676
	);
5676
	);
5677
	IType type = this.workingCopies[0].getType("Test");
5677
	IType type = this.workingCopies[0].getType("Test");
5678
	TypeReferencesCollector collector = new TypeReferencesCollector();
5678
	TypeReferencesCollector collector = new TypeReferencesCollector();
5679
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5679
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5680
	assertSearchResults(
5680
	assertSearchResults(
5681
		"src/b110336/Test.java b110336.Test.static {}.lv1 [Test]+[lv2,lv3]\n" + 
5681
		"src/b110336/Test.java b110336.Test.static {}.lv1 [Test]+[lv2,lv3]\n" +
5682
		"src/b110336/Test.java b110336.Test.static {}.lv2 [Test]\n" + 
5682
		"src/b110336/Test.java b110336.Test.static {}.lv2 [Test]\n" +
5683
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]+[lv5,lv6]\n" + 
5683
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]+[lv5,lv6]\n" +
5684
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]\n" + 
5684
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]\n" +
5685
		"src/b110336/Test.java b110336.Test.static {}.lv7 [Test]+[lv8,lv9]\n" + 
5685
		"src/b110336/Test.java b110336.Test.static {}.lv7 [Test]+[lv8,lv9]\n" +
5686
		"src/b110336/Test.java b110336.Test.static {}.lv9 [Test]",
5686
		"src/b110336/Test.java b110336.Test.static {}.lv9 [Test]",
5687
		collector
5687
		collector
5688
	);
5688
	);
Lines 5724-5741 Link Here
5724
   );
5724
   );
5725
	assertSearchResults(
5725
	assertSearchResults(
5726
		"Unexpected all type names",
5726
		"Unexpected all type names",
5727
		"java.lang.CharSequence\n" + 
5727
		"java.lang.CharSequence\n" +
5728
		"java.lang.Class\n" + 
5728
		"java.lang.Class\n" +
5729
		"java.lang.CloneNotSupportedException\n" + 
5729
		"java.lang.CloneNotSupportedException\n" +
5730
		"java.lang.Comparable\n" + 
5730
		"java.lang.Comparable\n" +
5731
		"java.lang.Enum\n" + 
5731
		"java.lang.Enum\n" +
5732
		"java.lang.Error\n" + 
5732
		"java.lang.Error\n" +
5733
		"java.lang.Exception\n" + 
5733
		"java.lang.Exception\n" +
5734
		"java.lang.IllegalMonitorStateException\n" + 
5734
		"java.lang.IllegalMonitorStateException\n" +
5735
		"java.lang.InterruptedException\n" + 
5735
		"java.lang.InterruptedException\n" +
5736
		"java.lang.Object\n" + 
5736
		"java.lang.Object\n" +
5737
		"java.lang.RuntimeException\n" + 
5737
		"java.lang.RuntimeException\n" +
5738
		"java.lang.String\n" + 
5738
		"java.lang.String\n" +
5739
		"java.lang.Throwable",
5739
		"java.lang.Throwable",
5740
		requestor);
5740
		requestor);
5741
}
5741
}
Lines 5747-5761 Link Here
5747
public void testBug114539() throws CoreException {
5747
public void testBug114539() throws CoreException {
5748
	workingCopies = new ICompilationUnit[2];
5748
	workingCopies = new ICompilationUnit[2];
5749
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b114539/Foo.java",
5749
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b114539/Foo.java",
5750
		"package b114539;\n" + 
5750
		"package b114539;\n" +
5751
		"public class Foo {\n" + 
5751
		"public class Foo {\n" +
5752
		"	int bar=Bar.FOO;\n" + 
5752
		"	int bar=Bar.FOO;\n" +
5753
		"}\n"
5753
		"}\n"
5754
	);
5754
	);
5755
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b114539/Bar.java",
5755
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b114539/Bar.java",
5756
		"package b114539;\n" + 
5756
		"package b114539;\n" +
5757
		"public class Bar {\n" + 
5757
		"public class Bar {\n" +
5758
		"	private static final int FOO=0;\n" + 
5758
		"	private static final int FOO=0;\n" +
5759
		"}\n"
5759
		"}\n"
5760
	);
5760
	);
5761
	IField field = this.workingCopies[1].getType("Bar").getField("FOO");
5761
	IField field = this.workingCopies[1].getType("Bar").getField("FOO");
Lines 5772-5790 Link Here
5772
public void testBug116459() throws CoreException {
5772
public void testBug116459() throws CoreException {
5773
	workingCopies = new ICompilationUnit[1];
5773
	workingCopies = new ICompilationUnit[1];
5774
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/p1/X.java",
5774
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/p1/X.java",
5775
		"package p1;\n" + 
5775
		"package p1;\n" +
5776
		"class X<T> {\n" + 
5776
		"class X<T> {\n" +
5777
		"	X<T> gen;\n" + 
5777
		"	X<T> gen;\n" +
5778
		"	X<String> param;\n" + 
5778
		"	X<String> param;\n" +
5779
		"	X raw;\n" + 
5779
		"	X raw;\n" +
5780
		"}"
5780
		"}"
5781
	);
5781
	);
5782
	IType type = workingCopies[0].getType("X");
5782
	IType type = workingCopies[0].getType("X");
5783
	this.resultCollector.showRule = true;
5783
	this.resultCollector.showRule = true;
5784
	search(type, REFERENCES, ERASURE_RULE);
5784
	search(type, REFERENCES, ERASURE_RULE);
5785
	assertSearchResults(
5785
	assertSearchResults(
5786
		"src/p1/X.java p1.X.gen [X] EXACT_MATCH\n" + 
5786
		"src/p1/X.java p1.X.gen [X] EXACT_MATCH\n" +
5787
		"src/p1/X.java p1.X.param [X] ERASURE_MATCH\n" + 
5787
		"src/p1/X.java p1.X.param [X] ERASURE_MATCH\n" +
5788
		"src/p1/X.java p1.X.raw [X] ERASURE_RAW_MATCH"
5788
		"src/p1/X.java p1.X.raw [X] ERASURE_RAW_MATCH"
5789
	);
5789
	);
5790
}
5790
}
Lines 5796-5806 Link Here
5796
public void testBug119545() throws CoreException {
5796
public void testBug119545() throws CoreException {
5797
	workingCopies = new ICompilationUnit[1];
5797
	workingCopies = new ICompilationUnit[1];
5798
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b119545/Test.java",
5798
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b119545/Test.java",
5799
		"package b119545;\n" + 
5799
		"package b119545;\n" +
5800
		"class Test {\n" + 
5800
		"class Test {\n" +
5801
		"	void foo(Object o1, Object o2){\n" + 
5801
		"	void foo(Object o1, Object o2){\n" +
5802
		"		if (o1.equals(o2)) {}\n" + 
5802
		"		if (o1.equals(o2)) {}\n" +
5803
		"	}\n" + 
5803
		"	}\n" +
5804
		"}\n"
5804
		"}\n"
5805
	);
5805
	);
5806
	IType type = workingCopies[0].getType("Test");
5806
	IType type = workingCopies[0].getType("Test");
Lines 5818-5835 Link Here
5818
public void testBug120816a() throws CoreException {
5818
public void testBug120816a() throws CoreException {
5819
	workingCopies = new ICompilationUnit[2];
5819
	workingCopies = new ICompilationUnit[2];
5820
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5820
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5821
		"package b120816;\n" + 
5821
		"package b120816;\n" +
5822
		"public class Test<E> {\n" + 
5822
		"public class Test<E> {\n" +
5823
		"	String foo(E e) { return \"\"; }\n" + 
5823
		"	String foo(E e) { return \"\"; }\n" +
5824
		"}\n"
5824
		"}\n"
5825
	);
5825
	);
5826
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b120816/Sub.java",
5826
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b120816/Sub.java",
5827
		"package b120816;\n" + 
5827
		"package b120816;\n" +
5828
		"public class Sub extends Test<Exception> {\n" +
5828
		"public class Sub extends Test<Exception> {\n" +
5829
		"	String foo(RuntimeException e) { return \"\"; }\n" + 
5829
		"	String foo(RuntimeException e) { return \"\"; }\n" +
5830
		"	String foo(Exception e) {\n" + 
5830
		"	String foo(Exception e) {\n" +
5831
		"		return super.foo(e);\n" + 
5831
		"		return super.foo(e);\n" +
5832
		"	}\n" + 
5832
		"	}\n" +
5833
		"}\n"
5833
		"}\n"
5834
	);
5834
	);
5835
	search("* String (Exception)", METHOD, DECLARATIONS);
5835
	search("* String (Exception)", METHOD, DECLARATIONS);
Lines 5840-5854 Link Here
5840
public void testBug120816b() throws CoreException {
5840
public void testBug120816b() throws CoreException {
5841
	workingCopies = new ICompilationUnit[1];
5841
	workingCopies = new ICompilationUnit[1];
5842
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5842
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5843
		"package b120816;\n" + 
5843
		"package b120816;\n" +
5844
		"public class Test<E> {\n" + 
5844
		"public class Test<E> {\n" +
5845
		"	String foo(E e) { return \"\"; }\n" + 
5845
		"	String foo(E e) { return \"\"; }\n" +
5846
		"}\n" +
5846
		"}\n" +
5847
		"class Sub extends Test<Exception> {\n" +
5847
		"class Sub extends Test<Exception> {\n" +
5848
		"	String foo(RuntimeException e) { return \"\"; }\n" + 
5848
		"	String foo(RuntimeException e) { return \"\"; }\n" +
5849
		"	String foo(Exception e) {\n" + 
5849
		"	String foo(Exception e) {\n" +
5850
		"		return super.foo(e);\n" + 
5850
		"		return super.foo(e);\n" +
5851
		"	}\n" + 
5851
		"	}\n" +
5852
		"}\n"
5852
		"}\n"
5853
	);
5853
	);
5854
	search("* String (Exception)", METHOD, DECLARATIONS);
5854
	search("* String (Exception)", METHOD, DECLARATIONS);
Lines 5864-5878 Link Here
5864
private void setUpBug122442a() throws CoreException {
5864
private void setUpBug122442a() throws CoreException {
5865
	workingCopies = new ICompilationUnit[3];
5865
	workingCopies = new ICompilationUnit[3];
5866
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/I.java",
5866
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/I.java",
5867
		"package b122442;\n" + 
5867
		"package b122442;\n" +
5868
		"public interface I {}\n"
5868
		"public interface I {}\n"
5869
	);
5869
	);
5870
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b122442/II.java",
5870
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b122442/II.java",
5871
		"package b122442;\n" + 
5871
		"package b122442;\n" +
5872
		"public interface II extends I {}\n"
5872
		"public interface II extends I {}\n"
5873
	);
5873
	);
5874
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b122442/X.java",
5874
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b122442/X.java",
5875
		"package b122442;\n" + 
5875
		"package b122442;\n" +
5876
		"public class X implements I {}\n"
5876
		"public class X implements I {}\n"
5877
	);
5877
	);
5878
}
5878
}
Lines 5880-5886 Link Here
5880
	setUpBug122442a();
5880
	setUpBug122442a();
5881
	search("I", TYPE, IMPLEMENTORS);
5881
	search("I", TYPE, IMPLEMENTORS);
5882
	assertSearchResults(
5882
	assertSearchResults(
5883
		"src/b122442/II.java b122442.II [I] EXACT_MATCH\n" + 
5883
		"src/b122442/II.java b122442.II [I] EXACT_MATCH\n" +
5884
		"src/b122442/X.java b122442.X [I] EXACT_MATCH"
5884
		"src/b122442/X.java b122442.X [I] EXACT_MATCH"
5885
	);
5885
	);
5886
}
5886
}
Lines 5901-5914 Link Here
5901
private void setUpBug122442d() throws CoreException {
5901
private void setUpBug122442d() throws CoreException {
5902
	workingCopies = new ICompilationUnit[1];
5902
	workingCopies = new ICompilationUnit[1];
5903
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/User.java",
5903
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/User.java",
5904
		"class Klass {}\n" + 
5904
		"class Klass {}\n" +
5905
		"interface Interface {}\n" + 
5905
		"interface Interface {}\n" +
5906
		"class User {\n" + 
5906
		"class User {\n" +
5907
		"    void m() {\n" + 
5907
		"    void m() {\n" +
5908
		"        new Klass() {};\n" + 
5908
		"        new Klass() {};\n" +
5909
		"        new Interface() {};\n" + 
5909
		"        new Interface() {};\n" +
5910
		"    }\n" + 
5910
		"    }\n" +
5911
		"}\n" + 
5911
		"}\n" +
5912
		"class Sub extends Klass {}"
5912
		"class Sub extends Klass {}"
5913
	);
5913
	);
5914
}
5914
}
Lines 5937-5943 Link Here
5937
	setUpBug122442d();
5937
	setUpBug122442d();
5938
	search("Klass", TYPE, IMPLEMENTORS);
5938
	search("Klass", TYPE, IMPLEMENTORS);
5939
	assertSearchResults(
5939
	assertSearchResults(
5940
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" + 
5940
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" +
5941
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5941
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5942
	);
5942
	);
5943
}
5943
}
Lines 5952-5958 Link Here
5952
	setUpBug122442d();
5952
	setUpBug122442d();
5953
	search("Klass", CLASS, IMPLEMENTORS);
5953
	search("Klass", CLASS, IMPLEMENTORS);
5954
	assertSearchResults(
5954
	assertSearchResults(
5955
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" + 
5955
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" +
5956
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5956
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5957
	);
5957
	);
5958
}
5958
}
Lines 5965-5975 Link Here
5965
	IType type = getPackageFragment("JavaSearchBugs", "lib/b123679.jar", "pack").getClassFile("I123679.class").getType();
5965
	IType type = getPackageFragment("JavaSearchBugs", "lib/b123679.jar", "pack").getClassFile("I123679.class").getType();
5966
	search(type, REFERENCES);
5966
	search(type, REFERENCES);
5967
	assertSearchResults(
5967
	assertSearchResults(
5968
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" + 
5968
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" +
5969
		"lib/b123679.jar test.Test$StaticClass$Member.parent EXACT_MATCH\n" + 
5969
		"lib/b123679.jar test.Test$StaticClass$Member.parent EXACT_MATCH\n" +
5970
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" + 
5970
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" +
5971
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" + 
5971
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" +
5972
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" + 
5972
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" +
5973
		"lib/b123679.jar pack.I123679 test.Test$StaticClass$Member.getParent() EXACT_MATCH"
5973
		"lib/b123679.jar pack.I123679 test.Test$StaticClass$Member.getParent() EXACT_MATCH"
5974
	);
5974
	);
5975
}
5975
}
Lines 5978-6017 Link Here
5978
	IType type = unit.getType("I123679");
5978
	IType type = unit.getType("I123679");
5979
	search(type, REFERENCES);
5979
	search(type, REFERENCES);
5980
	assertSearchResults(
5980
	assertSearchResults(
5981
		"src/b123679/test/Test.java [b123679.pack.I123679] EXACT_MATCH\n" + 
5981
		"src/b123679/test/Test.java [b123679.pack.I123679] EXACT_MATCH\n" +
5982
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" + 
5982
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" +
5983
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" + 
5983
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" +
5984
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
5984
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
5985
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
5985
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
5986
		"src/b123679/test/Test.java I123679 b123679.test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
5986
		"src/b123679/test/Test.java I123679 b123679.test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
5987
	);
5987
	);
5988
}
5988
}
5989
public void testBug123679_wc() throws CoreException {
5989
public void testBug123679_wc() throws CoreException {
5990
	workingCopies = new ICompilationUnit[2];
5990
	workingCopies = new ICompilationUnit[2];
5991
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/I122679.java",
5991
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/I122679.java",
5992
		"package pack;\n" + 
5992
		"package pack;\n" +
5993
		"public interface I123679 {\n" + 
5993
		"public interface I123679 {\n" +
5994
		"}\n"
5994
		"}\n"
5995
	);
5995
	);
5996
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
5996
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
5997
		"package test;\n" + 
5997
		"package test;\n" +
5998
		"import pack.I123679;\n" + 
5998
		"import pack.I123679;\n" +
5999
		"public class Test {\n" + 
5999
		"public class Test {\n" +
6000
		"	static class StaticClass {\n" + 
6000
		"	static class StaticClass {\n" +
6001
		"		class Member {\n" + 
6001
		"		class Member {\n" +
6002
		"			private I123679 parent;\n" + 
6002
		"			private I123679 parent;\n" +
6003
		"			Member(Object obj) {\n" + 
6003
		"			Member(Object obj) {\n" +
6004
		"				if (obj instanceof I123679) {\n" + 
6004
		"				if (obj instanceof I123679) {\n" +
6005
		"					parent = (I123679) obj;\n" + 
6005
		"					parent = (I123679) obj;\n" +
6006
		"				} else {\n" + 
6006
		"				} else {\n" +
6007
		"					parent = new I123679() {};\n" + 
6007
		"					parent = new I123679() {};\n" +
6008
		"				}\n" + 
6008
		"				}\n" +
6009
		"			}\n" + 
6009
		"			}\n" +
6010
		"			I123679 getParent() {\n" + 
6010
		"			I123679 getParent() {\n" +
6011
		"				return parent;\n" + 
6011
		"				return parent;\n" +
6012
		"			}\n" + 
6012
		"			}\n" +
6013
		"		}\n" + 
6013
		"		}\n" +
6014
		"	}\n" + 
6014
		"	}\n" +
6015
		"}\n"
6015
		"}\n"
6016
	);
6016
	);
6017
	IType type = workingCopies[0].getType("I123679");
6017
	IType type = workingCopies[0].getType("I123679");
Lines 6019-6028 Link Here
6019
	assertSearchResults(
6019
	assertSearchResults(
6020
		// import reference is not found because package fragment and CU do not exist on disk
6020
		// import reference is not found because package fragment and CU do not exist on disk
6021
		// So, PackageReferenceLocator.isDeclaringPackageFragment(...) returns false and S.E. misses this match
6021
		// So, PackageReferenceLocator.isDeclaringPackageFragment(...) returns false and S.E. misses this match
6022
		"src/test/Test.java test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" + 
6022
		"src/test/Test.java test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" +
6023
		"src/test/Test.java test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" + 
6023
		"src/test/Test.java test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" +
6024
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
6024
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
6025
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
6025
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
6026
		"src/test/Test.java I123679 test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
6026
		"src/test/Test.java I123679 test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
6027
	);
6027
	);
6028
}
6028
}
Lines 6035-6082 Link Here
6035
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "E.class").getType();
6035
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "E.class").getType();
6036
	search(type, REFERENCES);
6036
	search(type, REFERENCES);
6037
	assertSearchResults(
6037
	assertSearchResults(
6038
		"lib/b124469.jar pack.E pack.A1.value() EXACT_MATCH\n" + 
6038
		"lib/b124469.jar pack.E pack.A1.value() EXACT_MATCH\n" +
6039
		"lib/b124469.jar pack.E[] pack.A1.list() EXACT_MATCH\n" + 
6039
		"lib/b124469.jar pack.E[] pack.A1.list() EXACT_MATCH\n" +
6040
		"lib/b124469.jar pack.E pack.A2.value() EXACT_MATCH\n" + 
6040
		"lib/b124469.jar pack.E pack.A2.value() EXACT_MATCH\n" +
6041
		"lib/b124469.jar pack.E[] pack.A2.list() EXACT_MATCH\n" + 
6041
		"lib/b124469.jar pack.E[] pack.A2.list() EXACT_MATCH\n" +
6042
		"lib/b124469.jar pack.E pack.A3.value() EXACT_MATCH\n" + 
6042
		"lib/b124469.jar pack.E pack.A3.value() EXACT_MATCH\n" +
6043
		"lib/b124469.jar pack.E[] pack.A3.list() EXACT_MATCH\n" + 
6043
		"lib/b124469.jar pack.E[] pack.A3.list() EXACT_MATCH\n" +
6044
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6044
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6045
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6045
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6046
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6046
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6047
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6047
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6048
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6048
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6049
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6049
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6050
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6050
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6051
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6051
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6052
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6052
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6053
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6053
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6054
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6054
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6055
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6055
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6056
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6056
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6057
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6057
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6058
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6058
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6059
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6059
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6060
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6060
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6061
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6061
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6062
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6062
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6063
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6063
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6064
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6064
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6065
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6065
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6066
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6066
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6067
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6067
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6068
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6068
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6069
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6069
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6070
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6070
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6071
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6071
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6072
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6072
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6073
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6073
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6074
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6074
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6075
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6075
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6076
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6076
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6077
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6077
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6078
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6078
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6079
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6079
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6080
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6080
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6081
	);
6081
	);
6082
}
6082
}
Lines 6084-6093 Link Here
6084
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A1.class").getType();
6084
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A1.class").getType();
6085
	search(type, REFERENCES);
6085
	search(type, REFERENCES);
6086
	assertSearchResults(
6086
	assertSearchResults(
6087
		"lib/b124469.jar pack.A1 pack.A2.annot() EXACT_MATCH\n" + 
6087
		"lib/b124469.jar pack.A1 pack.A2.annot() EXACT_MATCH\n" +
6088
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6088
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6089
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6089
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6090
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6090
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6091
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6091
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6092
	);
6092
	);
6093
}
6093
}
Lines 6095-6104 Link Here
6095
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A2.class").getType();
6095
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A2.class").getType();
6096
	search(type, REFERENCES);
6096
	search(type, REFERENCES);
6097
	assertSearchResults(
6097
	assertSearchResults(
6098
		"lib/b124469.jar pack.A2 pack.A3.annot() EXACT_MATCH\n" + 
6098
		"lib/b124469.jar pack.A2 pack.A3.annot() EXACT_MATCH\n" +
6099
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6099
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6100
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6100
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6101
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6101
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6102
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6102
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6103
	);
6103
	);
6104
}
6104
}
Lines 6106-6114 Link Here
6106
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A3.class").getType();
6106
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A3.class").getType();
6107
	search(type, REFERENCES);
6107
	search(type, REFERENCES);
6108
	assertSearchResults(
6108
	assertSearchResults(
6109
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6109
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6110
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6110
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6111
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6111
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6112
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6112
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6113
	);
6113
	);
6114
}
6114
}
Lines 6117-6124 Link Here
6117
	IField field = type.getField("CC");
6117
	IField field = type.getField("CC");
6118
	search(field, REFERENCES);
6118
	search(field, REFERENCES);
6119
	assertSearchResults(
6119
	assertSearchResults(
6120
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6120
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6121
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6121
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6122
		"lib/b124469.jar test.C EXACT_MATCH"
6122
		"lib/b124469.jar test.C EXACT_MATCH"
6123
	);
6123
	);
6124
}
6124
}
Lines 6127-6134 Link Here
6127
	IField field = type.getField("CF");
6127
	IField field = type.getField("CF");
6128
	search(field, REFERENCES);
6128
	search(field, REFERENCES);
6129
	assertSearchResults(
6129
	assertSearchResults(
6130
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6130
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6131
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6131
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6132
		"lib/b124469.jar test.F.field EXACT_MATCH"
6132
		"lib/b124469.jar test.F.field EXACT_MATCH"
6133
	);
6133
	);
6134
}
6134
}
Lines 6137-6144 Link Here
6137
	IField field = type.getField("CM");
6137
	IField field = type.getField("CM");
6138
	search(field, REFERENCES);
6138
	search(field, REFERENCES);
6139
	assertSearchResults(
6139
	assertSearchResults(
6140
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6140
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6141
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6141
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6142
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6142
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6143
	);
6143
	);
6144
}
6144
}
Lines 6163-6173 Link Here
6163
	IField field = type.getField("CAC");
6163
	IField field = type.getField("CAC");
6164
	search(field, REFERENCES);
6164
	search(field, REFERENCES);
6165
	assertSearchResults(
6165
	assertSearchResults(
6166
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6166
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6167
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6167
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6168
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6168
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6169
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6169
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6170
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6170
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6171
		"lib/b124469.jar test.C EXACT_MATCH"
6171
		"lib/b124469.jar test.C EXACT_MATCH"
6172
	);
6172
	);
6173
}
6173
}
Lines 6176-6186 Link Here
6176
	IField field = type.getField("CAF");
6176
	IField field = type.getField("CAF");
6177
	search(field, REFERENCES);
6177
	search(field, REFERENCES);
6178
	assertSearchResults(
6178
	assertSearchResults(
6179
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6179
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6180
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6180
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6181
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6181
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6182
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6182
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6183
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6183
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6184
		"lib/b124469.jar test.F.field EXACT_MATCH"
6184
		"lib/b124469.jar test.F.field EXACT_MATCH"
6185
	);
6185
	);
6186
}
6186
}
Lines 6189-6199 Link Here
6189
	IField field = type.getField("CAM");
6189
	IField field = type.getField("CAM");
6190
	search(field, REFERENCES);
6190
	search(field, REFERENCES);
6191
	assertSearchResults(
6191
	assertSearchResults(
6192
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6192
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6193
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6193
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6194
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6194
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6195
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6195
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6196
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6196
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6197
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6197
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6198
	);
6198
	);
6199
}
6199
}
Lines 6224-6232 Link Here
6224
		"public class Foo<T> {}"
6224
		"public class Foo<T> {}"
6225
	);
6225
	);
6226
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/Bar.java",
6226
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/Bar.java",
6227
		"public class Bar {\n" + 
6227
		"public class Bar {\n" +
6228
		"    Foo<String> f = new Foo<String>();\n" + 
6228
		"    Foo<String> f = new Foo<String>();\n" +
6229
		"    Foo f2 = new Foo();\n" + 
6229
		"    Foo f2 = new Foo();\n" +
6230
		"}"
6230
		"}"
6231
	);
6231
	);
6232
	IType type = workingCopies[0].getType("Foo");
6232
	IType type = workingCopies[0].getType("Foo");
Lines 6239-6247 Link Here
6239
		null
6239
		null
6240
	);
6240
	);
6241
	assertSearchResults(
6241
	assertSearchResults(
6242
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" + 
6242
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" +
6243
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" + 
6243
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" +
6244
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH\n" + 
6244
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH\n" +
6245
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH"
6245
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH"
6246
	);
6246
	);
6247
}
6247
}
Lines 6255-6263 Link Here
6255
	IType type = classFile.getType();
6255
	IType type = classFile.getType();
6256
	search(type, IMPLEMENTORS);
6256
	search(type, IMPLEMENTORS);
6257
	assertSearchResults(
6257
	assertSearchResults(
6258
		"src/b124645/xy/X_124645.java b124645.xy.X_124645$Y [BE_124645] EXACT_MATCH\n" + 
6258
		"src/b124645/xy/X_124645.java b124645.xy.X_124645$Y [BE_124645] EXACT_MATCH\n" +
6259
		"src/b124645/xy/Y_124645.java b124645.xy.Y_124645 [BE_124645] EXACT_MATCH\n" + 
6259
		"src/b124645/xy/Y_124645.java b124645.xy.Y_124645 [BE_124645] EXACT_MATCH\n" +
6260
		"lib/b124645.jar xy.BX_124645$Y EXACT_MATCH\n" + 
6260
		"lib/b124645.jar xy.BX_124645$Y EXACT_MATCH\n" +
6261
		"lib/b124645.jar xy.BY_124645 EXACT_MATCH"
6261
		"lib/b124645.jar xy.BY_124645 EXACT_MATCH"
6262
	);
6262
	);
6263
}
6263
}
Lines 6266-6278 Link Here
6266
	IType type = classFile.getType();
6266
	IType type = classFile.getType();
6267
	search(type, IMPLEMENTORS);
6267
	search(type, IMPLEMENTORS);
6268
	assertSearchResults(
6268
	assertSearchResults(
6269
		"src/b124645/test/A_124645.java b124645.test.A_124645 [BE_124645] EXACT_MATCH\n" + 
6269
		"src/b124645/test/A_124645.java b124645.test.A_124645 [BE_124645] EXACT_MATCH\n" +
6270
		"src/b124645/test/A_124645.java void b124645.test.A_124645.m():<anonymous>#1 [BE_124645] EXACT_MATCH\n" + 
6270
		"src/b124645/test/A_124645.java void b124645.test.A_124645.m():<anonymous>#1 [BE_124645] EXACT_MATCH\n" +
6271
		"src/b124645/test/X_124645.java b124645.test.X_124645 [BE_124645] EXACT_MATCH\n" + 
6271
		"src/b124645/test/X_124645.java b124645.test.X_124645 [BE_124645] EXACT_MATCH\n" +
6272
		"src/b124645/test/X_124645.java void b124645.test.X_124645.m():Y_124645#1 [BE_124645] EXACT_MATCH\n" + 
6272
		"src/b124645/test/X_124645.java void b124645.test.X_124645.m():Y_124645#1 [BE_124645] EXACT_MATCH\n" +
6273
		"lib/b124645.jar test.BA_124645 EXACT_MATCH\n" + 
6273
		"lib/b124645.jar test.BA_124645 EXACT_MATCH\n" +
6274
		"lib/b124645.jar test.<anonymous> EXACT_MATCH\n" + 
6274
		"lib/b124645.jar test.<anonymous> EXACT_MATCH\n" +
6275
		"lib/b124645.jar test.BX_124645 EXACT_MATCH\n" + 
6275
		"lib/b124645.jar test.BX_124645 EXACT_MATCH\n" +
6276
		"lib/b124645.jar test.Y EXACT_MATCH"
6276
		"lib/b124645.jar test.Y EXACT_MATCH"
6277
	);
6277
	);
6278
}
6278
}
Lines 6302-6313 Link Here
6302
	ProblemRequestor problemRequestor = new ProblemRequestor();
6302
	ProblemRequestor problemRequestor = new ProblemRequestor();
6303
	workingCopies = new ICompilationUnit[1];
6303
	workingCopies = new ICompilationUnit[1];
6304
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b125178/X.java",
6304
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b125178/X.java",
6305
		"package b125178;\n" + 
6305
		"package b125178;\n" +
6306
		"import pack.age.Test;\n" + 
6306
		"import pack.age.Test;\n" +
6307
		"public class X {\n" + 
6307
		"public class X {\n" +
6308
		"	public static void main(String[] args) {\n" + 
6308
		"	public static void main(String[] args) {\n" +
6309
		"		new Test().foo(100);\n" + 
6309
		"		new Test().foo(100);\n" +
6310
		"	}\n" + 
6310
		"	}\n" +
6311
		"}\n",
6311
		"}\n",
6312
		newWorkingCopyOwner(problemRequestor)
6312
		newWorkingCopyOwner(problemRequestor)
6313
	);
6313
	);
Lines 6316-6322 Link Here
6316
		"----------\n",
6316
		"----------\n",
6317
		problemRequestor.problems.toString()
6317
		problemRequestor.problems.toString()
6318
	);
6318
	);
6319
	
6319
6320
	// Get anonymous from
6320
	// Get anonymous from
6321
	IPackageFragment jar = getPackageFragment("JavaSearchBugs", "lib/b125178.jar", "pack.age");
6321
	IPackageFragment jar = getPackageFragment("JavaSearchBugs", "lib/b125178.jar", "pack.age");
6322
	IJavaElement[] children = jar.getChildren();
6322
	IJavaElement[] children = jar.getChildren();
Lines 6353-6361 Link Here
6353
	class DeprecatedTypesRequestor extends SearchTests.SearchTypeNameRequestor {
6353
	class DeprecatedTypesRequestor extends SearchTests.SearchTypeNameRequestor {
6354
		public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) {
6354
		public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) {
6355
			if ((modifiers & ClassFileConstants.AccDeprecated) != 0) {
6355
			if ((modifiers & ClassFileConstants.AccDeprecated) != 0) {
6356
				char[] typeName = 
6356
				char[] typeName =
6357
					CharOperation.concat(
6357
					CharOperation.concat(
6358
						CharOperation.concatWith(enclosingTypeNames, '$'), 
6358
						CharOperation.concatWith(enclosingTypeNames, '$'),
6359
						simpleTypeName,
6359
						simpleTypeName,
6360
						'$');
6360
						'$');
6361
				results.addElement(new String(CharOperation.concat(packageName, typeName, '.')));
6361
				results.addElement(new String(CharOperation.concat(packageName, typeName, '.')));
Lines 6419-6440 Link Here
6419
private void setUpBug130390() throws CoreException {
6419
private void setUpBug130390() throws CoreException {
6420
	workingCopies = new ICompilationUnit[4];
6420
	workingCopies = new ICompilationUnit[4];
6421
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b130390/TZ.java",
6421
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b130390/TZ.java",
6422
		"package b130390;\n" + 
6422
		"package b130390;\n" +
6423
		"public class TZ {\n" +
6423
		"public class TZ {\n" +
6424
		"}\n"
6424
		"}\n"
6425
	);
6425
	);
6426
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b130390/TimeZone.java",
6426
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b130390/TimeZone.java",
6427
		"package b130390;\n" + 
6427
		"package b130390;\n" +
6428
		"public class TimeZone{\n" +
6428
		"public class TimeZone{\n" +
6429
		"}\n"
6429
		"}\n"
6430
	);
6430
	);
6431
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b130390/Npe.java",
6431
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b130390/Npe.java",
6432
		"package b130390;\n" + 
6432
		"package b130390;\n" +
6433
		"public class Npe {\n" +
6433
		"public class Npe {\n" +
6434
		"}\n"
6434
		"}\n"
6435
	);
6435
	);
6436
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b130390/NullPointerException.java",
6436
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b130390/NullPointerException.java",
6437
		"package b130390;\n" + 
6437
		"package b130390;\n" +
6438
		"public class NullPointerException {\n" +
6438
		"public class NullPointerException {\n" +
6439
		"}\n"
6439
		"}\n"
6440
	);
6440
	);
Lines 6450-6456 Link Here
6450
	setUpBug130390();
6450
	setUpBug130390();
6451
	search("NPE", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH);
6451
	search("NPE", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH);
6452
	assertSearchResults(
6452
	assertSearchResults(
6453
		"src/b130390/Npe.java b130390.Npe [Npe] EXACT_MATCH\n" + 
6453
		"src/b130390/Npe.java b130390.Npe [Npe] EXACT_MATCH\n" +
6454
		"src/b130390/NullPointerException.java b130390.NullPointerException [NullPointerException] EXACT_MATCH"
6454
		"src/b130390/NullPointerException.java b130390.NullPointerException [NullPointerException] EXACT_MATCH"
6455
	);
6455
	);
6456
}
6456
}
Lines 6486-6492 Link Here
6486
	setUpBug130390();
6486
	setUpBug130390();
6487
	search("TZ", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
6487
	search("TZ", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
6488
	assertSearchResults(
6488
	assertSearchResults(
6489
		"src/b130390/TZ.java b130390.TZ [TZ] EXACT_MATCH\n" + 
6489
		"src/b130390/TZ.java b130390.TZ [TZ] EXACT_MATCH\n" +
6490
		"src/b130390/TimeZone.java b130390.TimeZone [TimeZone] EXACT_MATCH"
6490
		"src/b130390/TimeZone.java b130390.TimeZone [TimeZone] EXACT_MATCH"
6491
	);
6491
	);
6492
}
6492
}
Lines 6770-6788 Link Here
6770
public void testBug137984_wc() throws CoreException {
6770
public void testBug137984_wc() throws CoreException {
6771
	workingCopies = new ICompilationUnit[1];
6771
	workingCopies = new ICompilationUnit[1];
6772
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/CW.java",
6772
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/CW.java",
6773
		"public class CW {\n" + 
6773
		"public class CW {\n" +
6774
		"	CW2 c2;\n" + 
6774
		"	CW2 c2;\n" +
6775
		"	CW2.CW3 c3;\n" + 
6775
		"	CW2.CW3 c3;\n" +
6776
		"	CW(int c) {\n" + 
6776
		"	CW(int c) {\n" +
6777
		"		c2 = new CW2(c);\n" + 
6777
		"		c2 = new CW2(c);\n" +
6778
		"		c3 = c2.new CW3(c);\n" + 
6778
		"		c3 = c2.new CW3(c);\n" +
6779
		"	}\n" + 
6779
		"	}\n" +
6780
		"	class CW2 {\n" + 
6780
		"	class CW2 {\n" +
6781
		"		CW2(int x) {}\n" + 
6781
		"		CW2(int x) {}\n" +
6782
		"		class CW3 {\n" + 
6782
		"		class CW3 {\n" +
6783
		"			CW3(int x) {}\n" + 
6783
		"			CW3(int x) {}\n" +
6784
		"		}\n" + 
6784
		"		}\n" +
6785
		"	}\n" + 
6785
		"	}\n" +
6786
		"}\n"
6786
		"}\n"
6787
	);
6787
	);
6788
	IField field = workingCopies[0].getType("CW").getField("c3");
6788
	IField field = workingCopies[0].getType("CW").getField("c3");
Lines 6813-6830 Link Here
6813
public void testBug144044() throws CoreException {
6813
public void testBug144044() throws CoreException {
6814
	workingCopies = new ICompilationUnit[2];
6814
	workingCopies = new ICompilationUnit[2];
6815
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test1/p/Test.java",
6815
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test1/p/Test.java",
6816
		"package test1.p;\n" + 
6816
		"package test1.p;\n" +
6817
		"import test1.q.X;\n" + 
6817
		"import test1.q.X;\n" +
6818
		"public class Test {\n" + 
6818
		"public class Test {\n" +
6819
		"	String foo(X val) {\n" + 
6819
		"	String foo(X val) {\n" +
6820
		"		return val.str;\n" + 
6820
		"		return val.str;\n" +
6821
		"	}\n" + 
6821
		"	}\n" +
6822
		"}\n"
6822
		"}\n"
6823
	);
6823
	);
6824
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test1/q/X.java",
6824
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test1/q/X.java",
6825
		"package test1.q;\n" + 
6825
		"package test1.q;\n" +
6826
		"public class X {\n" + 
6826
		"public class X {\n" +
6827
		"	String str;\n" + 
6827
		"	String str;\n" +
6828
		"}\n"
6828
		"}\n"
6829
	);
6829
	);
6830
	IType type = this.workingCopies[1].getType("X");
6830
	IType type = this.workingCopies[1].getType("X");
Lines 6837-6873 Link Here
6837
public void testBug144044b() throws CoreException {
6837
public void testBug144044b() throws CoreException {
6838
	workingCopies = new ICompilationUnit[4];
6838
	workingCopies = new ICompilationUnit[4];
6839
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test2/p/Test.java",
6839
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test2/p/Test.java",
6840
		"package test2.p;\n" + 
6840
		"package test2.p;\n" +
6841
		"import test2.q.X;\n" + 
6841
		"import test2.q.X;\n" +
6842
		"public class Test {\n" + 
6842
		"public class Test {\n" +
6843
		"	X foo() {\n" + 
6843
		"	X foo() {\n" +
6844
		"		return X.y_field.z_field.x_field.y_field.z_field.x_field;\n" + 
6844
		"		return X.y_field.z_field.x_field.y_field.z_field.x_field;\n" +
6845
		"	}\n" + 
6845
		"	}\n" +
6846
		"}\n"
6846
		"}\n"
6847
	);
6847
	);
6848
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test2/q/X.java",
6848
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test2/q/X.java",
6849
		"package test2.q;\n" + 
6849
		"package test2.q;\n" +
6850
		"public class X {\n" + 
6850
		"public class X {\n" +
6851
		"	public static Y y_field;\n" + 
6851
		"	public static Y y_field;\n" +
6852
		"}\n"
6852
		"}\n"
6853
	);
6853
	);
6854
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Y.java",
6854
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Y.java",
6855
		"package test2.q;\n" + 
6855
		"package test2.q;\n" +
6856
		"public class Y {\n" + 
6856
		"public class Y {\n" +
6857
		"	public static Z z_field;\n" + 
6857
		"	public static Z z_field;\n" +
6858
		"}\n"
6858
		"}\n"
6859
	);
6859
	);
6860
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Z.java",
6860
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Z.java",
6861
		"package test2.q;\n" + 
6861
		"package test2.q;\n" +
6862
		"public class Z {\n" + 
6862
		"public class Z {\n" +
6863
		"	static X x_field;\n" + 
6863
		"	static X x_field;\n" +
6864
		"}\n"
6864
		"}\n"
6865
	);
6865
	);
6866
	IType type = this.workingCopies[3].getType("Z");
6866
	IType type = this.workingCopies[3].getType("Z");
6867
	IField field = type.getField("x_field");
6867
	IField field = type.getField("x_field");
6868
	search(field, REFERENCES);
6868
	search(field, REFERENCES);
6869
	assertSearchResults(
6869
	assertSearchResults(
6870
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH\n" + 
6870
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH\n" +
6871
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH"
6871
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH"
6872
	);
6872
	);
6873
}
6873
}
Lines 6883-6890 Link Here
6883
		IMethod method = type.getMethods()[1];
6883
		IMethod method = type.getMethods()[1];
6884
		searchDeclarationsOfReferencedTypes(method, this.resultCollector);
6884
		searchDeclarationsOfReferencedTypes(method, this.resultCollector);
6885
		assertSearchResults(
6885
		assertSearchResults(
6886
			""+ getExternalJCLPathString("1.5") + " java.lang.Object EXACT_MATCH\n" + 
6886
			""+ getExternalJCLPathString("1.5") + " java.lang.Object EXACT_MATCH\n" +
6887
			""+ getExternalJCLPathString("1.5") + " java.lang.String EXACT_MATCH\n" + 
6887
			""+ getExternalJCLPathString("1.5") + " java.lang.String EXACT_MATCH\n" +
6888
			"lib/b148215.jar test.def.Reference EXACT_MATCH"
6888
			"lib/b148215.jar test.def.Reference EXACT_MATCH"
6889
		);
6889
		);
6890
	}
6890
	}
Lines 6899-6905 Link Here
6899
		IMethod method = type.getMethods()[1];
6899
		IMethod method = type.getMethods()[1];
6900
		searchDeclarationsOfSentMessages(method, this.resultCollector);
6900
		searchDeclarationsOfSentMessages(method, this.resultCollector);
6901
		assertSearchResults(
6901
		assertSearchResults(
6902
			"lib/b148215.jar void test.pack.Test.bar(java.lang.String) EXACT_MATCH\n" + 
6902
			"lib/b148215.jar void test.pack.Test.bar(java.lang.String) EXACT_MATCH\n" +
6903
			"lib/b148215.jar void test.pack.Test.bar(test.def.Reference) EXACT_MATCH"
6903
			"lib/b148215.jar void test.pack.Test.bar(test.def.Reference) EXACT_MATCH"
6904
		);
6904
		);
6905
	}
6905
	}
Lines 6914-6920 Link Here
6914
		IMethod method = type.getMethods()[1];
6914
		IMethod method = type.getMethods()[1];
6915
		searchDeclarationsOfAccessedFields(method, this.resultCollector);
6915
		searchDeclarationsOfAccessedFields(method, this.resultCollector);
6916
		assertSearchResults(
6916
		assertSearchResults(
6917
			"lib/b148215.jar test.pack.Test.sField EXACT_MATCH\n" + 
6917
			"lib/b148215.jar test.pack.Test.sField EXACT_MATCH\n" +
6918
			"lib/b148215.jar test.pack.Test.rField EXACT_MATCH"
6918
			"lib/b148215.jar test.pack.Test.rField EXACT_MATCH"
6919
		);
6919
		);
6920
	}
6920
	}
Lines 6933-6951 Link Here
6933
	resultCollector.showRule = true;
6933
	resultCollector.showRule = true;
6934
	workingCopies = new ICompilationUnit[4];
6934
	workingCopies = new ICompilationUnit[4];
6935
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b148380/I.java",
6935
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b148380/I.java",
6936
		"package b148380;\n" + 
6936
		"package b148380;\n" +
6937
		"public interface I {}\n"
6937
		"public interface I {}\n"
6938
	);
6938
	);
6939
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b148380/X.java",
6939
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b148380/X.java",
6940
		"package b148380;\n" + 
6940
		"package b148380;\n" +
6941
		"public class X {}\n"
6941
		"public class X {}\n"
6942
	);
6942
	);
6943
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b148380/Sub.java",
6943
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b148380/Sub.java",
6944
		"package b148380;\n" + 
6944
		"package b148380;\n" +
6945
		"public class Sub extends X {}\n"
6945
		"public class Sub extends X {}\n"
6946
	);
6946
	);
6947
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b148380/Y.java",
6947
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b148380/Y.java",
6948
		"package b148380;\n" + 
6948
		"package b148380;\n" +
6949
		"public class Y {}\n"
6949
		"public class Y {}\n"
6950
	);
6950
	);
6951
	IJavaSearchScope scope = getJavaSearchScopeBugs();
6951
	IJavaSearchScope scope = getJavaSearchScopeBugs();
Lines 6960-6968 Link Here
6960
		requestor1,
6960
		requestor1,
6961
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
6961
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
6962
		null);
6962
		null);
6963
	String expected = "class Sub [in [Working copy] Sub.java [in b148380 [in src [in JavaSearchBugs]]]]\n" + 
6963
	String expected = "class Sub [in [Working copy] Sub.java [in b148380 [in src [in JavaSearchBugs]]]]\n" +
6964
		"class X [in [Working copy] X.java [in b148380 [in src [in JavaSearchBugs]]]]\n" + 
6964
		"class X [in [Working copy] X.java [in b148380 [in src [in JavaSearchBugs]]]]\n" +
6965
		"class Y [in [Working copy] Y.java [in b148380 [in src [in JavaSearchBugs]]]]\n" + 
6965
		"class Y [in [Working copy] Y.java [in b148380 [in src [in JavaSearchBugs]]]]\n" +
6966
		"interface I [in [Working copy] I.java [in b148380 [in src [in JavaSearchBugs]]]]";
6966
		"interface I [in [Working copy] I.java [in b148380 [in src [in JavaSearchBugs]]]]";
6967
	assertSearchResults(expected, requestor1);
6967
	assertSearchResults(expected, requestor1);
6968
	//  Expected same result with the wc owner
6968
	//  Expected same result with the wc owner
Lines 7037-7051 Link Here
7037
   );
7037
   );
7038
	assertSearchResults(
7038
	assertSearchResults(
7039
		"Unexpected all type names",
7039
		"Unexpected all type names",
7040
		"java.lang.Class\n" + 
7040
		"java.lang.Class\n" +
7041
		"java.lang.CloneNotSupportedException\n" + 
7041
		"java.lang.CloneNotSupportedException\n" +
7042
		"java.lang.Error\n" + 
7042
		"java.lang.Error\n" +
7043
		"java.lang.Exception\n" + 
7043
		"java.lang.Exception\n" +
7044
		"java.lang.IllegalMonitorStateException\n" + 
7044
		"java.lang.IllegalMonitorStateException\n" +
7045
		"java.lang.InterruptedException\n" + 
7045
		"java.lang.InterruptedException\n" +
7046
		"java.lang.Object\n" + 
7046
		"java.lang.Object\n" +
7047
		"java.lang.RuntimeException\n" + 
7047
		"java.lang.RuntimeException\n" +
7048
		"java.lang.String\n" + 
7048
		"java.lang.String\n" +
7049
		"java.lang.Throwable",
7049
		"java.lang.Throwable",
7050
		requestor);
7050
		requestor);
7051
}
7051
}
Lines 7058-7067 Link Here
7058
	resultCollector.showRule = true;
7058
	resultCollector.showRule = true;
7059
	workingCopies = new ICompilationUnit[1];
7059
	workingCopies = new ICompilationUnit[1];
7060
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b156177/Test.java",
7060
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b156177/Test.java",
7061
		"package b156177;\n" + 
7061
		"package b156177;\n" +
7062
		"interface B156177_I {}\n" + 
7062
		"interface B156177_I {}\n" +
7063
		"enum B156177_E {}\n" + 
7063
		"enum B156177_E {}\n" +
7064
		"@interface B156177_A {}\n" + 
7064
		"@interface B156177_A {}\n" +
7065
		"public class B156177 {}\n"
7065
		"public class B156177 {}\n"
7066
	);
7066
	);
7067
	TypeNameRequestor requestor =  new SearchTests.SearchTypeNameRequestor();
7067
	TypeNameRequestor requestor =  new SearchTests.SearchTypeNameRequestor();
Lines 7078-7084 Link Here
7078
	);
7078
	);
7079
	assertSearchResults(
7079
	assertSearchResults(
7080
		"Unexpected all type names",
7080
		"Unexpected all type names",
7081
		"b156177.B156177_A\n" + 
7081
		"b156177.B156177_A\n" +
7082
		"b156177.B156177_I",
7082
		"b156177.B156177_I",
7083
		requestor);
7083
		requestor);
7084
}
7084
}
Lines 7091-7160 Link Here
7091
	resultCollector.showRule = true;
7091
	resultCollector.showRule = true;
7092
	workingCopies = new ICompilationUnit[1];
7092
	workingCopies = new ICompilationUnit[1];
7093
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/Test.java",
7093
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/Test.java",
7094
		"package pack;\n" + 
7094
		"package pack;\n" +
7095
		"public class Test {\n" + 
7095
		"public class Test {\n" +
7096
		"	void noMatch(Y y) {\n" + 
7096
		"	void noMatch(Y y) {\n" +
7097
		"		y.toString();\n" + 
7097
		"		y.toString();\n" +
7098
		"		toString();\n" + 
7098
		"		toString();\n" +
7099
		"	}\n" + 
7099
		"	}\n" +
7100
		"	void validMatches(X x) {\n" + 
7100
		"	void validMatches(X x) {\n" +
7101
		"		x.toString();\n" + 
7101
		"		x.toString();\n" +
7102
		"	}\n" + 
7102
		"	}\n" +
7103
		"	void superInvocationMatches(Object o) {\n" + 
7103
		"	void superInvocationMatches(Object o) {\n" +
7104
		"		o.toString();\n" + 
7104
		"		o.toString();\n" +
7105
		"	}\n" + 
7105
		"	}\n" +
7106
		"	void interfaceMatches(I i) {\n" + 
7106
		"	void interfaceMatches(I i) {\n" +
7107
		"		i.toString();\n" + 
7107
		"		i.toString();\n" +
7108
		"	}\n" + 
7108
		"	}\n" +
7109
		"	void subtypeMatches(Sub s) {\n" + 
7109
		"	void subtypeMatches(Sub s) {\n" +
7110
		"		s.toString();\n" + 
7110
		"		s.toString();\n" +
7111
		"	}\n" + 
7111
		"	}\n" +
7112
		"}\n" +
7112
		"}\n" +
7113
		"interface I {}\n" +
7113
		"interface I {}\n" +
7114
		"class X {\n" + 
7114
		"class X {\n" +
7115
		"	public String toString() {\n" + 
7115
		"	public String toString() {\n" +
7116
		"		return \"X\";\n" + 
7116
		"		return \"X\";\n" +
7117
		"	}\n" + 
7117
		"	}\n" +
7118
		"}\n" +
7118
		"}\n" +
7119
		"class Sub extends X {}\n" +
7119
		"class Sub extends X {}\n" +
7120
		"class Y {\n" + 
7120
		"class Y {\n" +
7121
		"	public String toString() {\n" + 
7121
		"	public String toString() {\n" +
7122
		"		return \"Y\";\n" + 
7122
		"		return \"Y\";\n" +
7123
		"	}\n" + 
7123
		"	}\n" +
7124
		"}\n"
7124
		"}\n"
7125
	);
7125
	);
7126
	IMethod method = workingCopies[0].getType("X").getMethod("toString", new String[0]);
7126
	IMethod method = workingCopies[0].getType("X").getMethod("toString", new String[0]);
7127
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7127
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7128
	search(method, REFERENCES);
7128
	search(method, REFERENCES);
7129
	assertSearchResults(
7129
	assertSearchResults(
7130
		"src/pack/Test.java void pack.Test.validMatches(X) [toString()] EXACT_MATCH\n" + 
7130
		"src/pack/Test.java void pack.Test.validMatches(X) [toString()] EXACT_MATCH\n" +
7131
		"src/pack/Test.java void pack.Test.superInvocationMatches(Object) [toString()] EXACT_MATCH SUPER INVOCATION\n" + 
7131
		"src/pack/Test.java void pack.Test.superInvocationMatches(Object) [toString()] EXACT_MATCH SUPER INVOCATION\n" +
7132
		"src/pack/Test.java void pack.Test.subtypeMatches(Sub) [toString()] EXACT_MATCH"
7132
		"src/pack/Test.java void pack.Test.subtypeMatches(Sub) [toString()] EXACT_MATCH"
7133
	);
7133
	);
7134
}
7134
}
7135
private void setUpBug156491() throws CoreException {
7135
private void setUpBug156491() throws CoreException {
7136
	workingCopies = new ICompilationUnit[1];
7136
	workingCopies = new ICompilationUnit[1];
7137
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/other/Test.java",
7137
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/other/Test.java",
7138
		"package other;\n" + 
7138
		"package other;\n" +
7139
		"public class Test {\n" + 
7139
		"public class Test {\n" +
7140
		"	void testInterface(I i) {\n" + 
7140
		"	void testInterface(I i) {\n" +
7141
		"		i.test();\n" + 
7141
		"		i.test();\n" +
7142
		"	}\n" + 
7142
		"	}\n" +
7143
		"	void testSuperInvocation(L1 l) {\n" + 
7143
		"	void testSuperInvocation(L1 l) {\n" +
7144
		"		l.test();\n" + 
7144
		"		l.test();\n" +
7145
		"	}\n" + 
7145
		"	}\n" +
7146
		"	void testInvocation(L2 l) {\n" + 
7146
		"	void testInvocation(L2 l) {\n" +
7147
		"		l.test();\n" + 
7147
		"		l.test();\n" +
7148
		"	}\n" + 
7148
		"	}\n" +
7149
		"}\n" + 
7149
		"}\n" +
7150
		"class L1 implements I {\n" + 
7150
		"class L1 implements I {\n" +
7151
		"	public void test() {}\n" + 
7151
		"	public void test() {}\n" +
7152
		"}\n" + 
7152
		"}\n" +
7153
		"interface I {\n" + 
7153
		"interface I {\n" +
7154
		"	void test();\n" + 
7154
		"	void test();\n" +
7155
		"}\n" + 
7155
		"}\n" +
7156
		"class L2 extends L1 {\n" + 
7156
		"class L2 extends L1 {\n" +
7157
		"	public void test() {}\n" + 
7157
		"	public void test() {}\n" +
7158
		"}"
7158
		"}"
7159
	);
7159
	);
7160
}
7160
}
Lines 7165-7172 Link Here
7165
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7165
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7166
	search(method, REFERENCES);
7166
	search(method, REFERENCES);
7167
	assertSearchResults(
7167
	assertSearchResults(
7168
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" + 
7168
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" +
7169
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH SUPER INVOCATION\n" + 
7169
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH SUPER INVOCATION\n" +
7170
		"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
7170
		"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
7171
	);
7171
	);
7172
}
7172
}
Lines 7177-7183 Link Here
7177
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7177
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7178
	search(method, REFERENCES);
7178
	search(method, REFERENCES);
7179
	assertSearchResults(
7179
	assertSearchResults(
7180
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" + 
7180
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" +
7181
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH"
7181
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH"
7182
		// since bug 160301 fix, subclass overridden method calls are not reported
7182
		// since bug 160301 fix, subclass overridden method calls are not reported
7183
		//"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
7183
		//"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
Lines 7192-7215 Link Here
7192
	resultCollector.showRule = true;
7192
	resultCollector.showRule = true;
7193
	workingCopies = new ICompilationUnit[1];
7193
	workingCopies = new ICompilationUnit[1];
7194
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7194
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7195
		"public class Test {\n" + 
7195
		"public class Test {\n" +
7196
		"	class A {\n" + 
7196
		"	class A {\n" +
7197
		"		void foo() {}\n" + 
7197
		"		void foo() {}\n" +
7198
		"		void bar() {\n" + 
7198
		"		void bar() {\n" +
7199
		"			foo();\n" + 
7199
		"			foo();\n" +
7200
		"		}\n" + 
7200
		"		}\n" +
7201
		"	}\n" + 
7201
		"	}\n" +
7202
		"	class B extends A {\n" + 
7202
		"	class B extends A {\n" +
7203
		"		void foo() {}\n" + 
7203
		"		void foo() {}\n" +
7204
		"		void bar() {\n" + 
7204
		"		void bar() {\n" +
7205
		"			foo();\n" + 
7205
		"			foo();\n" +
7206
		"		}\n" + 
7206
		"		}\n" +
7207
		"	}\n" + 
7207
		"	}\n" +
7208
		"	class C extends B {\n" + 
7208
		"	class C extends B {\n" +
7209
		"		void method() {\n" + 
7209
		"		void method() {\n" +
7210
		"			foo();\n" + 
7210
		"			foo();\n" +
7211
		"		}\n" + 
7211
		"		}\n" +
7212
		"	}\n" + 
7212
		"	}\n" +
7213
		"}"
7213
		"}"
7214
	);
7214
	);
7215
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
7215
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
Lines 7222-7256 Link Here
7222
	resultCollector.showRule = true;
7222
	resultCollector.showRule = true;
7223
	workingCopies = new ICompilationUnit[1];
7223
	workingCopies = new ICompilationUnit[1];
7224
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
7224
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
7225
		"package test;\n" + 
7225
		"package test;\n" +
7226
		"public class Test {\n" + 
7226
		"public class Test {\n" +
7227
		"	class A {\n" + 
7227
		"	class A {\n" +
7228
		"		void foo() {}\n" + 
7228
		"		void foo() {}\n" +
7229
		"	}\n" + 
7229
		"	}\n" +
7230
		"	class B extends A {}\n" + 
7230
		"	class B extends A {}\n" +
7231
		"	class C extends B {\n" + 
7231
		"	class C extends B {\n" +
7232
		"		void foo() {}\n" + 
7232
		"		void foo() {}\n" +
7233
		"	}\n" + 
7233
		"	}\n" +
7234
		"	class D extends C {}\n" + 
7234
		"	class D extends C {}\n" +
7235
		"	void a() {\n" + 
7235
		"	void a() {\n" +
7236
		"		new A().foo();\n" + 
7236
		"		new A().foo();\n" +
7237
		"	}\n" + 
7237
		"	}\n" +
7238
		"	void b() {\n" + 
7238
		"	void b() {\n" +
7239
		"		new B().foo();\n" + 
7239
		"		new B().foo();\n" +
7240
		"	}\n" + 
7240
		"	}\n" +
7241
		"	void c() {\n" + 
7241
		"	void c() {\n" +
7242
		"		new C().foo();\n" + 
7242
		"		new C().foo();\n" +
7243
		"	}\n" + 
7243
		"	}\n" +
7244
		"	void d() {\n" + 
7244
		"	void d() {\n" +
7245
		"		new D().foo();\n" + 
7245
		"		new D().foo();\n" +
7246
		"	}\n" + 
7246
		"	}\n" +
7247
		"	\n" + 
7247
		"	\n" +
7248
		"}"
7248
		"}"
7249
	);
7249
	);
7250
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
7250
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
7251
	search(method, REFERENCES);
7251
	search(method, REFERENCES);
7252
	assertSearchResults(
7252
	assertSearchResults(
7253
		"src/test/Test.java void test.Test.a() [foo()] EXACT_MATCH\n" + 
7253
		"src/test/Test.java void test.Test.a() [foo()] EXACT_MATCH\n" +
7254
		"src/test/Test.java void test.Test.b() [foo()] EXACT_MATCH"
7254
		"src/test/Test.java void test.Test.b() [foo()] EXACT_MATCH"
7255
	);
7255
	);
7256
}
7256
}
Lines 7258-7310 Link Here
7258
	resultCollector.showRule = true;
7258
	resultCollector.showRule = true;
7259
	workingCopies = new ICompilationUnit[1];
7259
	workingCopies = new ICompilationUnit[1];
7260
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7260
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7261
		"public class Test {\n" + 
7261
		"public class Test {\n" +
7262
		"	interface I {\n" + 
7262
		"	interface I {\n" +
7263
		"		void foo();\n" + 
7263
		"		void foo();\n" +
7264
		"	}\n" + 
7264
		"	}\n" +
7265
		"	class A1 implements I {\n" + 
7265
		"	class A1 implements I {\n" +
7266
		"		public void foo() {}\n" + 
7266
		"		public void foo() {}\n" +
7267
		"		void a1() {\n" + 
7267
		"		void a1() {\n" +
7268
		"			foo();\n" + 
7268
		"			foo();\n" +
7269
		"		}\n" + 
7269
		"		}\n" +
7270
		"	}\n" + 
7270
		"	}\n" +
7271
		"	class B1 extends A1 {\n" + 
7271
		"	class B1 extends A1 {\n" +
7272
		"		void b1() {\n" + 
7272
		"		void b1() {\n" +
7273
		"			foo();\n" + 
7273
		"			foo();\n" +
7274
		"		}\n" + 
7274
		"		}\n" +
7275
		"	}\n" + 
7275
		"	}\n" +
7276
		"	class C1 extends B1 {\n" + 
7276
		"	class C1 extends B1 {\n" +
7277
		"		public void foo() {}\n" + 
7277
		"		public void foo() {}\n" +
7278
		"		void c1() {\n" + 
7278
		"		void c1() {\n" +
7279
		"			foo();\n" + 
7279
		"			foo();\n" +
7280
		"		}\n" + 
7280
		"		}\n" +
7281
		"	}\n" + 
7281
		"	}\n" +
7282
		"	abstract class A2 implements I {\n" + 
7282
		"	abstract class A2 implements I {\n" +
7283
		"		void a2() {\n" + 
7283
		"		void a2() {\n" +
7284
		"			foo();\n" + 
7284
		"			foo();\n" +
7285
		"		}\n" + 
7285
		"		}\n" +
7286
		"	}\n" + 
7286
		"	}\n" +
7287
		"	class B2 extends A2 {\n" + 
7287
		"	class B2 extends A2 {\n" +
7288
		"		public void foo() {}\n" + 
7288
		"		public void foo() {}\n" +
7289
		"		void b2() {\n" + 
7289
		"		void b2() {\n" +
7290
		"			foo();\n" + 
7290
		"			foo();\n" +
7291
		"		}\n" + 
7291
		"		}\n" +
7292
		"	}\n" + 
7292
		"	}\n" +
7293
		"	class A3 implements I {\n" + 
7293
		"	class A3 implements I {\n" +
7294
		"		public void foo() {}\n" + 
7294
		"		public void foo() {}\n" +
7295
		"		void a3() {\n" + 
7295
		"		void a3() {\n" +
7296
		"			foo();\n" + 
7296
		"			foo();\n" +
7297
		"		}\n" + 
7297
		"		}\n" +
7298
		"	}\n" + 
7298
		"	}\n" +
7299
		"}"
7299
		"}"
7300
	);
7300
	);
7301
	IMethod method = workingCopies[0].getType("Test").getType("I").getMethod("foo", new String[0]);
7301
	IMethod method = workingCopies[0].getType("Test").getType("I").getMethod("foo", new String[0]);
7302
	search(method, REFERENCES);
7302
	search(method, REFERENCES);
7303
	assertSearchResults(
7303
	assertSearchResults(
7304
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" + 
7304
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" +
7305
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" + 
7305
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" +
7306
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" + 
7306
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" +
7307
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH\n" + 
7307
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH\n" +
7308
		"src/Test.java void Test$A3.a3() [foo()] EXACT_MATCH"
7308
		"src/Test.java void Test$A3.a3() [foo()] EXACT_MATCH"
7309
	);
7309
	);
7310
}
7310
}
Lines 7312-7357 Link Here
7312
	resultCollector.showRule = true;
7312
	resultCollector.showRule = true;
7313
	workingCopies = new ICompilationUnit[1];
7313
	workingCopies = new ICompilationUnit[1];
7314
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7314
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7315
		"public class Test {\n" + 
7315
		"public class Test {\n" +
7316
		"	abstract class Abstract {\n" + 
7316
		"	abstract class Abstract {\n" +
7317
		"		abstract void foo();\n" + 
7317
		"		abstract void foo();\n" +
7318
		"	}\n" + 
7318
		"	}\n" +
7319
		"	class A1 extends Abstract {\n" + 
7319
		"	class A1 extends Abstract {\n" +
7320
		"		public void foo() {}\n" + 
7320
		"		public void foo() {}\n" +
7321
		"		void a1() {\n" + 
7321
		"		void a1() {\n" +
7322
		"			foo(); // valid match as A1.foo() is the first override in sub-class\n" + 
7322
		"			foo(); // valid match as A1.foo() is the first override in sub-class\n" +
7323
		"		}\n" + 
7323
		"		}\n" +
7324
		"	}\n" + 
7324
		"	}\n" +
7325
		"	class B1 extends A1 {\n" + 
7325
		"	class B1 extends A1 {\n" +
7326
		"		void b1() {\n" + 
7326
		"		void b1() {\n" +
7327
		"			foo(); // valid match as B1 does not override A.foo()\n" + 
7327
		"			foo(); // valid match as B1 does not override A.foo()\n" +
7328
		"		}\n" + 
7328
		"		}\n" +
7329
		"	}\n" + 
7329
		"	}\n" +
7330
		"	class C1 extends B1 {\n" + 
7330
		"	class C1 extends B1 {\n" +
7331
		"		public void foo() {}\n" + 
7331
		"		public void foo() {}\n" +
7332
		"		void c1() {\n" + 
7332
		"		void c1() {\n" +
7333
		"			foo(); // invalid match as C1 does override A.foo()\n" + 
7333
		"			foo(); // invalid match as C1 does override A.foo()\n" +
7334
		"		}\n" + 
7334
		"		}\n" +
7335
		"	}\n" + 
7335
		"	}\n" +
7336
		"	abstract class A2 extends Abstract {\n" + 
7336
		"	abstract class A2 extends Abstract {\n" +
7337
		"		void a2() {\n" + 
7337
		"		void a2() {\n" +
7338
		"			foo(); // valid match as A2 does not override Abstract.foo()\n" + 
7338
		"			foo(); // valid match as A2 does not override Abstract.foo()\n" +
7339
		"		}\n" + 
7339
		"		}\n" +
7340
		"	}\n" + 
7340
		"	}\n" +
7341
		"	class B2 extends A2 {\n" + 
7341
		"	class B2 extends A2 {\n" +
7342
		"		public void foo() {}\n" + 
7342
		"		public void foo() {}\n" +
7343
		"		void b2() {\n" + 
7343
		"		void b2() {\n" +
7344
		"			foo(); // valid match as B2.foo() is the first override in sub-class\n" + 
7344
		"			foo(); // valid match as B2.foo() is the first override in sub-class\n" +
7345
		"		}\n" + 
7345
		"		}\n" +
7346
		"	}\n" + 
7346
		"	}\n" +
7347
		"}"
7347
		"}"
7348
	);
7348
	);
7349
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7349
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7350
	search(method, REFERENCES);
7350
	search(method, REFERENCES);
7351
	assertSearchResults(
7351
	assertSearchResults(
7352
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" + 
7352
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" +
7353
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" + 
7353
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" +
7354
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" + 
7354
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" +
7355
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH"
7355
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH"
7356
	);
7356
	);
7357
}
7357
}
Lines 7359-7392 Link Here
7359
	resultCollector.showRule = true;
7359
	resultCollector.showRule = true;
7360
	workingCopies = new ICompilationUnit[1];
7360
	workingCopies = new ICompilationUnit[1];
7361
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7361
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7362
		"public class Test {\n" + 
7362
		"public class Test {\n" +
7363
		"	abstract class Abstract {\n" + 
7363
		"	abstract class Abstract {\n" +
7364
		"		public abstract void foo();\n" + 
7364
		"		public abstract void foo();\n" +
7365
		"	}\n" + 
7365
		"	}\n" +
7366
		"	abstract class A extends Abstract {\n" + 
7366
		"	abstract class A extends Abstract {\n" +
7367
		"		public abstract void foo();\n" + 
7367
		"		public abstract void foo();\n" +
7368
		"		void a() {\n" + 
7368
		"		void a() {\n" +
7369
		"			foo(); // valid match as A is abstract => does not override Abstract.foo()\n" + 
7369
		"			foo(); // valid match as A is abstract => does not override Abstract.foo()\n" +
7370
		"		}\n" + 
7370
		"		}\n" +
7371
		"	}\n" + 
7371
		"	}\n" +
7372
		"	class B extends A {\n" + 
7372
		"	class B extends A {\n" +
7373
		"		public void foo() {}\n" + 
7373
		"		public void foo() {}\n" +
7374
		"		void b() {\n" + 
7374
		"		void b() {\n" +
7375
		"			foo(); // valid match as B.foo() is the first override in sub-class\n" + 
7375
		"			foo(); // valid match as B.foo() is the first override in sub-class\n" +
7376
		"		}\n" + 
7376
		"		}\n" +
7377
		"	}\n" + 
7377
		"	}\n" +
7378
		"	class C extends B {\n" + 
7378
		"	class C extends B {\n" +
7379
		"		public void foo() {}\n" + 
7379
		"		public void foo() {}\n" +
7380
		"		void c() {\n" + 
7380
		"		void c() {\n" +
7381
		"			foo(); // invalid match as C.foo() overrides Abstract.foo() \n" + 
7381
		"			foo(); // invalid match as C.foo() overrides Abstract.foo() \n" +
7382
		"		}\n" + 
7382
		"		}\n" +
7383
		"	}\n" + 
7383
		"	}\n" +
7384
		"}"
7384
		"}"
7385
	);
7385
	);
7386
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7386
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7387
	search(method, REFERENCES);
7387
	search(method, REFERENCES);
7388
	assertSearchResults(
7388
	assertSearchResults(
7389
		"src/Test.java void Test$A.a() [foo()] EXACT_MATCH\n" + 
7389
		"src/Test.java void Test$A.a() [foo()] EXACT_MATCH\n" +
7390
		"src/Test.java void Test$B.b() [foo()] EXACT_MATCH"
7390
		"src/Test.java void Test$B.b() [foo()] EXACT_MATCH"
7391
	);
7391
	);
7392
}
7392
}
Lines 7394-7421 Link Here
7394
	resultCollector.showRule = true;
7394
	resultCollector.showRule = true;
7395
	workingCopies = new ICompilationUnit[1];
7395
	workingCopies = new ICompilationUnit[1];
7396
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7396
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7397
		"public class Test {\n" + 
7397
		"public class Test {\n" +
7398
		"	abstract class Abstract {\n" + 
7398
		"	abstract class Abstract {\n" +
7399
		"		public abstract void foo();\n" + 
7399
		"		public abstract void foo();\n" +
7400
		"	}\n" + 
7400
		"	}\n" +
7401
		"	class A extends Abstract {\n" + 
7401
		"	class A extends Abstract {\n" +
7402
		"		public void foo() {}\n" + 
7402
		"		public void foo() {}\n" +
7403
		"		void a() {\n" + 
7403
		"		void a() {\n" +
7404
		"			foo(); // valid match as A.foo() is the first override in sub-class\n" + 
7404
		"			foo(); // valid match as A.foo() is the first override in sub-class\n" +
7405
		"		}\n" + 
7405
		"		}\n" +
7406
		"	}\n" + 
7406
		"	}\n" +
7407
		"	abstract class B extends A {\n" + 
7407
		"	abstract class B extends A {\n" +
7408
		"		public abstract void foo();\n" + 
7408
		"		public abstract void foo();\n" +
7409
		"		void b() {\n" + 
7409
		"		void b() {\n" +
7410
		"			foo(); // invalid match as B.foo() is hidden by the override A.foo()\n" + 
7410
		"			foo(); // invalid match as B.foo() is hidden by the override A.foo()\n" +
7411
		"		}\n" + 
7411
		"		}\n" +
7412
		"	}\n" + 
7412
		"	}\n" +
7413
		"	class C extends B {\n" + 
7413
		"	class C extends B {\n" +
7414
		"		public void foo() {}\n" + 
7414
		"		public void foo() {}\n" +
7415
		"		void c() {\n" + 
7415
		"		void c() {\n" +
7416
		"			foo(); // invalid match as C.foo() overrides A.foo()\n" + 
7416
		"			foo(); // invalid match as C.foo() overrides A.foo()\n" +
7417
		"		}\n" + 
7417
		"		}\n" +
7418
		"	}\n" + 
7418
		"	}\n" +
7419
		"}"
7419
		"}"
7420
	);
7420
	);
7421
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7421
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
Lines 7609-7626 Link Here
7609
		null);
7609
		null);
7610
	// Should have same types with these 2 searches
7610
	// Should have same types with these 2 searches
7611
	assertSearchResults("Wrong types found!",
7611
	assertSearchResults("Wrong types found!",
7612
		"java.lang.CharSequence\n" + 
7612
		"java.lang.CharSequence\n" +
7613
		"java.lang.Class\n" + 
7613
		"java.lang.Class\n" +
7614
		"java.lang.CloneNotSupportedException\n" + 
7614
		"java.lang.CloneNotSupportedException\n" +
7615
		"java.lang.Comparable\n" + 
7615
		"java.lang.Comparable\n" +
7616
		"java.lang.Enum\n" + 
7616
		"java.lang.Enum\n" +
7617
		"java.lang.Error\n" + 
7617
		"java.lang.Error\n" +
7618
		"java.lang.Exception\n" + 
7618
		"java.lang.Exception\n" +
7619
		"java.lang.IllegalMonitorStateException\n" + 
7619
		"java.lang.IllegalMonitorStateException\n" +
7620
		"java.lang.InterruptedException\n" + 
7620
		"java.lang.InterruptedException\n" +
7621
		"java.lang.Object\n" + 
7621
		"java.lang.Object\n" +
7622
		"java.lang.RuntimeException\n" + 
7622
		"java.lang.RuntimeException\n" +
7623
		"java.lang.String\n" + 
7623
		"java.lang.String\n" +
7624
		"java.lang.Throwable",
7624
		"java.lang.Throwable",
7625
		requestor
7625
		requestor
7626
	);
7626
	);
Lines 7677-7684 Link Here
7677
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
7677
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
7678
		null);
7678
		null);
7679
	assertSearchResults("Wrong types found!",
7679
	assertSearchResults("Wrong types found!",
7680
		"xy.BE_124645\n" + 
7680
		"xy.BE_124645\n" +
7681
		"xy.BX_124645\n" + 
7681
		"xy.BX_124645\n" +
7682
		"xy.BY_124645",
7682
		"xy.BY_124645",
7683
		requestor
7683
		requestor
7684
	);
7684
	);
Lines 7735-7746 Link Here
7735
private void setUpBug164121() throws CoreException {
7735
private void setUpBug164121() throws CoreException {
7736
	workingCopies = new ICompilationUnit[1];
7736
	workingCopies = new ICompilationUnit[1];
7737
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/A.java",
7737
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/A.java",
7738
		"class A {\n" + 
7738
		"class A {\n" +
7739
		"     int x(int param) {\n" + 
7739
		"     int x(int param) {\n" +
7740
		"         param = 2 + 2;\n" + 
7740
		"         param = 2 + 2;\n" +
7741
		"         int x = param + 2;\n" + 
7741
		"         int x = param + 2;\n" +
7742
		"         return param - x;\n" + 
7742
		"         return param - x;\n" +
7743
		"     }\n" + 
7743
		"     }\n" +
7744
		"}\n"
7744
		"}\n"
7745
	);
7745
	);
7746
}
7746
}
Lines 7759-7767 Link Here
7759
	ILocalVariable param = getLocalVariable(this.workingCopies[0], "param", "param");
7759
	ILocalVariable param = getLocalVariable(this.workingCopies[0], "param", "param");
7760
	search(param, ALL_OCCURRENCES);
7760
	search(param, ALL_OCCURRENCES);
7761
	assertSearchResults(
7761
	assertSearchResults(
7762
		"src/A.java int A.x(int).param [param] EXACT_MATCH\n" + 
7762
		"src/A.java int A.x(int).param [param] EXACT_MATCH\n" +
7763
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" + 
7763
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" +
7764
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" + 
7764
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" +
7765
		"src/A.java int A.x(int) [param] EXACT_MATCH"
7765
		"src/A.java int A.x(int) [param] EXACT_MATCH"
7766
	);
7766
	);
7767
}
7767
}
Lines 7783-7789 Link Here
7783
	collector.showAccuracy = true;
7783
	collector.showAccuracy = true;
7784
	search(type, REFERENCES, getJavaSearchScopeBugs(), collector);
7784
	search(type, REFERENCES, getJavaSearchScopeBugs(), collector);
7785
	assertSearchResults(
7785
	assertSearchResults(
7786
		"lib/b164791.jar test.<anonymous> EXACT_MATCH\n" + 
7786
		"lib/b164791.jar test.<anonymous> EXACT_MATCH\n" +
7787
		"lib/b164791.jar test.<anonymous> EXACT_MATCH",
7787
		"lib/b164791.jar test.<anonymous> EXACT_MATCH",
7788
		collector
7788
		collector
7789
	);
7789
	);
Lines 7797-7803 Link Here
7797
public void testBug166348() throws CoreException {
7797
public void testBug166348() throws CoreException {
7798
	search("Test166348", TYPE, DECLARATIONS);
7798
	search("Test166348", TYPE, DECLARATIONS);
7799
	assertSearchResults(
7799
	assertSearchResults(
7800
		"lib/b166348.jar pack.Test166348 [No source] EXACT_MATCH\n" + 
7800
		"lib/b166348.jar pack.Test166348 [No source] EXACT_MATCH\n" +
7801
		"lib/b166348.jar test.Test166348 [No source] EXACT_MATCH"
7801
		"lib/b166348.jar test.Test166348 [No source] EXACT_MATCH"
7802
	);
7802
	);
7803
}
7803
}
Lines 7888-7902 Link Here
7888
		createJavaProject("P2", new String[] {""}, new String[] {"JCL_LIB", "/P1/bin"}, "");
7888
		createJavaProject("P2", new String[] {""}, new String[] {"JCL_LIB", "/P1/bin"}, "");
7889
		workingCopies = new ICompilationUnit[2];
7889
		workingCopies = new ICompilationUnit[2];
7890
		workingCopies[0] = getWorkingCopy("/P2/Test1.java",
7890
		workingCopies[0] = getWorkingCopy("/P2/Test1.java",
7891
			"public class Test1 {\n" + 
7891
			"public class Test1 {\n" +
7892
			"  void bar() {\n" + 
7892
			"  void bar() {\n" +
7893
			"    p.Y.foo();\n" + 
7893
			"    p.Y.foo();\n" +
7894
			"    new p.X();\n" + // cause AbortCompilation here
7894
			"    new p.X();\n" + // cause AbortCompilation here
7895
			"  }\n" + 
7895
			"  }\n" +
7896
			"}"
7896
			"}"
7897
		);
7897
		);
7898
		workingCopies[1] = getWorkingCopy("/P2/Test2.java",
7898
		workingCopies[1] = getWorkingCopy("/P2/Test2.java",
7899
			"public class Test2 {\n" + 
7899
			"public class Test2 {\n" +
7900
			"  void foo() {}\n" +
7900
			"  void foo() {}\n" +
7901
			"  void bar() {\n" +
7901
			"  void bar() {\n" +
7902
			"    foo();\n" +
7902
			"    foo();\n" +
Lines 7914-7919 Link Here
7914
}
7914
}
7915
7915
7916
/**
7916
/**
7917
 * @bug 178596: [search] Search for method references does not find references to interface method
7918
 * @test Ensure that searching method reference finds the interface method reference
7919
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=178596"
7920
 */
7921
public void testBug178596() throws CoreException {
7922
	workingCopies = new ICompilationUnit[5];
7923
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/ClassA.java",
7924
		"public class ClassA implements InterfaceA {\n" +
7925
		"    public void setValue(int aValue) {\n" +
7926
		"    }\n" +
7927
		"}\n"
7928
	);
7929
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/ClassB.java",
7930
		"public class ClassB extends ClassA implements InterfaceB {}\n"
7931
	);
7932
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/InterfaceA.java",
7933
		"public interface InterfaceA {\n" +
7934
		"    public void setValue(int aValue);\n" +
7935
		"}\n"
7936
	);
7937
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/InterfaceB.java",
7938
		"public interface InterfaceB extends InterfaceA {}\n"
7939
	);
7940
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/Main.java",
7941
		"public class Main {\n" +
7942
		"    public static void main(String[] args) {\n" +
7943
		"        new Main().run();\n" +
7944
		"    }\n" +
7945
		"    private void run() {\n" +
7946
		"        InterfaceB anB = new ClassB();\n" +
7947
		"        anB.setValue(123);\n" +
7948
		"    }\n" +
7949
		"}\n"
7950
	);
7951
	JavaSearchResultCollector testCollector = new JavaSearchResultCollector() {
7952
		public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
7953
	        super.acceptSearchMatch(searchMatch);
7954
	        assertTrue("Method reference match should be super invocation one!", ((MethodReferenceMatch)searchMatch).isSuperInvocation());
7955
        }
7956
7957
	};
7958
	testCollector.showAccuracy = true;
7959
	IMethod method = workingCopies[0].getType("ClassA").getMethod("setValue", new String[] { "I" });
7960
	search(method, REFERENCES, getJavaSearchScope(), testCollector);
7961
	assertSearchResults(
7962
		"src/Main.java void Main.run() [setValue(123)] EXACT_MATCH",
7963
		testCollector
7964
	);
7965
}
7966
7967
/**
7917
 * @bug 185452 [search] for all packages seems hung
7968
 * @bug 185452 [search] for all packages seems hung
7918
 * @test Ensure that all package declarations are found only once
7969
 * @test Ensure that all package declarations are found only once
7919
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=185452"
7970
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=185452"
Lines 7921-8013 Link Here
7921
public void testBug185452() throws CoreException {
7972
public void testBug185452() throws CoreException {
7922
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
7973
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
7923
	search(
7974
	search(
7924
		"*", 
7975
		"*",
7925
		PACKAGE,
7976
		PACKAGE,
7926
		DECLARATIONS, 
7977
		DECLARATIONS,
7927
		SearchEngine.createWorkspaceScope(), 
7978
		SearchEngine.createWorkspaceScope(),
7928
		packageCollector);
7979
		packageCollector);
7929
	assertSearchResults(
7980
	assertSearchResults(
7930
		""+ getExternalJCLPathString("1.5") + " \n" + 
7981
		""+ getExternalJCLPathString("1.5") + " \n" +
7931
		""+ getExternalJCLPathString("1.5") + " java\n" + 
7982
		""+ getExternalJCLPathString("1.5") + " java\n" +
7932
		""+ getExternalJCLPathString("1.5") + " java.io\n" + 
7983
		""+ getExternalJCLPathString("1.5") + " java.io\n" +
7933
		""+ getExternalJCLPathString("1.5") + " java.lang\n" + 
7984
		""+ getExternalJCLPathString("1.5") + " java.lang\n" +
7934
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation\n" + 
7985
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation\n" +
7935
		"lib \n" + 
7986
		"lib \n" +
7936
		"lib/JavaSearch15.jar  [No source]\n" + 
7987
		"lib/JavaSearch15.jar  [No source]\n" +
7937
		"lib/JavaSearch15.jar g1 [No source]\n" + 
7988
		"lib/JavaSearch15.jar g1 [No source]\n" +
7938
		"lib/JavaSearch15.jar g1.t [No source]\n" + 
7989
		"lib/JavaSearch15.jar g1.t [No source]\n" +
7939
		"lib/JavaSearch15.jar g1.t.s [No source]\n" + 
7990
		"lib/JavaSearch15.jar g1.t.s [No source]\n" +
7940
		"lib/JavaSearch15.jar g1.t.s.def [No source]\n" + 
7991
		"lib/JavaSearch15.jar g1.t.s.def [No source]\n" +
7941
		"lib/JavaSearch15.jar g5 [No source]\n" + 
7992
		"lib/JavaSearch15.jar g5 [No source]\n" +
7942
		"lib/JavaSearch15.jar g5.c [No source]\n" + 
7993
		"lib/JavaSearch15.jar g5.c [No source]\n" +
7943
		"lib/JavaSearch15.jar g5.c.def [No source]\n" + 
7994
		"lib/JavaSearch15.jar g5.c.def [No source]\n" +
7944
		"lib/JavaSearch15.jar g5.m [No source]\n" + 
7995
		"lib/JavaSearch15.jar g5.m [No source]\n" +
7945
		"lib/JavaSearch15.jar g5.m.def [No source]\n" + 
7996
		"lib/JavaSearch15.jar g5.m.def [No source]\n" +
7946
		"lib/b110422.jar  [No source]\n" + 
7997
		"lib/b110422.jar  [No source]\n" +
7947
		"lib/b110422.jar b110422 [No source]\n" + 
7998
		"lib/b110422.jar b110422 [No source]\n" +
7948
		"lib/b123679.jar  [No source]\n" + 
7999
		"lib/b123679.jar  [No source]\n" +
7949
		"lib/b123679.jar pack [No source]\n" + 
8000
		"lib/b123679.jar pack [No source]\n" +
7950
		"lib/b123679.jar test [No source]\n" + 
8001
		"lib/b123679.jar test [No source]\n" +
7951
		"lib/b124469.jar  [No source]\n" + 
8002
		"lib/b124469.jar  [No source]\n" +
7952
		"lib/b124469.jar pack [No source]\n" + 
8003
		"lib/b124469.jar pack [No source]\n" +
7953
		"lib/b124469.jar test [No source]\n" + 
8004
		"lib/b124469.jar test [No source]\n" +
7954
		"lib/b124645.jar  [No source]\n" + 
8005
		"lib/b124645.jar  [No source]\n" +
7955
		"lib/b124645.jar test [No source]\n" + 
8006
		"lib/b124645.jar test [No source]\n" +
7956
		"lib/b124645.jar xy [No source]\n" + 
8007
		"lib/b124645.jar xy [No source]\n" +
7957
		"lib/b125178.jar  [No source]\n" + 
8008
		"lib/b125178.jar  [No source]\n" +
7958
		"lib/b125178.jar pack [No source]\n" + 
8009
		"lib/b125178.jar pack [No source]\n" +
7959
		"lib/b125178.jar pack.age [No source]\n" + 
8010
		"lib/b125178.jar pack.age [No source]\n" +
7960
		"lib/b126330.jar  [No source]\n" + 
8011
		"lib/b126330.jar  [No source]\n" +
7961
		"lib/b128877.jar  [No source]\n" + 
8012
		"lib/b128877.jar  [No source]\n" +
7962
		"lib/b128877.jar pack [No source]\n" + 
8013
		"lib/b128877.jar pack [No source]\n" +
7963
		"lib/b137984.jar  [No source]\n" + 
8014
		"lib/b137984.jar  [No source]\n" +
7964
		"lib/b140156.jar  [No source]\n" + 
8015
		"lib/b140156.jar  [No source]\n" +
7965
		"lib/b164791.jar  [No source]\n" + 
8016
		"lib/b164791.jar  [No source]\n" +
7966
		"lib/b164791.jar pack [No source]\n" + 
8017
		"lib/b164791.jar pack [No source]\n" +
7967
		"lib/b164791.jar test [No source]\n" + 
8018
		"lib/b164791.jar test [No source]\n" +
7968
		"lib/b166348.jar  [No source]\n" + 
8019
		"lib/b166348.jar  [No source]\n" +
7969
		"lib/b166348.jar pack [No source]\n" + 
8020
		"lib/b166348.jar pack [No source]\n" +
7970
		"lib/b166348.jar test [No source]\n" + 
8021
		"lib/b166348.jar test [No source]\n" +
7971
		"lib/b86293.jar  [No source]\n" + 
8022
		"lib/b86293.jar  [No source]\n" +
7972
		"lib/b87627.jar  [No source]\n" + 
8023
		"lib/b87627.jar  [No source]\n" +
7973
		"lib/b87627.jar b87627 [No source]\n" + 
8024
		"lib/b87627.jar b87627 [No source]\n" +
7974
		"lib/b89848 b89848\n" + 
8025
		"lib/b89848 b89848\n" +
7975
		"lib/b95152.jar  [No source]\n" + 
8026
		"lib/b95152.jar  [No source]\n" +
7976
		"lib/b95152.jar b95152 [No source]\n" + 
8027
		"lib/b95152.jar b95152 [No source]\n" +
7977
		"lib/test75816.jar  [No source]\n" + 
8028
		"lib/test75816.jar  [No source]\n" +
7978
		"lib/test81556.jar  [No source]\n" + 
8029
		"lib/test81556.jar  [No source]\n" +
7979
		"lib/test81556.jar b81556 [No source]\n" + 
8030
		"lib/test81556.jar b81556 [No source]\n" +
7980
		"lib/test81556.jar b81556.b [No source]\n" + 
8031
		"lib/test81556.jar b81556.b [No source]\n" +
7981
		"src \n" + 
8032
		"src \n" +
7982
		"src/b108088 b108088\n" + 
8033
		"src/b108088 b108088\n" +
7983
		"src/b123679 b123679\n" + 
8034
		"src/b123679 b123679\n" +
7984
		"src/b123679/pack b123679.pack\n" + 
8035
		"src/b123679/pack b123679.pack\n" +
7985
		"src/b123679/test b123679.test\n" + 
8036
		"src/b123679/test b123679.test\n" +
7986
		"src/b124645 b124645\n" + 
8037
		"src/b124645 b124645\n" +
7987
		"src/b124645/test b124645.test\n" + 
8038
		"src/b124645/test b124645.test\n" +
7988
		"src/b124645/xy b124645.xy\n" + 
8039
		"src/b124645/xy b124645.xy\n" +
7989
		"src/b127628 b127628\n" + 
8040
		"src/b127628 b127628\n" +
7990
		"src/b137984 b137984\n" + 
8041
		"src/b137984 b137984\n" +
7991
		"src/b163984 b163984\n" + 
8042
		"src/b163984 b163984\n" +
7992
		"src/b81556 b81556\n" + 
8043
		"src/b81556 b81556\n" +
7993
		"src/b81556/a b81556.a\n" + 
8044
		"src/b81556/a b81556.a\n" +
7994
		"src/b86380 b86380\n" + 
8045
		"src/b86380 b86380\n" +
7995
		"src/b95794 b95794",
8046
		"src/b95794 b95794",
7996
		packageCollector);
8047
		packageCollector);
7997
}
8048
}
7998
8049
7999
/**
8050
/**
8000
 * @bug 194185 [search] for package declarations finds also subpackages
8051
 * @bug 194185 [search] for package declarations finds also subpackages
8001
 * @test Ensure that exact package is found when no 
8052
 * @test Ensure that exact package is found when no
8002
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=194185"
8053
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=194185"
8003
 */
8054
 */
8004
public void testBug194185() throws CoreException {
8055
public void testBug194185() throws CoreException {
8005
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
8056
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
8006
	search(
8057
	search(
8007
		"java", 
8058
		"java",
8008
		PACKAGE,
8059
		PACKAGE,
8009
		DECLARATIONS, 
8060
		DECLARATIONS,
8010
		SearchEngine.createWorkspaceScope(), 
8061
		SearchEngine.createWorkspaceScope(),
8011
		packageCollector);
8062
		packageCollector);
8012
	assertSearchResults(
8063
	assertSearchResults(
8013
		""+ getExternalJCLPathString("1.5") + " java",
8064
		""+ getExternalJCLPathString("1.5") + " java",
Lines 8016-8022 Link Here
8016
8067
8017
/**
8068
/**
8018
 * @bug 204652 "Open Type": ClassCastException in conjunction with a class folder
8069
 * @bug 204652 "Open Type": ClassCastException in conjunction with a class folder
8019
 * @test Ensure that no ClassCastException is thrown for a library folder with a jar like name 
8070
 * @test Ensure that no ClassCastException is thrown for a library folder with a jar like name
8020
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=204652"
8071
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=204652"
8021
 */
8072
 */
8022
public void testBug204652() throws CoreException {
8073
public void testBug204652() throws CoreException {
Lines 8044-8047 Link Here
8044
	}
8095
	}
8045
}
8096
}
8046
8097
8098
/**
8099
 * @bug 209054: [search] for references to method finds wrong interface call
8100
 * @test Ensure that searching method reference does not find wrong interface call
8101
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=209054"
8102
 */
8103
public void testBug209054() throws CoreException {
8104
	workingCopies = new ICompilationUnit[1];
8105
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/xy/Try.java",
8106
		"package xy;\n" +
8107
		"public class Try implements IReferenceUpdating {\n" +
8108
		"        IMovePolicy fInter;\n" +
8109
		"        boolean canDo() { // find references\n" +
8110
		"                return fInter.canDo(); // not a reference\n" +
8111
		"        }\n" +
8112
		"}\n" +
8113
		"interface IMovePolicy extends IReferenceUpdating {\n" +
8114
		"        boolean canDo();\n" +
8115
		"}\n" +
8116
		"interface IReferenceUpdating {}"
8117
	);
8118
	IMethod method = workingCopies[0].getType("Try").getMethod("canDo", new String[0]);
8119
	search(method, REFERENCES);
8120
	assertSearchResults("");
8121
}
8122
8047
}
8123
}
(-)search/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java (-14 / +48 lines)
Lines 635-655 Link Here
635
			if (method.declaringClass == null || this.allSuperDeclaringTypeNames == null) {
635
			if (method.declaringClass == null || this.allSuperDeclaringTypeNames == null) {
636
				declaringLevel = INACCURATE_MATCH;
636
				declaringLevel = INACCURATE_MATCH;
637
			} else {
637
			} else {
638
				char[][] compoundName = methodReceiverType.compoundName;
638
				if (resolveLevelAsSuperInvocation(methodReceiverType, method.parameters, false)) {
639
				for (int i = 0, max = this.allSuperDeclaringTypeNames.length; i < max; i++) {
639
					declaringLevel = methodLevel // since this is an ACCURATE_MATCH so return the possibly weaker match
640
					if (CharOperation.equals(this.allSuperDeclaringTypeNames[i], compoundName)) {
640
						| SUPER_INVOCATION_FLAVOR; // this is an overridden method => add flavor to returned level
641
						return methodLevel // since this is an ACCURATE_MATCH so return the possibly weaker match
642
							| SUPER_INVOCATION_FLAVOR; // this is an overridden method => add flavor to returned level
643
					}
644
				}
645
				/* Do not return interfaces potential matches
646
				 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=157814#c8"
647
				if (methodReceiverType.isInterface()) {
648
					// all methods interface with same name and parameters are potential matches
649
					// see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=156491
650
					return INACCURATE_MATCH | POLYMORPHIC_FLAVOR;
651
				}
641
				}
652
				*/
653
			}
642
			}
654
		}
643
		}
655
		if ((declaringLevel & FLAVORS_MASK) != 0) {
644
		if ((declaringLevel & FLAVORS_MASK) != 0) {
Lines 661-666 Link Here
661
	}
650
	}
662
	return methodLevel > declaringLevel ? declaringLevel : methodLevel; // return the weaker match
651
	return methodLevel > declaringLevel ? declaringLevel : methodLevel; // return the weaker match
663
}
652
}
653
664
/**
654
/**
665
 * Returns whether the given reference type binding matches or is a subtype of a type
655
 * Returns whether the given reference type binding matches or is a subtype of a type
666
 * that matches the given qualified pattern.
656
 * that matches the given qualified pattern.
Lines 728-733 Link Here
728
	}
718
	}
729
	return IMPOSSIBLE_MATCH;
719
	return IMPOSSIBLE_MATCH;
730
}
720
}
721
722
/*
723
 * Return whether the given type binding or one of its possible super interfaces
724
 * matches a type in the declaring type names hierarchy.
725
 */
726
protected boolean resolveLevelAsSuperInvocation(ReferenceBinding type, TypeBinding[] argumentTypes, boolean verifyMethod) {
727
	char[][] compoundName = type.compoundName;
728
	for (int i = 0, max = this.allSuperDeclaringTypeNames.length; i < max; i++) {
729
		if (CharOperation.equals(this.allSuperDeclaringTypeNames[i], compoundName)) {
730
			if (!verifyMethod) return true;
731
			// need to verify if the type implements the pattern method
732
			MethodBinding[] methods = type.getMethods(this.pattern.selector);
733
			for (int j=0, length=methods.length; j<length; j++) {
734
				MethodBinding method = methods[j];
735
				TypeBinding[] parameters = method.parameters;
736
				if (argumentTypes.length == parameters.length) {
737
					boolean found = true;
738
					for (int k=0,l=parameters.length; k<l; k++) {
739
						if (parameters[k].erasure() != argumentTypes[k].erasure()) {
740
							found = false;
741
							break;
742
						}
743
					}
744
					if (found) {
745
						return true;
746
					}
747
				}
748
			}
749
			break;
750
		}
751
	}
752
753
	// maybe super interfaces?
754
	if (type.isInterface()) {
755
		ReferenceBinding[] interfaces = type.superInterfaces();
756
		if (interfaces == null) return false;
757
		for (int i = 0; i < interfaces.length; i++) {
758
			if (resolveLevelAsSuperInvocation(interfaces[i], argumentTypes, true)) {
759
				return true;
760
			}
761
		}
762
	}
763
	return false;
764
}
731
public String toString() {
765
public String toString() {
732
	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
766
	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
733
}
767
}

Return to bug 178596