1 /*******************************************************************************
2 * Copyright (c) 2000, 2010 IBM Corporation and others.
3 *
4 * This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License 2.0
6 * which accompanies this distribution, and is available at
7 * https://www.eclipse.org/legal/epl-2.0/
8 *
9 * SPDX-License-Identifier: EPL-2.0
10 *
11 * Contributors:
12 * IBM Corporation - initial API and implementation
13 *******************************************************************************/
14 package org.eclipse.jdt.core.tests.model;
15
16 import junit.framework.Test;
17
18 import org.eclipse.core.runtime.*;
19 import org.eclipse.jdt.core.*;
20 import org.eclipse.jdt.core.search.IJavaSearchScope;
21 import org.eclipse.jdt.core.search.SearchEngine;
22 import org.eclipse.jdt.core.search.SearchPattern;
23
24
25 /**
26 * Specific test suite for fine grained search.
27 *
28 * @bug 155013: [search] [DCR] More finegrained options for Java search
29 * @test Several tests sets trying to cover as many cases as possible.
30 * <p>
31 * Each set is organize the same way:
32 * <ul>
33 * <li>specific method defining the test case called by all the tests of the set,</li>
34 * <li>first test performs a search request without any fine grain flag defined
35 * to have a precise idea of what are the entire expected references,</li>
36 * <li>second test performs a search request with all fine grain flags
37 * defined to verify that flags combination works well</li>
38 * <li>each following test each defines one of the possible fine grain flag
39 * to verify that it works properly with the given test case,</li>
40 * </ul>
41 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=155013"
42 */
43 public class JavaSearchFineGrainTests extends JavaSearchTests {
44
JavaSearchFineGrainTests(String name)45 public JavaSearchFineGrainTests(String name) {
46 super(name);
47 this.endChar = "";
48 }
suite()49 public static Test suite() {
50 return buildModelTestSuite(JavaSearchFineGrainTests.class);
51 }
52 static {
53 // org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
54 }
55
56 @Override
getJavaSearchScope()57 IJavaSearchScope getJavaSearchScope() {
58 return super.getJavaSearchScope15();
59 }
60 @Override
getWorkingCopy(String path, String source)61 public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
62 if (this.wcOwner == null) {
63 this.wcOwner = new WorkingCopyOwner() {};
64 }
65 return getWorkingCopy(path, source, this.wcOwner);
66 }
67
68 @Override
setUp()69 protected void setUp () throws Exception {
70 super.setUp();
71 this.resultCollector = new JavaSearchResultCollector();
72 this.resultCollector.showAccuracy(true);
73 this.resultCollector.showSelection();
74 this.resultCollector.showOffset();
75 }
76
77 static {
78 // TESTS_PREFIX = "testMethodRef";
79 }
80
81 /*
82 * References to a specific IField
83 */
84 private final static int ALL_FIELD_METHOD_FINE_GRAIN_FLAGS =
85 SUPER_REFERENCE |
86 QUALIFIED_REFERENCE |
87 THIS_REFERENCE |
88 IMPLICIT_THIS_REFERENCE;
setUpFieldRef()89 private IField setUpFieldRef() throws JavaModelException {
90 final ProblemRequestor problemRequestor = new ProblemRequestor();
91 this.wcOwner = new WorkingCopyOwner() {
92 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
93 return problemRequestor;
94 }
95 };
96 this.workingCopies = new ICompilationUnit[2];
97 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/field/def/Fields.java",
98 "package field.def;\n" +
99 "public class Fields {\n" +
100 " public Object field;\n" +
101 "}\n"
102 );
103 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/field/ref/TestFields.java",
104 "package field.ref;\n" +
105 "import field.def.Fields;\n" +
106 "public class TestFields extends Fields {\n" +
107 " boolean foo(Fields param) {\n" +
108 " return super.field == null ||\n" +
109 " param.field == null ||\n" +
110 " this.field == null ||\n" +
111 " field == null;\n" +
112 " }\n" +
113 "}\n"
114 );
115 assertEquals("CU Should not have any problem!",
116 "----------\n" +
117 "----------\n",
118 problemRequestor.problems.toString()
119 );
120 this.resultCollector.showSelection();
121 this.resultCollector.showOffset();
122 return this.workingCopies[0].getType("Fields").getField("field");
123 }
testFieldRef()124 public void testFieldRef() throws CoreException {
125 search(setUpFieldRef(), REFERENCES);
126 assertSearchResults(
127 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ return super.!|field|! == null ||@129] EXACT_MATCH\n" +
128 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ param.!|field|! == null ||@155] EXACT_MATCH\n" +
129 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ this.!|field|! == null ||@180] EXACT_MATCH\n" +
130 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ !|field|! == null;@200] EXACT_MATCH"
131 );
132 }
testFieldRef_AllFlags()133 public void testFieldRef_AllFlags() throws CoreException {
134 search(setUpFieldRef(), ALL_FIELD_METHOD_FINE_GRAIN_FLAGS);
135 assertSearchResults(
136 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ return super.!|field|! == null ||@129] EXACT_MATCH\n" +
137 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ param.!|field|! == null ||@155] EXACT_MATCH\n" +
138 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ this.!|field|! == null ||@180] EXACT_MATCH\n" +
139 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ !|field|! == null;@200] EXACT_MATCH"
140 );
141 }
testFieldRef_Qualified()142 public void testFieldRef_Qualified() throws CoreException {
143 search(setUpFieldRef(), QUALIFIED_REFERENCE);
144 assertSearchResults(
145 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ param.!|field|! == null ||@155] EXACT_MATCH"
146 );
147 }
testFieldRef_Simple()148 public void testFieldRef_Simple() throws CoreException {
149 search(setUpFieldRef(), IMPLICIT_THIS_REFERENCE);
150 assertSearchResults(
151 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ !|field|! == null;@200] EXACT_MATCH"
152 );
153 }
testFieldRef_Super()154 public void testFieldRef_Super() throws CoreException {
155 search(setUpFieldRef(), SUPER_REFERENCE);
156 assertSearchResults(
157 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ return super.!|field|! == null ||@129] EXACT_MATCH"
158 );
159 }
testFieldRef_This()160 public void testFieldRef_This() throws CoreException {
161 search(setUpFieldRef(), THIS_REFERENCE);
162 assertSearchResults(
163 "src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ this.!|field|! == null ||@180] EXACT_MATCH"
164 );
165 }
166
167 /*
168 * References to a specific IMethod
169 */
setUpMethodRef()170 private IMethod setUpMethodRef() throws JavaModelException {
171 final ProblemRequestor problemRequestor = new ProblemRequestor();
172 this.wcOwner = new WorkingCopyOwner() {
173 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
174 return problemRequestor;
175 }
176 };
177 this.workingCopies = new ICompilationUnit[2];
178 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/meth/def/Methods.java",
179 "package meth.def;\n" +
180 "public class Methods {\n" +
181 " public void method() {}\n" +
182 "}\n"
183 );
184 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/meth/ref/TestMethods.java",
185 "package meth.ref;\n" +
186 "import meth.def.Methods;\n" +
187 "public class TestMethods extends Methods {\n" +
188 " void foo(Methods param) {\n" +
189 " super.method();\n" +
190 " param.method();\n" +
191 " this.method();\n" +
192 " method();\n" +
193 " }\n" +
194 "}\n"
195 );
196 assertEquals("CU Should not have any problem!",
197 "----------\n" +
198 "----------\n",
199 problemRequestor.problems.toString()
200 );
201 this.resultCollector.showSelection();
202 this.resultCollector.showOffset();
203 return this.workingCopies[0].getType("Methods").getMethod("method", new String[0]);
204 }
testMethodRef()205 public void testMethodRef() throws CoreException {
206 search(setUpMethodRef(), REFERENCES);
207 assertSearchResults(
208 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ super.!|method()|!;@121] EXACT_MATCH\n" +
209 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ param.!|method()|!;@139] EXACT_MATCH\n" +
210 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ this.!|method()|!;@156] EXACT_MATCH\n" +
211 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ !|method()|!;@168] EXACT_MATCH"
212 );
213 }
testMethodRef_AllFlags()214 public void testMethodRef_AllFlags() throws CoreException {
215 search(setUpMethodRef(), ALL_FIELD_METHOD_FINE_GRAIN_FLAGS);
216 assertSearchResults(
217 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ super.!|method()|!;@121] EXACT_MATCH\n" +
218 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ param.!|method()|!;@139] EXACT_MATCH\n" +
219 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ this.!|method()|!;@156] EXACT_MATCH\n" +
220 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ !|method()|!;@168] EXACT_MATCH"
221 );
222 }
testMethodRef_Qualified()223 public void testMethodRef_Qualified() throws CoreException {
224 search(setUpMethodRef(), QUALIFIED_REFERENCE);
225 assertSearchResults(
226 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ param.!|method()|!;@139] EXACT_MATCH"
227 );
228 }
testMethodRef_Simple()229 public void testMethodRef_Simple() throws CoreException {
230 search(setUpMethodRef(), IMPLICIT_THIS_REFERENCE);
231 assertSearchResults(
232 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ !|method()|!;@168] EXACT_MATCH"
233 );
234 }
testMethodRef_Super()235 public void testMethodRef_Super() throws CoreException {
236 search(setUpMethodRef(), SUPER_REFERENCE);
237 assertSearchResults(
238 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ super.!|method()|!;@121] EXACT_MATCH"
239 );
240 }
testMethodRef_This()241 public void testMethodRef_This() throws CoreException {
242 search(setUpMethodRef(), THIS_REFERENCE);
243 assertSearchResults(
244 "src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ this.!|method()|!;@156] EXACT_MATCH"
245 );
246 }
247
248 private final static int ALL_TYPE_FINE_GRAIN_FLAGS =
249 FIELD_DECLARATION_TYPE_REFERENCE |
250 LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE |
251 PARAMETER_DECLARATION_TYPE_REFERENCE |
252 SUPERTYPE_TYPE_REFERENCE |
253 THROWS_CLAUSE_TYPE_REFERENCE |
254 CAST_TYPE_REFERENCE |
255 CATCH_TYPE_REFERENCE |
256 CLASS_INSTANCE_CREATION_TYPE_REFERENCE |
257 RETURN_TYPE_REFERENCE |
258 IMPORT_DECLARATION_TYPE_REFERENCE |
259 ANNOTATION_TYPE_REFERENCE |
260 TYPE_VARIABLE_BOUND_TYPE_REFERENCE |
261 TYPE_ARGUMENT_TYPE_REFERENCE |
262 WILDCARD_BOUND_TYPE_REFERENCE;
263
264 /*
265 * References to a specific IType
266 */
setUpTypeRef(int typeIndex)267 private IType setUpTypeRef(int typeIndex) throws JavaModelException {
268 final ProblemRequestor problemRequestor = new ProblemRequestor();
269 this.wcOwner = new WorkingCopyOwner() {
270 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
271 return problemRequestor;
272 }
273 };
274 this.workingCopies = new ICompilationUnit[3];
275 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
276 "package type.def;\n" +
277 "@Bug\n" +
278 "@ATest\n" +
279 "public class Types extends Exception implements ITest1, ITest2 {\n" +
280 " ITest1 test1;\n" +
281 " ITest2 test2;\n" +
282 "}\n" +
283 "@Bug\n" +
284 "interface ITest1 {}\n" +
285 "@ATest\n" +
286 "interface ITest2 extends ITest1 {}\n" +
287 "@Bug\n" +
288 "@ATest\n" +
289 "enum ETest {}\n" +
290 "@Bug\n" +
291 "@interface ATest {}\n"
292 );
293 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/type/def/Bug.java",
294 "package type.def;\n" +
295 "public @interface Bug {\n" +
296 " int num() default 0;\n" +
297 " String comment() default \"\";\n" +
298 "}\n"
299 );
300 this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/type/ref/TestTypes.java",
301 "package type.ref;\n" +
302 "import type.def.Types;\n" +
303 "import type.def.Bug;\n" +
304 "\n" +
305 "@Bug(num=155013)\n" +
306 "public class TestTypes extends Types {\n" +
307 " @Bug(comment=\"field\")\n" +
308 " Types field;\n" +
309 " @Bug(comment=\"method\", num=155013)\n" +
310 " Types method(Types param) throws Types {\n" +
311 " Object obj = new Types();\n" +
312 " Types local = (Types) obj;\n" +
313 " return local;\n" +
314 " }\n" +
315 " Bug bar(Bug bug) {\n" +
316 " try {\n" +
317 " method(this);\n" +
318 " } catch (Types ex) {\n" +
319 " }\n" +
320 " return bug;\n" +
321 " }\n" +
322 "}\n"
323 );
324 assertEquals("CU Should not have any problem!",
325 "----------\n" +
326 "----------\n",
327 problemRequestor.problems.toString()
328 );
329 ICompilationUnit cu = this.workingCopies[typeIndex];
330 String cuName = cu.getElementName();
331 return cu.getType(cuName.substring(0, cuName.indexOf('.')));
332 }
testTypeRef()333 public void testTypeRef() throws CoreException {
334 search(setUpTypeRef(0), REFERENCES);
335 assertSearchResults(
336 "src/type/ref/TestTypes.java [import !|type.def.Types|!;@25] EXACT_MATCH\n" +
337 "src/type/ref/TestTypes.java type.ref.TestTypes [public class TestTypes extends !|Types|! {@111] EXACT_MATCH\n" +
338 "src/type/ref/TestTypes.java type.ref.TestTypes.field [ !|Types|! field;@143] EXACT_MATCH\n" +
339 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@193] EXACT_MATCH\n" +
340 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@206] EXACT_MATCH\n" +
341 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@226] EXACT_MATCH\n" +
342 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@253] EXACT_MATCH\n" +
343 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@264] EXACT_MATCH\n" +
344 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@279] EXACT_MATCH\n" +
345 "src/type/ref/TestTypes.java Bug type.ref.TestTypes.bar(Bug) [ } catch (!|Types|! ex) {@366] EXACT_MATCH"
346 );
347 }
testTypeRef_AllFlags()348 public void testTypeRef_AllFlags() throws CoreException {
349 search(setUpTypeRef(0), ALL_TYPE_FINE_GRAIN_FLAGS);
350 assertSearchResults(
351 "src/type/ref/TestTypes.java [import !|type.def.Types|!;@25] EXACT_MATCH\n" +
352 "src/type/ref/TestTypes.java type.ref.TestTypes [public class TestTypes extends !|Types|! {@111] EXACT_MATCH\n" +
353 "src/type/ref/TestTypes.java type.ref.TestTypes.field [ !|Types|! field;@143] EXACT_MATCH\n" +
354 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@193] EXACT_MATCH\n" +
355 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@206] EXACT_MATCH\n" +
356 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@226] EXACT_MATCH\n" +
357 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@253] EXACT_MATCH\n" +
358 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@264] EXACT_MATCH\n" +
359 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@279] EXACT_MATCH\n" +
360 "src/type/ref/TestTypes.java Bug type.ref.TestTypes.bar(Bug) [ } catch (!|Types|! ex) {@366] EXACT_MATCH"
361 );
362 }
testTypeRef_Allocation()363 public void testTypeRef_Allocation() throws CoreException {
364 search(setUpTypeRef(0), CLASS_INSTANCE_CREATION_TYPE_REFERENCE);
365 assertSearchResults(
366 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@253] EXACT_MATCH"
367 );
368 }
testTypeRef_Annotation()369 public void testTypeRef_Annotation() throws CoreException {
370 search(setUpTypeRef(1), ANNOTATION_TYPE_REFERENCE);
371 assertSearchResults(
372 "src/type/def/Types.java type.def.Types [@!|Bug|!@19] EXACT_MATCH\n" +
373 "src/type/def/Types.java type.def.ITest1 [@!|Bug|!@128] EXACT_MATCH\n" +
374 "src/type/def/Types.java type.def.ETest [@!|Bug|!@195] EXACT_MATCH\n" +
375 "src/type/def/Types.java type.def.ATest [@!|Bug|!@221] EXACT_MATCH\n" +
376 "src/type/ref/TestTypes.java type.ref.TestTypes [@!|Bug|!(num=155013)@64] EXACT_MATCH\n" +
377 "src/type/ref/TestTypes.java type.ref.TestTypes.field [ @!|Bug|!(comment=\"field\")@121] EXACT_MATCH\n" +
378 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ @!|Bug|!(comment=\"method\", num=155013)@158] EXACT_MATCH"
379 );
380 }
testTypeRef_Cast()381 public void testTypeRef_Cast() throws CoreException {
382 search(setUpTypeRef(0), CAST_TYPE_REFERENCE);
383 assertSearchResults(
384 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@279] EXACT_MATCH"
385 );
386 }
testTypeRef_Catch()387 public void testTypeRef_Catch() throws CoreException {
388 search(setUpTypeRef(0), CATCH_TYPE_REFERENCE);
389 assertSearchResults(
390 "src/type/ref/TestTypes.java Bug type.ref.TestTypes.bar(Bug) [ } catch (!|Types|! ex) {@366] EXACT_MATCH"
391 );
392 }
testTypeRef_Field()393 public void testTypeRef_Field() throws CoreException {
394 search(setUpTypeRef(0), FIELD_DECLARATION_TYPE_REFERENCE);
395 assertSearchResults(
396 "src/type/ref/TestTypes.java type.ref.TestTypes.field [ !|Types|! field;@143] EXACT_MATCH"
397 );
398 }
testTypeRef_Import()399 public void testTypeRef_Import() throws CoreException {
400 search(setUpTypeRef(0), IMPORT_DECLARATION_TYPE_REFERENCE);
401 assertSearchResults(
402 "src/type/ref/TestTypes.java [import !|type.def.Types|!;@25] EXACT_MATCH"
403 );
404 }
testTypeRef_MethodParameter()405 public void testTypeRef_MethodParameter() throws CoreException {
406 search(setUpTypeRef(0), PARAMETER_DECLARATION_TYPE_REFERENCE);
407 assertSearchResults(
408 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@206] EXACT_MATCH"
409 );
410 }
testTypeRef_Return()411 public void testTypeRef_Return() throws CoreException {
412 search(setUpTypeRef(0), RETURN_TYPE_REFERENCE);
413 assertSearchResults(
414 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@193] EXACT_MATCH"
415 );
416 }
testTypeRef_Superinterface()417 public void testTypeRef_Superinterface() throws CoreException {
418 IType type = setUpTypeRef(0);
419 search(((ICompilationUnit) type.getParent()).getType("ITest1"), SUPERTYPE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
420 assertSearchResults(
421 "src/type/def/Types.java type.def.Types [public class Types extends Exception implements !|ITest1|!, ITest2 {@78] EXACT_MATCH\n" +
422 "src/type/def/Types.java type.def.ITest2 [interface ITest2 extends !|ITest1|! {}@184] EXACT_MATCH"
423 );
424 }
testTypeRef_Supertype()425 public void testTypeRef_Supertype() throws CoreException {
426 search(setUpTypeRef(0), SUPERTYPE_TYPE_REFERENCE);
427 assertSearchResults(
428 "src/type/ref/TestTypes.java type.ref.TestTypes [public class TestTypes extends !|Types|! {@111] EXACT_MATCH"
429 );
430 }
testTypeRef_Throws()431 public void testTypeRef_Throws() throws CoreException {
432 search(setUpTypeRef(0), THROWS_CLAUSE_TYPE_REFERENCE);
433 assertSearchResults(
434 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@226] EXACT_MATCH"
435 );
436 }
testTypeRef_Variable()437 public void testTypeRef_Variable() throws CoreException {
438 search(setUpTypeRef(0), LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE);
439 assertSearchResults(
440 "src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@264] EXACT_MATCH"
441 );
442 }
443
444 /**
445 * @bug 221130: [search] No fine-grain search for instanceof criteria
446 * @test Verify that type references are only reported in instanceof pattern when
447 * corresponding fine grain flag is set.
448 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=221130"
449 */
testTypeRef_InstanceOf()450 public void testTypeRef_InstanceOf() throws CoreException {
451 this.workingCopies = new ICompilationUnit[1];
452 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Test.java",
453 "public class Test {\n" +
454 " Object field;\n" +
455 " void foo(Object param) {\n" +
456 " if (field instanceof java.lang.String) {\n" +
457 " }\n" +
458 " if (param instanceof Test) {\n" +
459 " }\n" +
460 " }\n" +
461 "}\n"
462 );
463 search("*", TYPE, INSTANCEOF_TYPE_REFERENCE);
464 assertSearchResults(
465 "src/Test.java void Test.foo(Object) [ if (field instanceof !|java.lang.String|!) {@84] EXACT_MATCH\n" +
466 "src/Test.java void Test.foo(Object) [ if (param instanceof !|Test|!) {@131] EXACT_MATCH"
467 );
468 }
testTypeRef_InstanceOfWithParenthesis()469 public void testTypeRef_InstanceOfWithParenthesis() throws CoreException {
470 this.workingCopies = new ICompilationUnit[1];
471 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Test.java",
472 "public class Test {\n" +
473 " Object field;\n" +
474 " void foo(Object param) {\n" +
475 " if ((field instanceof Test)) {\n" +
476 " }\n" +
477 " if ((param instanceof java.lang.Throwable)) {\n" +
478 " }\n" +
479 " }\n" +
480 "}\n"
481 );
482 search("*", TYPE, INSTANCEOF_TYPE_REFERENCE);
483 assertSearchResults(
484 "src/Test.java void Test.foo(Object) [ if ((field instanceof !|Test|!)) {@85] EXACT_MATCH\n" +
485 "src/Test.java void Test.foo(Object) [ if ((param instanceof !|java.lang.Throwable|!)) {@122] EXACT_MATCH"
486 );
487 }
488
489 /*
490 * References to a all types (using '*' string pattern)
491 */
setUpTypeRefAll()492 private void setUpTypeRefAll() throws JavaModelException {
493 final ProblemRequestor problemRequestor = new ProblemRequestor();
494 this.wcOwner = new WorkingCopyOwner() {
495 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
496 return problemRequestor;
497 }
498 };
499 this.workingCopies = new ICompilationUnit[3];
500 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
501 "package type.def;\n" +
502 "@Bug\n" +
503 "@ATest\n" +
504 "public class Types extends Exception implements ITest1, ITest2 {\n" +
505 " ITest1 test1;\n" +
506 " ITest2 test2;\n" +
507 "}\n" +
508 "@Bug\n" +
509 "interface ITest1 {}\n" +
510 "@ATest\n" +
511 "interface ITest2 extends ITest1 {}\n" +
512 "@Bug\n" +
513 "@ATest\n" +
514 "enum ETest {}\n" +
515 "@Bug\n" +
516 "@interface ATest {}\n"
517 );
518 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/type/def/Bug.java",
519 "package type.def;\n" +
520 "public @interface Bug {\n" +
521 " int num() default 0;\n" +
522 " String comment() default \"\";\n" +
523 "}\n"
524 );
525 this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/all/types/ref/TestTypes.java",
526 "package all.types.ref;\n" +
527 "\n" +
528 "import type.def.Bug;\n" +
529 "import type.def.Types;\n" +
530 "\n" +
531 "@Bug(num=155013)\n" +
532 "public class TestTypes extends Types {\n" +
533 " @Bug(comment=\"field\")\n" +
534 " Types field = new Types(), local, other = new Types();\n" +
535 " {\n" +
536 " Object o;\n" +
537 " Types t;\n" +
538 " if (this.field == null) {\n" +
539 " try {\n" +
540 " t = new TestTypes();\n" +
541 " } catch (RuntimeException e) {\n" +
542 " t = new Types();\n" +
543 " } \n" +
544 " } else {\n" +
545 " o = this.field;\n" +
546 " t = (Types) o;\n" +
547 " }\n" +
548 " local = t;\n" +
549 " };\n" +
550 " @Bug(comment=\"method\", num=155013)\n" +
551 " Types method(Types param) throws Types {\n" +
552 " Object obj = new Types();\n" +
553 " Types local = (Types) obj;\n" +
554 " return local;\n" +
555 " }\n" +
556 " Bug bar(Bug bug) {\n" +
557 " try {\n" +
558 " method(this);\n" +
559 " }\n" +
560 " catch (Types ex) {}\n" +
561 " catch (Exception ex) {}\n" +
562 " return bug; \n" +
563 " }\n" +
564 " // Other types references\n" +
565 " Object object;\n" +
566 " String str;\n" +
567 " TestTypes() throws Types, RuntimeException {\n" +
568 " if (this.object instanceof String) {\n" +
569 " this.str = (String) this.object;\n" +
570 " } else {\n" +
571 " this.str = new String();\n" +
572 " this.object = new Object();\n" +
573 " }\n" +
574 " }\n" +
575 "}\n"
576 );
577 assertEquals("CU Should not have any problem!",
578 "----------\n" +
579 "----------\n",
580 problemRequestor.problems.toString()
581 );
582 this.resultCollector.showSelection();
583 this.resultCollector.showOffset();
584 }
testTypeRefAll_Allocation()585 public void testTypeRefAll_Allocation() throws CoreException {
586 setUpTypeRefAll();
587 search("*", TYPE, CLASS_INSTANCE_CREATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
588 assertSearchResults(
589 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ Types field = new !|Types|!(), local, other = new Types();@167] EXACT_MATCH\n" +
590 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.other [ Types field = new Types(), local, other = new !|Types|!();@195] EXACT_MATCH\n" +
591 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|TestTypes|!();@279] EXACT_MATCH\n" +
592 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|Types|!();@338] EXACT_MATCH\n" +
593 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@519] EXACT_MATCH\n" +
594 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = new !|String|!();@897] EXACT_MATCH\n" +
595 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.object = new !|Object|!();@928] EXACT_MATCH"
596 );
597 }
testTypeRefAll_Annotation()598 public void testTypeRefAll_Annotation() throws CoreException {
599 setUpTypeRefAll();
600 search("*", TYPE, ANNOTATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
601 assertSearchResults(
602 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes [@!|Bug|!(num=155013)@70] EXACT_MATCH\n" +
603 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ @!|Bug|!(comment=\"field\")@127] EXACT_MATCH\n" +
604 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ @!|Bug|!(comment=\"method\", num=155013)@424] EXACT_MATCH\n" +
605 "src/type/def/Types.java type.def.Types [@!|Bug|!@19] EXACT_MATCH\n" +
606 "src/type/def/Types.java type.def.Types [@!|ATest|!@24] EXACT_MATCH\n" +
607 "src/type/def/Types.java type.def.ITest1 [@!|Bug|!@128] EXACT_MATCH\n" +
608 "src/type/def/Types.java type.def.ITest2 [@!|ATest|!@153] EXACT_MATCH\n" +
609 "src/type/def/Types.java type.def.ETest [@!|Bug|!@195] EXACT_MATCH\n" +
610 "src/type/def/Types.java type.def.ETest [@!|ATest|!@200] EXACT_MATCH\n" +
611 "src/type/def/Types.java type.def.ATest [@!|Bug|!@221] EXACT_MATCH"
612 );
613 }
testTypeRefAll_Cast()614 public void testTypeRefAll_Cast() throws CoreException {
615 setUpTypeRefAll();
616 search("*", TYPE, CAST_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
617 assertSearchResults(
618 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = (!|Types|!) o;@391] EXACT_MATCH\n" +
619 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@545] EXACT_MATCH\n" +
620 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = (!|String|!) this.object;@847] EXACT_MATCH"
621 );
622 }
testTypeRefAll_Catch()623 public void testTypeRefAll_Catch() throws CoreException {
624 setUpTypeRefAll();
625 search("*", TYPE, CATCH_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
626 assertSearchResults(
627 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ } catch (!|RuntimeException|! e) {@304] EXACT_MATCH\n" +
628 "src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ catch (!|Types|! ex) {}@634] EXACT_MATCH\n" +
629 "src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ catch (!|Exception|! ex) {}@656] EXACT_MATCH"
630 );
631 }
testTypeRefAll_Field()632 public void testTypeRefAll_Field() throws CoreException {
633 setUpTypeRefAll();
634 search("*", TYPE, FIELD_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
635 assertSearchResults(
636 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ !|Types|! field = new Types(), local, other = new Types();@149] EXACT_MATCH\n" +
637 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.object [ !|Object|! object;@719] EXACT_MATCH\n" +
638 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.str [ !|String|! str;@735] EXACT_MATCH\n" +
639 "src/type/def/Types.java type.def.Types.test1 [ !|ITest1|! test1;@96] EXACT_MATCH\n" +
640 "src/type/def/Types.java type.def.Types.test2 [ !|ITest2|! test2;@111] EXACT_MATCH"
641 );
642 }
testTypeRefAll_Import()643 public void testTypeRefAll_Import() throws CoreException {
644 setUpTypeRefAll();
645 search("*", TYPE, IMPORT_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
646 assertSearchResults(
647 "src/all/types/ref/TestTypes.java [import !|type.def.Bug|!;@31] EXACT_MATCH\n" +
648 "src/all/types/ref/TestTypes.java [import !|type.def.Types|!;@52] EXACT_MATCH"
649 );
650 }
testTypeRefAll_MethodParameter()651 public void testTypeRefAll_MethodParameter() throws CoreException {
652 setUpTypeRefAll();
653 search("*", TYPE, PARAMETER_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
654 assertSearchResults(
655 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@472] EXACT_MATCH\n" +
656 "src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ Bug bar(!|Bug|! bug) {@585] EXACT_MATCH"
657 );
658 }
testTypeRefAll_Return()659 public void testTypeRefAll_Return() throws CoreException {
660 setUpTypeRefAll();
661 search("*", TYPE, RETURN_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
662 assertSearchResults(
663 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@459] EXACT_MATCH\n" +
664 "src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ !|Bug|! bar(Bug bug) {@577] EXACT_MATCH\n" +
665 "src/type/def/Bug.java int type.def.Bug.num() [ !|int|! num() default 0;@43] EXACT_MATCH\n" +
666 "src/type/def/Bug.java String type.def.Bug.comment() [ !|String|! comment() default \"\";@65] EXACT_MATCH"
667 );
668 }
testTypeRefAll_Supertype()669 public void testTypeRefAll_Supertype() throws CoreException {
670 setUpTypeRefAll();
671 search("*", TYPE, SUPERTYPE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
672 assertSearchResults(
673 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes [public class TestTypes extends !|Types|! {@117] EXACT_MATCH\n" +
674 "src/type/def/Types.java type.def.Types [public class Types extends !|Exception|! implements ITest1, ITest2 {@57] EXACT_MATCH\n" +
675 "src/type/def/Types.java type.def.Types [public class Types extends Exception implements !|ITest1|!, ITest2 {@78] EXACT_MATCH\n" +
676 "src/type/def/Types.java type.def.Types [public class Types extends Exception implements ITest1, !|ITest2|! {@86] EXACT_MATCH\n" +
677 "src/type/def/Types.java type.def.ITest2 [interface ITest2 extends !|ITest1|! {}@184] EXACT_MATCH"
678 );
679 }
testTypeRefAll_Throws()680 public void testTypeRefAll_Throws() throws CoreException {
681 setUpTypeRefAll();
682 search("*", TYPE, THROWS_CLAUSE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
683 assertSearchResults(
684 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@492] EXACT_MATCH\n" +
685 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws !|Types|!, RuntimeException {@767] EXACT_MATCH\n" +
686 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws Types, !|RuntimeException|! {@774] EXACT_MATCH"
687 );
688 }
testTypeRefAll_Variable()689 public void testTypeRefAll_Variable() throws CoreException {
690 setUpTypeRefAll();
691 search("*", TYPE, LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
692 assertSearchResults(
693 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|Object|! o;@209] EXACT_MATCH\n" +
694 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|Types|! t;@221] EXACT_MATCH\n" +
695 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ !|Object|! obj = new Types();@502] EXACT_MATCH\n" +
696 "src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@530] EXACT_MATCH"
697 );
698 }
699
700 private final static int ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS =
701 TYPE_VARIABLE_BOUND_TYPE_REFERENCE |
702 TYPE_ARGUMENT_TYPE_REFERENCE |
703 WILDCARD_BOUND_TYPE_REFERENCE;
704
705 /*
706 * References to a specific generic IType and all types.
707 */
setUpTypeRefGeneric01()708 private IType setUpTypeRefGeneric01() throws JavaModelException {
709 final ProblemRequestor problemRequestor = new ProblemRequestor();
710 this.wcOwner = new WorkingCopyOwner() {
711 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
712 return problemRequestor;
713 }
714 };
715 this.workingCopies = new ICompilationUnit[3];
716 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
717 "package type.def;\n" +
718 "public class Types {}\n"
719 );
720 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/test01/Generic.java",
721 "package test01;\n" +
722 "import java.io.Serializable;\n" +
723 "import type.def.Types;\n" +
724 "public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {\n" +
725 " Generic<? extends Types, ?, ?> field;\n" +
726 " Comparable<String> comp;\n" +
727 " Class<? extends Exception> clazz;\n" +
728 "}\n" +
729 "class A<R> {}\n"
730 );
731 this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/test01/TestGeneric.java",
732 "package test01;\n" +
733 "import java.io.Serializable;\n" +
734 "import type.def.Types;\n" +
735 "public class TestGeneric<T> extends Generic<Types, UClass, VClass> {\n" +
736 " TestGeneric<Types> test;\n" +
737 " TestGeneric<String> foo(TestGeneric<Types> param1, Comparable<String> param2) {\n" +
738 " return null;\n" +
739 " }\n" +
740 " Comparable<TestGeneric<Types>> bar() {\n" +
741 " return null;\n" +
742 " } \n" +
743 "}\n" +
744 "class UClass extends Types implements Comparable<Types>, Serializable {\n" +
745 " private static final long serialVersionUID = 1L;\n" +
746 " public int compareTo(Types o) {\n" +
747 " return 0;\n" +
748 " }\n" +
749 "}\n" +
750 "class VClass extends A<Types> {}\n"
751 );
752 assertEquals("CU Should not have any problem!",
753 "----------\n" +
754 "----------\n",
755 problemRequestor.problems.toString()
756 );
757 this.resultCollector.showSelection();
758 this.resultCollector.showOffset();
759 return this.workingCopies[0].getType("Types");
760 }
testTypeRefGeneric01()761 public void testTypeRefGeneric01() throws CoreException {
762 search(setUpTypeRefGeneric01(), REFERENCES);
763 assertSearchResults(
764 "src/test01/Generic.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
765 "src/test01/Generic.java test01.Generic [public class Generic<T extends !|Types|!, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {@99] EXACT_MATCH\n" +
766 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends !|Types|! & Comparable<Types> & Serializable, V extends A<? super Types>> {@116] EXACT_MATCH\n" +
767 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<!|Types|!> & Serializable, V extends A<? super Types>> {@135] EXACT_MATCH\n" +
768 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super !|Types|!>> {@178] EXACT_MATCH\n" +
769 "src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
770 "src/test01/TestGeneric.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
771 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
772 "src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
773 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<!|Types|!> param1, Comparable<String> param2) {@200] EXACT_MATCH\n" +
774 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
775 "src/test01/TestGeneric.java test01.UClass [class UClass extends !|Types|! implements Comparable<Types>, Serializable {@345] EXACT_MATCH\n" +
776 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
777 "src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public int compareTo(!|Types|! o) {@468] EXACT_MATCH\n" +
778 "src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
779 );
780 }
testTypeRefGeneric01_AllFlags()781 public void testTypeRefGeneric01_AllFlags() throws CoreException {
782 search(setUpTypeRefGeneric01(), ALL_TYPE_FINE_GRAIN_FLAGS);
783 assertSearchResults(
784 "src/test01/Generic.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
785 "src/test01/Generic.java test01.Generic [public class Generic<T extends !|Types|!, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {@99] EXACT_MATCH\n" +
786 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends !|Types|! & Comparable<Types> & Serializable, V extends A<? super Types>> {@116] EXACT_MATCH\n" +
787 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<!|Types|!> & Serializable, V extends A<? super Types>> {@135] EXACT_MATCH\n" +
788 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super !|Types|!>> {@178] EXACT_MATCH\n" +
789 "src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
790 "src/test01/TestGeneric.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
791 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
792 "src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
793 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<!|Types|!> param1, Comparable<String> param2) {@200] EXACT_MATCH\n" +
794 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
795 "src/test01/TestGeneric.java test01.UClass [class UClass extends !|Types|! implements Comparable<Types>, Serializable {@345] EXACT_MATCH\n" +
796 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
797 "src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public int compareTo(!|Types|! o) {@468] EXACT_MATCH\n" +
798 "src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
799 );
800 }
testTypeRefGeneric01_TypeArgument()801 public void testTypeRefGeneric01_TypeArgument() throws CoreException {
802 search(setUpTypeRefGeneric01(), TYPE_ARGUMENT_TYPE_REFERENCE);
803 assertSearchResults(
804 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<!|Types|!> & Serializable, V extends A<? super Types>> {@135] EXACT_MATCH\n" +
805 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
806 "src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
807 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<!|Types|!> param1, Comparable<String> param2) {@200] EXACT_MATCH\n" +
808 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
809 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
810 "src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
811 );
812 }
testTypeRefGeneric01_TypeVariableBound()813 public void testTypeRefGeneric01_TypeVariableBound() throws CoreException {
814 search(setUpTypeRefGeneric01(), TYPE_VARIABLE_BOUND_TYPE_REFERENCE);
815 assertSearchResults(
816 "src/test01/Generic.java test01.Generic [public class Generic<T extends !|Types|!, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {@99] EXACT_MATCH\n" +
817 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends !|Types|! & Comparable<Types> & Serializable, V extends A<? super Types>> {@116] EXACT_MATCH"
818 );
819 }
testTypeRefGeneric01_WildcardBound()820 public void testTypeRefGeneric01_WildcardBound() throws CoreException {
821 search(setUpTypeRefGeneric01(), WILDCARD_BOUND_TYPE_REFERENCE);
822 assertSearchResults(
823 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super !|Types|!>> {@178] EXACT_MATCH\n" +
824 "src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH"
825 );
826 }
testTypeRefGenericAll01()827 public void testTypeRefGenericAll01() throws CoreException {
828 setUpTypeRefGeneric01();
829 search("*", TYPE, REFERENCES, getJavaSearchWorkingCopiesScope());
830 assertSearchResults(
831 "src/test01/Generic.java [import !|java.io.Serializable|!;@23] EXACT_MATCH\n" +
832 "src/test01/Generic.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
833 "src/test01/Generic.java test01.Generic [public class Generic<T extends !|Types|!, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {@99] EXACT_MATCH\n" +
834 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends !|Types|! & Comparable<Types> & Serializable, V extends A<? super Types>> {@116] EXACT_MATCH\n" +
835 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & !|Comparable|!<Types> & Serializable, V extends A<? super Types>> {@124] EXACT_MATCH\n" +
836 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<!|Types|!> & Serializable, V extends A<? super Types>> {@135] EXACT_MATCH\n" +
837 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & !|Serializable|!, V extends A<? super Types>> {@144] EXACT_MATCH\n" +
838 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends !|A|!<? super Types>> {@168] EXACT_MATCH\n" +
839 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super !|Types|!>> {@178] EXACT_MATCH\n" +
840 "src/test01/Generic.java test01.Generic.field [ !|Generic|!<? extends Types, ?, ?> field;@189] EXACT_MATCH\n" +
841 "src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
842 "src/test01/Generic.java test01.Generic.comp [ !|Comparable|!<String> comp;@228] EXACT_MATCH\n" +
843 "src/test01/Generic.java test01.Generic.comp [ Comparable<!|String|!> comp;@239] EXACT_MATCH\n" +
844 "src/test01/Generic.java test01.Generic.clazz [ !|Class|!<? extends Exception> clazz;@254] EXACT_MATCH\n" +
845 "src/test01/Generic.java test01.Generic.clazz [ Class<? extends !|Exception|!> clazz;@270] EXACT_MATCH\n" +
846 "src/test01/TestGeneric.java [import !|java.io.Serializable|!;@23] EXACT_MATCH\n" +
847 "src/test01/TestGeneric.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
848 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends !|Generic|!<Types, UClass, VClass> {@104] EXACT_MATCH\n" +
849 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
850 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, !|UClass|!, VClass> {@119] EXACT_MATCH\n" +
851 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, UClass, !|VClass|!> {@127] EXACT_MATCH\n" +
852 "src/test01/TestGeneric.java test01.TestGeneric.test [ !|TestGeneric|!<Types> test;@138] EXACT_MATCH\n" +
853 "src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
854 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ !|TestGeneric|!<String> foo(TestGeneric<Types> param1, Comparable<String> param2) {@164] EXACT_MATCH\n" +
855 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<!|String|!> foo(TestGeneric<Types> param1, Comparable<String> param2) {@176] EXACT_MATCH\n" +
856 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(!|TestGeneric|!<Types> param1, Comparable<String> param2) {@188] EXACT_MATCH\n" +
857 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<!|Types|!> param1, Comparable<String> param2) {@200] EXACT_MATCH\n" +
858 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<Types> param1, !|Comparable|!<String> param2) {@215] EXACT_MATCH\n" +
859 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<Types> param1, Comparable<!|String|!> param2) {@226] EXACT_MATCH\n" +
860 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ !|Comparable|!<TestGeneric<Types>> bar() {@264] EXACT_MATCH\n" +
861 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<!|TestGeneric|!<Types>> bar() {@275] EXACT_MATCH\n" +
862 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
863 "src/test01/TestGeneric.java test01.UClass [class UClass extends !|Types|! implements Comparable<Types>, Serializable {@345] EXACT_MATCH\n" +
864 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements !|Comparable|!<Types>, Serializable {@362] EXACT_MATCH\n" +
865 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
866 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<Types>, !|Serializable|! {@381] EXACT_MATCH\n" +
867 "src/test01/TestGeneric.java test01.UClass.serialVersionUID [ private static final !|long|! serialVersionUID = 1L;@418] EXACT_MATCH\n" +
868 "src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public !|int|! compareTo(Types o) {@454] EXACT_MATCH\n" +
869 "src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public int compareTo(!|Types|! o) {@468] EXACT_MATCH\n" +
870 "src/test01/TestGeneric.java test01.VClass [class VClass extends !|A|!<Types> {}@517] EXACT_MATCH\n" +
871 "src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
872 );
873 }
testTypeRefGenericAll01_AllGenericFlags()874 public void testTypeRefGenericAll01_AllGenericFlags() throws CoreException {
875 setUpTypeRefGeneric01();
876 search("*", TYPE, ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
877 assertSearchResults(
878 "src/test01/Generic.java test01.Generic [public class Generic<T extends !|Types|!, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {@99] EXACT_MATCH\n" +
879 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends !|Types|! & Comparable<Types> & Serializable, V extends A<? super Types>> {@116] EXACT_MATCH\n" +
880 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & !|Comparable|!<Types> & Serializable, V extends A<? super Types>> {@124] EXACT_MATCH\n" +
881 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<!|Types|!> & Serializable, V extends A<? super Types>> {@135] EXACT_MATCH\n" +
882 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & !|Serializable|!, V extends A<? super Types>> {@144] EXACT_MATCH\n" +
883 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends !|A|!<? super Types>> {@168] EXACT_MATCH\n" +
884 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super !|Types|!>> {@178] EXACT_MATCH\n" +
885 "src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
886 "src/test01/Generic.java test01.Generic.comp [ Comparable<!|String|!> comp;@239] EXACT_MATCH\n" +
887 "src/test01/Generic.java test01.Generic.clazz [ Class<? extends !|Exception|!> clazz;@270] EXACT_MATCH\n" +
888 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
889 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, !|UClass|!, VClass> {@119] EXACT_MATCH\n" +
890 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, UClass, !|VClass|!> {@127] EXACT_MATCH\n" +
891 "src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
892 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<!|String|!> foo(TestGeneric<Types> param1, Comparable<String> param2) {@176] EXACT_MATCH\n" +
893 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<!|Types|!> param1, Comparable<String> param2) {@200] EXACT_MATCH\n" +
894 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<Types> param1, Comparable<!|String|!> param2) {@226] EXACT_MATCH\n" +
895 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<!|TestGeneric|!<Types>> bar() {@275] EXACT_MATCH\n" +
896 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
897 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
898 "src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
899 );
900 }
testTypeRefGenericAll01_TypeArgument()901 public void testTypeRefGenericAll01_TypeArgument() throws CoreException {
902 setUpTypeRefGeneric01();
903 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
904 assertSearchResults(
905 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<!|Types|!> & Serializable, V extends A<? super Types>> {@135] EXACT_MATCH\n" +
906 "src/test01/Generic.java test01.Generic.comp [ Comparable<!|String|!> comp;@239] EXACT_MATCH\n" +
907 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
908 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, !|UClass|!, VClass> {@119] EXACT_MATCH\n" +
909 "src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, UClass, !|VClass|!> {@127] EXACT_MATCH\n" +
910 "src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
911 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<!|String|!> foo(TestGeneric<Types> param1, Comparable<String> param2) {@176] EXACT_MATCH\n" +
912 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<!|Types|!> param1, Comparable<String> param2) {@200] EXACT_MATCH\n" +
913 "src/test01/TestGeneric.java TestGeneric<String> test01.TestGeneric.foo(TestGeneric<Types>, Comparable<String>) [ TestGeneric<String> foo(TestGeneric<Types> param1, Comparable<!|String|!> param2) {@226] EXACT_MATCH\n" +
914 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<!|TestGeneric|!<Types>> bar() {@275] EXACT_MATCH\n" +
915 "src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
916 "src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
917 "src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
918 );
919 }
testTypeRefGenericAll01_TypeVariableBound()920 public void testTypeRefGenericAll01_TypeVariableBound() throws CoreException {
921 setUpTypeRefGeneric01();
922 search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
923 assertSearchResults(
924 "src/test01/Generic.java test01.Generic [public class Generic<T extends !|Types|!, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {@99] EXACT_MATCH\n" +
925 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends !|Types|! & Comparable<Types> & Serializable, V extends A<? super Types>> {@116] EXACT_MATCH\n" +
926 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & !|Comparable|!<Types> & Serializable, V extends A<? super Types>> {@124] EXACT_MATCH\n" +
927 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & !|Serializable|!, V extends A<? super Types>> {@144] EXACT_MATCH\n" +
928 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends !|A|!<? super Types>> {@168] EXACT_MATCH"
929 );
930 }
testTypeRefGenericAll01_WildcardBound()931 public void testTypeRefGenericAll01_WildcardBound() throws CoreException {
932 setUpTypeRefGeneric01();
933 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
934 assertSearchResults(
935 "src/test01/Generic.java test01.Generic [public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super !|Types|!>> {@178] EXACT_MATCH\n" +
936 "src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
937 "src/test01/Generic.java test01.Generic.clazz [ Class<? extends !|Exception|!> clazz;@270] EXACT_MATCH"
938 );
939 }
940 /*
941 * Same test than previous ones with another example
942 */
setUpTypeRefGeneric02()943 private IType setUpTypeRefGeneric02() throws JavaModelException {
944 final ProblemRequestor problemRequestor = new ProblemRequestor();
945 this.wcOwner = new WorkingCopyOwner() {
946 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
947 return problemRequestor;
948 }
949 };
950 this.workingCopies = new ICompilationUnit[1];
951 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test02/Test.java",
952 "package test02;\n" +
953 "public class Test <T, U, V> {\n" +
954 " Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, X<String>> () {\n" +
955 " X<String> x;\n" +
956 " Test<A, B, C> t;\n" +
957 " Test<X<Y<Z<String>>>, Y<Z<String>>, Z<String>> bar() {\n" +
958 " return new Test<X<Y<Z<String>>>, Y<Z<String>>, Z<String>>();\n" +
959 " }\n" +
960 " };\n" +
961 " Test<? super A, B, ? extends C> foo(Test<? extends A, ? super B, C> param) {\n" +
962 " return null;\n" +
963 " };\n" +
964 "}\n" +
965 "class A {}\n" +
966 "class B {}\n" +
967 "class C extends X<String> {}\n" +
968 "class X<R> {}\n" +
969 "class Y<S> extends A {}\n" +
970 "class Z<P> extends B {}\n" +
971 "\n"
972 );
973 assertEquals("CU Should not have any problem!",
974 "----------\n" +
975 "----------\n",
976 problemRequestor.problems.toString()
977 );
978 this.resultCollector.showSelection();
979 this.resultCollector.showOffset();
980 return this.workingCopies[0].getType("Types");
981 }
testTypeRefGenericAll02()982 public void testTypeRefGenericAll02() throws CoreException {
983 setUpTypeRefGeneric02();
984 search("*", TYPE, REFERENCES, getJavaSearchWorkingCopiesScope());
985 assertSearchResults(
986 "src/test02/Test.java test02.Test.field:<anonymous>#1 [ Test<A, ? extends B, ? super C> field = new !|Test|!<A, Z<String>, X<String>> () {@91] EXACT_MATCH\n" +
987 "src/test02/Test.java test02.Test.field:<anonymous>#1.x [ !|X|!<String> x;@128] EXACT_MATCH\n" +
988 "src/test02/Test.java test02.Test.field:<anonymous>#1.x [ X<!|String|!> x;@130] EXACT_MATCH\n" +
989 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ !|Test|!<A, B, C> t;@143] EXACT_MATCH\n" +
990 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<!|A|!, B, C> t;@148] EXACT_MATCH\n" +
991 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, !|B|!, C> t;@151] EXACT_MATCH\n" +
992 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, B, !|C|!> t;@154] EXACT_MATCH\n" +
993 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ !|Test|!<X<Y<Z<String>>>, Y<Z<String>>, Z<String>> bar() {@162] EXACT_MATCH\n" +
994 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<!|X|!<Y<Z<String>>>, Y<Z<String>>, Z<String>> bar() {@167] EXACT_MATCH\n" +
995 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<!|Y|!<Z<String>>>, Y<Z<String>>, Z<String>> bar() {@169] EXACT_MATCH\n" +
996 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<!|Z|!<String>>>, Y<Z<String>>, Z<String>> bar() {@171] EXACT_MATCH\n" +
997 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<!|String|!>>>, Y<Z<String>>, Z<String>> bar() {@173] EXACT_MATCH\n" +
998 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, !|Y|!<Z<String>>, Z<String>> bar() {@184] EXACT_MATCH\n" +
999 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<!|Z|!<String>>, Z<String>> bar() {@186] EXACT_MATCH\n" +
1000 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<!|String|!>>, Z<String>> bar() {@188] EXACT_MATCH\n" +
1001 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<String>>, !|Z|!<String>> bar() {@198] EXACT_MATCH\n" +
1002 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<String>>, Z<!|String|!>> bar() {@200] EXACT_MATCH\n" +
1003 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new !|Test|!<X<Y<Z<String>>>, Y<Z<String>>, Z<String>>();@231] EXACT_MATCH\n" +
1004 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<!|X|!<Y<Z<String>>>, Y<Z<String>>, Z<String>>();@236] EXACT_MATCH\n" +
1005 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<!|Y|!<Z<String>>>, Y<Z<String>>, Z<String>>();@238] EXACT_MATCH\n" +
1006 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<!|Z|!<String>>>, Y<Z<String>>, Z<String>>();@240] EXACT_MATCH\n" +
1007 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<!|String|!>>>, Y<Z<String>>, Z<String>>();@242] EXACT_MATCH\n" +
1008 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, !|Y|!<Z<String>>, Z<String>>();@253] EXACT_MATCH\n" +
1009 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<!|Z|!<String>>, Z<String>>();@255] EXACT_MATCH\n" +
1010 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<!|String|!>>, Z<String>>();@257] EXACT_MATCH\n" +
1011 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<String>>, !|Z|!<String>>();@267] EXACT_MATCH\n" +
1012 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<String>>, Z<!|String|!>>();@269] EXACT_MATCH\n" +
1013 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<!|A|!, Z<String>, X<String>> () {@96] EXACT_MATCH\n" +
1014 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, !|Z|!<String>, X<String>> () {@99] EXACT_MATCH\n" +
1015 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<!|String|!>, X<String>> () {@101] EXACT_MATCH\n" +
1016 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, !|X|!<String>> () {@110] EXACT_MATCH\n" +
1017 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, X<!|String|!>> () {@112] EXACT_MATCH\n" +
1018 "src/test02/Test.java test02.Test.field [ !|Test|!<A, ? extends B, ? super C> field = new Test<A, Z<String>, X<String>> () {@47] EXACT_MATCH\n" +
1019 "src/test02/Test.java test02.Test.field [ Test<!|A|!, ? extends B, ? super C> field = new Test<A, Z<String>, X<String>> () {@52] EXACT_MATCH\n" +
1020 "src/test02/Test.java test02.Test.field [ Test<A, ? extends !|B|!, ? super C> field = new Test<A, Z<String>, X<String>> () {@65] EXACT_MATCH\n" +
1021 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super !|C|!> field = new Test<A, Z<String>, X<String>> () {@76] EXACT_MATCH\n" +
1022 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ !|Test|!<? super A, B, ? extends C> foo(Test<? extends A, ? super B, C> param) {@290] EXACT_MATCH\n" +
1023 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super !|A|!, B, ? extends C> foo(Test<? extends A, ? super B, C> param) {@303] EXACT_MATCH\n" +
1024 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, !|B|!, ? extends C> foo(Test<? extends A, ? super B, C> param) {@306] EXACT_MATCH\n" +
1025 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends !|C|!> foo(Test<? extends A, ? super B, C> param) {@319] EXACT_MATCH\n" +
1026 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(!|Test|!<? extends A, ? super B, C> param) {@326] EXACT_MATCH\n" +
1027 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends !|A|!, ? super B, C> param) {@341] EXACT_MATCH\n" +
1028 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends A, ? super !|B|!, C> param) {@352] EXACT_MATCH\n" +
1029 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends A, ? super B, !|C|!> param) {@355] EXACT_MATCH\n" +
1030 "src/test02/Test.java test02.C [class C extends !|X|!<String> {}@426] EXACT_MATCH\n" +
1031 "src/test02/Test.java test02.C [class C extends X<!|String|!> {}@428] EXACT_MATCH\n" +
1032 "src/test02/Test.java test02.Y [class Y<S> extends !|A|! {}@472] EXACT_MATCH\n" +
1033 "src/test02/Test.java test02.Z [class Z<P> extends !|B|! {}@496] EXACT_MATCH"
1034 );
1035 }
testTypeRefGenericAll02_AllGenericFlags()1036 public void testTypeRefGenericAll02_AllGenericFlags() throws CoreException {
1037 setUpTypeRefGeneric02();
1038 search("*", TYPE, ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
1039 assertSearchResults(
1040 "src/test02/Test.java test02.Test.field:<anonymous>#1.x [ X<!|String|!> x;@130] EXACT_MATCH\n" +
1041 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<!|A|!, B, C> t;@148] EXACT_MATCH\n" +
1042 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, !|B|!, C> t;@151] EXACT_MATCH\n" +
1043 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, B, !|C|!> t;@154] EXACT_MATCH\n" +
1044 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<!|X|!<Y<Z<String>>>, Y<Z<String>>, Z<String>> bar() {@167] EXACT_MATCH\n" +
1045 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<!|Y|!<Z<String>>>, Y<Z<String>>, Z<String>> bar() {@169] EXACT_MATCH\n" +
1046 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<!|Z|!<String>>>, Y<Z<String>>, Z<String>> bar() {@171] EXACT_MATCH\n" +
1047 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<!|String|!>>>, Y<Z<String>>, Z<String>> bar() {@173] EXACT_MATCH\n" +
1048 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, !|Y|!<Z<String>>, Z<String>> bar() {@184] EXACT_MATCH\n" +
1049 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<!|Z|!<String>>, Z<String>> bar() {@186] EXACT_MATCH\n" +
1050 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<!|String|!>>, Z<String>> bar() {@188] EXACT_MATCH\n" +
1051 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<String>>, !|Z|!<String>> bar() {@198] EXACT_MATCH\n" +
1052 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<String>>, Z<!|String|!>> bar() {@200] EXACT_MATCH\n" +
1053 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<!|X|!<Y<Z<String>>>, Y<Z<String>>, Z<String>>();@236] EXACT_MATCH\n" +
1054 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<!|Y|!<Z<String>>>, Y<Z<String>>, Z<String>>();@238] EXACT_MATCH\n" +
1055 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<!|Z|!<String>>>, Y<Z<String>>, Z<String>>();@240] EXACT_MATCH\n" +
1056 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<!|String|!>>>, Y<Z<String>>, Z<String>>();@242] EXACT_MATCH\n" +
1057 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, !|Y|!<Z<String>>, Z<String>>();@253] EXACT_MATCH\n" +
1058 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<!|Z|!<String>>, Z<String>>();@255] EXACT_MATCH\n" +
1059 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<!|String|!>>, Z<String>>();@257] EXACT_MATCH\n" +
1060 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<String>>, !|Z|!<String>>();@267] EXACT_MATCH\n" +
1061 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<String>>, Z<!|String|!>>();@269] EXACT_MATCH\n" +
1062 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<!|A|!, Z<String>, X<String>> () {@96] EXACT_MATCH\n" +
1063 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, !|Z|!<String>, X<String>> () {@99] EXACT_MATCH\n" +
1064 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<!|String|!>, X<String>> () {@101] EXACT_MATCH\n" +
1065 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, !|X|!<String>> () {@110] EXACT_MATCH\n" +
1066 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, X<!|String|!>> () {@112] EXACT_MATCH\n" +
1067 "src/test02/Test.java test02.Test.field [ Test<!|A|!, ? extends B, ? super C> field = new Test<A, Z<String>, X<String>> () {@52] EXACT_MATCH\n" +
1068 "src/test02/Test.java test02.Test.field [ Test<A, ? extends !|B|!, ? super C> field = new Test<A, Z<String>, X<String>> () {@65] EXACT_MATCH\n" +
1069 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super !|C|!> field = new Test<A, Z<String>, X<String>> () {@76] EXACT_MATCH\n" +
1070 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super !|A|!, B, ? extends C> foo(Test<? extends A, ? super B, C> param) {@303] EXACT_MATCH\n" +
1071 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, !|B|!, ? extends C> foo(Test<? extends A, ? super B, C> param) {@306] EXACT_MATCH\n" +
1072 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends !|C|!> foo(Test<? extends A, ? super B, C> param) {@319] EXACT_MATCH\n" +
1073 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends !|A|!, ? super B, C> param) {@341] EXACT_MATCH\n" +
1074 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends A, ? super !|B|!, C> param) {@352] EXACT_MATCH\n" +
1075 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends A, ? super B, !|C|!> param) {@355] EXACT_MATCH\n" +
1076 "src/test02/Test.java test02.C [class C extends X<!|String|!> {}@428] EXACT_MATCH"
1077 );
1078 }
testTypeRefGenericAll02_TypeArgumentl()1079 public void testTypeRefGenericAll02_TypeArgumentl() throws CoreException {
1080 setUpTypeRefGeneric02();
1081 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1082 assertSearchResults(
1083 "src/test02/Test.java test02.Test.field:<anonymous>#1.x [ X<!|String|!> x;@130] EXACT_MATCH\n" +
1084 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<!|A|!, B, C> t;@148] EXACT_MATCH\n" +
1085 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, !|B|!, C> t;@151] EXACT_MATCH\n" +
1086 "src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, B, !|C|!> t;@154] EXACT_MATCH\n" +
1087 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<!|X|!<Y<Z<String>>>, Y<Z<String>>, Z<String>> bar() {@167] EXACT_MATCH\n" +
1088 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<!|Y|!<Z<String>>>, Y<Z<String>>, Z<String>> bar() {@169] EXACT_MATCH\n" +
1089 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<!|Z|!<String>>>, Y<Z<String>>, Z<String>> bar() {@171] EXACT_MATCH\n" +
1090 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<!|String|!>>>, Y<Z<String>>, Z<String>> bar() {@173] EXACT_MATCH\n" +
1091 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, !|Y|!<Z<String>>, Z<String>> bar() {@184] EXACT_MATCH\n" +
1092 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<!|Z|!<String>>, Z<String>> bar() {@186] EXACT_MATCH\n" +
1093 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<!|String|!>>, Z<String>> bar() {@188] EXACT_MATCH\n" +
1094 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<String>>, !|Z|!<String>> bar() {@198] EXACT_MATCH\n" +
1095 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ Test<X<Y<Z<String>>>, Y<Z<String>>, Z<!|String|!>> bar() {@200] EXACT_MATCH\n" +
1096 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<!|X|!<Y<Z<String>>>, Y<Z<String>>, Z<String>>();@236] EXACT_MATCH\n" +
1097 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<!|Y|!<Z<String>>>, Y<Z<String>>, Z<String>>();@238] EXACT_MATCH\n" +
1098 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<!|Z|!<String>>>, Y<Z<String>>, Z<String>>();@240] EXACT_MATCH\n" +
1099 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<!|String|!>>>, Y<Z<String>>, Z<String>>();@242] EXACT_MATCH\n" +
1100 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, !|Y|!<Z<String>>, Z<String>>();@253] EXACT_MATCH\n" +
1101 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<!|Z|!<String>>, Z<String>>();@255] EXACT_MATCH\n" +
1102 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<!|String|!>>, Z<String>>();@257] EXACT_MATCH\n" +
1103 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<String>>, !|Z|!<String>>();@267] EXACT_MATCH\n" +
1104 "src/test02/Test.java Test<X<Y<Z<String>>>,Y<Z<String>>,Z<String>> test02.Test.field:<anonymous>#1.bar() [ return new Test<X<Y<Z<String>>>, Y<Z<String>>, Z<!|String|!>>();@269] EXACT_MATCH\n" +
1105 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<!|A|!, Z<String>, X<String>> () {@96] EXACT_MATCH\n" +
1106 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, !|Z|!<String>, X<String>> () {@99] EXACT_MATCH\n" +
1107 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<!|String|!>, X<String>> () {@101] EXACT_MATCH\n" +
1108 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, !|X|!<String>> () {@110] EXACT_MATCH\n" +
1109 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, X<!|String|!>> () {@112] EXACT_MATCH\n" +
1110 "src/test02/Test.java test02.Test.field [ Test<!|A|!, ? extends B, ? super C> field = new Test<A, Z<String>, X<String>> () {@52] EXACT_MATCH\n" +
1111 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, !|B|!, ? extends C> foo(Test<? extends A, ? super B, C> param) {@306] EXACT_MATCH\n" +
1112 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends A, ? super B, !|C|!> param) {@355] EXACT_MATCH\n" +
1113 "src/test02/Test.java test02.C [class C extends X<!|String|!> {}@428] EXACT_MATCH"
1114 );
1115 }
testTypeRefGenericAll02_TypeVariableBound()1116 public void testTypeRefGenericAll02_TypeVariableBound() throws CoreException {
1117 setUpTypeRefGeneric02();
1118 search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1119 assertSearchResults("");
1120 }
testTypeRefGenericAll02_WildcardBound()1121 public void testTypeRefGenericAll02_WildcardBound() throws CoreException {
1122 setUpTypeRefGeneric02();
1123 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1124 assertSearchResults(
1125 "src/test02/Test.java test02.Test.field [ Test<A, ? extends !|B|!, ? super C> field = new Test<A, Z<String>, X<String>> () {@65] EXACT_MATCH\n" +
1126 "src/test02/Test.java test02.Test.field [ Test<A, ? extends B, ? super !|C|!> field = new Test<A, Z<String>, X<String>> () {@76] EXACT_MATCH\n" +
1127 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super !|A|!, B, ? extends C> foo(Test<? extends A, ? super B, C> param) {@303] EXACT_MATCH\n" +
1128 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends !|C|!> foo(Test<? extends A, ? super B, C> param) {@319] EXACT_MATCH\n" +
1129 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends !|A|!, ? super B, C> param) {@341] EXACT_MATCH\n" +
1130 "src/test02/Test.java Test<? super A,B,? extends C> test02.Test.foo(Test<? extends A,? super B,C>) [ Test<? super A, B, ? extends C> foo(Test<? extends A, ? super !|B|!, C> param) {@352] EXACT_MATCH"
1131 );
1132 }
1133
1134 /*
1135 * References to all qualified types (using '*' string pattern)
1136 */
setUpTypeRefGenericMethod()1137 private void setUpTypeRefGenericMethod() throws JavaModelException {
1138 final ProblemRequestor problemRequestor = new ProblemRequestor();
1139 this.wcOwner = new WorkingCopyOwner() {
1140 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
1141 return problemRequestor;
1142 }
1143 };
1144 this.workingCopies = new ICompilationUnit[1];
1145 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test/Test.java",
1146 "package test;\n" +
1147 "public class Test {\n" +
1148 " void foo(A<String> a) {\n" +
1149 " a.<String>foo();\n" +
1150 " a.<A<? extends Exception>>foo();\n" +
1151 " }\n" +
1152 "}\n" +
1153 "class A<T> {\n" +
1154 " <U> void foo() {}\n" +
1155 "}\n"
1156 );
1157 assertEquals("CU Should not have any problem!",
1158 "----------\n" +
1159 "----------\n",
1160 problemRequestor.problems.toString()
1161 );
1162 this.resultCollector.showSelection();
1163 this.resultCollector.showOffset();
1164 }
testTypeRefGenericMethod_AllGenericFlags()1165 public void testTypeRefGenericMethod_AllGenericFlags() throws CoreException {
1166 setUpTypeRefGenericMethod();
1167 search("*", TYPE, ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
1168 assertSearchResults(
1169 "src/test/Test.java void test.Test.foo(A<String>) [ void foo(A<!|String|!> a) {@46] EXACT_MATCH\n" +
1170 "src/test/Test.java void test.Test.foo(A<String>) [ a.<!|String|!>foo();@64] EXACT_MATCH\n" +
1171 "src/test/Test.java void test.Test.foo(A<String>) [ a.<!|A|!<? extends Exception>>foo();@83] EXACT_MATCH\n" +
1172 "src/test/Test.java void test.Test.foo(A<String>) [ a.<A<? extends !|Exception|!>>foo();@95] EXACT_MATCH"
1173 );
1174 }
testTypeRefGenericMethod_TypeArgument()1175 public void testTypeRefGenericMethod_TypeArgument() throws CoreException {
1176 setUpTypeRefGenericMethod();
1177 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1178 assertSearchResults(
1179 "src/test/Test.java void test.Test.foo(A<String>) [ void foo(A<!|String|!> a) {@46] EXACT_MATCH\n" +
1180 "src/test/Test.java void test.Test.foo(A<String>) [ a.<!|String|!>foo();@64] EXACT_MATCH\n" +
1181 "src/test/Test.java void test.Test.foo(A<String>) [ a.<!|A|!<? extends Exception>>foo();@83] EXACT_MATCH"
1182 );
1183 }
testTypeRefGenericMethod_TypeVariableBound()1184 public void testTypeRefGenericMethod_TypeVariableBound() throws CoreException {
1185 setUpTypeRefGenericMethod();
1186 search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1187 assertSearchResults("");
1188 }
testTypeRefGenericMethod_WildcardBound()1189 public void testTypeRefGenericMethod_WildcardBound() throws CoreException {
1190 setUpTypeRefGenericMethod();
1191 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1192 assertSearchResults(
1193 "src/test/Test.java void test.Test.foo(A<String>) [ a.<A<? extends !|Exception|!>>foo();@95] EXACT_MATCH"
1194 );
1195 }
1196
1197 /*
1198 * References to all qualified types (using '*' string pattern)
1199 */
setUpTypeRefQualifiedAll()1200 private void setUpTypeRefQualifiedAll() throws JavaModelException {
1201 final ProblemRequestor problemRequestor = new ProblemRequestor();
1202 this.wcOwner = new WorkingCopyOwner() {
1203 public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
1204 return problemRequestor;
1205 }
1206 };
1207 this.workingCopies = new ICompilationUnit[3];
1208 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
1209 "package type.def;\n" +
1210 "@Bug\n" +
1211 "@ATest\n" +
1212 "public class Types extends Exception implements ITest1, ITest2 {\n" +
1213 " ITest1 test1;\n" +
1214 " ITest2 test2;\n" +
1215 "}\n" +
1216 "@Bug\n" +
1217 "interface ITest1 {}\n" +
1218 "@ATest\n" +
1219 "interface ITest2 extends ITest1 {}\n" +
1220 "@Bug\n" +
1221 "@ATest\n" +
1222 "enum ETest {}\n" +
1223 "@Bug\n" +
1224 "@interface ATest {}\n"
1225 );
1226 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/type/def/Bug.java",
1227 "package type.def;\n" +
1228 "public @interface Bug {\n" +
1229 " int num() default 0;\n" +
1230 " String comment() default \"\";\n" +
1231 "}\n"
1232 );
1233 this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/all/types/ref/TestTypes.java",
1234 "package all.types.ref;\n" +
1235 "\n" +
1236 "@type.def.Bug(num=155013)\n" +
1237 "public class TestTypes extends type.def.Types {\n" +
1238 " @type.def.Bug(comment=\"field\")\n" +
1239 " type.def.Types field = new type.def.Types(), local, other = new type.def.Types();\n" +
1240 " {\n" +
1241 " Object o;\n" +
1242 " type.def.Types t;\n" +
1243 " if (this.field == null) {\n" +
1244 " try {\n" +
1245 " t = new TestTypes();\n" +
1246 " } catch (RuntimeException e) {\n" +
1247 " t = new type.def.Types();\n" +
1248 " } \n" +
1249 " } else {\n" +
1250 " o = this.field;\n" +
1251 " t = (type.def.Types) o;\n" +
1252 " }\n" +
1253 " local = t;\n" +
1254 " };\n" +
1255 " @type.def.Bug(comment=\"method\", num=155013)\n" +
1256 " type.def.Types method(type.def.Types param) throws type.def.Types {\n" +
1257 " Object obj = new type.def.Types();\n" +
1258 " type.def.Types local = (type.def.Types) obj;\n" +
1259 " return local;\n" +
1260 " }\n" +
1261 " type.def.Bug bar(type.def.Bug bug) {\n" +
1262 " try {\n" +
1263 " method(this);\n" +
1264 " }\n" +
1265 " catch (type.def.Types ex) {}\n" +
1266 " catch (Exception ex) {}\n" +
1267 " return bug; \n" +
1268 " }\n" +
1269 " // Other types references\n" +
1270 " Object object;\n" +
1271 " String str;\n" +
1272 " TestTypes() throws type.def.Types, RuntimeException {\n" +
1273 " if (this.object instanceof String) {\n" +
1274 " this.str = (String) this.object;\n" +
1275 " } else {\n" +
1276 " this.str = new String();\n" +
1277 " this.object = new Object();\n" +
1278 " }\n" +
1279 " }\n" +
1280 "}\n"
1281 );
1282 assertEquals("CU Should not have any problem!",
1283 "----------\n" +
1284 "----------\n",
1285 problemRequestor.problems.toString()
1286 );
1287 this.resultCollector.showSelection();
1288 this.resultCollector.showOffset();
1289 }
testTypeRefQualifiedAll_Allocation()1290 public void testTypeRefQualifiedAll_Allocation() throws CoreException {
1291 setUpTypeRefQualifiedAll();
1292 search("*", TYPE, CLASS_INSTANCE_CREATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1293 assertSearchResults(
1294 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ type.def.Types field = new !|type.def.Types|!(), local, other = new type.def.Types();@158] EXACT_MATCH\n" +
1295 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.other [ type.def.Types field = new type.def.Types(), local, other = new !|type.def.Types|!();@195] EXACT_MATCH\n" +
1296 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|TestTypes|!();@297] EXACT_MATCH\n" +
1297 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|type.def.Types|!();@356] EXACT_MATCH\n" +
1298 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ Object obj = new !|type.def.Types|!();@591] EXACT_MATCH\n" +
1299 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = new !|String|!();@1032] EXACT_MATCH\n" +
1300 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.object = new !|Object|!();@1063] EXACT_MATCH"
1301 );
1302 }
testTypeRefQualifiedAll_Annotation()1303 public void testTypeRefQualifiedAll_Annotation() throws CoreException {
1304 setUpTypeRefQualifiedAll();
1305 search("*", TYPE, ANNOTATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1306 assertSearchResults(
1307 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes [@!|type.def.Bug|!(num=155013)@25] EXACT_MATCH\n" +
1308 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ @!|type.def.Bug|!(comment=\"field\")@100] EXACT_MATCH\n" +
1309 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ @!|type.def.Bug|!(comment=\"method\", num=155013)@460] EXACT_MATCH\n" +
1310 "src/type/def/Types.java type.def.Types [@!|Bug|!@19] EXACT_MATCH\n" +
1311 "src/type/def/Types.java type.def.Types [@!|ATest|!@24] EXACT_MATCH\n" +
1312 "src/type/def/Types.java type.def.ITest1 [@!|Bug|!@128] EXACT_MATCH\n" +
1313 "src/type/def/Types.java type.def.ITest2 [@!|ATest|!@153] EXACT_MATCH\n" +
1314 "src/type/def/Types.java type.def.ETest [@!|Bug|!@195] EXACT_MATCH\n" +
1315 "src/type/def/Types.java type.def.ETest [@!|ATest|!@200] EXACT_MATCH\n" +
1316 "src/type/def/Types.java type.def.ATest [@!|Bug|!@221] EXACT_MATCH"
1317 );
1318 }
testTypeRefQualifiedAll_Cast()1319 public void testTypeRefQualifiedAll_Cast() throws CoreException {
1320 setUpTypeRefQualifiedAll();
1321 search("*", TYPE, CAST_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1322 assertSearchResults(
1323 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = (!|type.def.Types|!) o;@418] EXACT_MATCH\n" +
1324 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ type.def.Types local = (!|type.def.Types|!) obj;@635] EXACT_MATCH\n" +
1325 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = (!|String|!) this.object;@982] EXACT_MATCH"
1326 );
1327 }
testTypeRefQualifiedAll_Catch()1328 public void testTypeRefQualifiedAll_Catch() throws CoreException {
1329 setUpTypeRefQualifiedAll();
1330 search("*", TYPE, CATCH_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1331 assertSearchResults(
1332 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ } catch (!|RuntimeException|! e) {@322] EXACT_MATCH\n" +
1333 "src/all/types/ref/TestTypes.java type.def.Bug all.types.ref.TestTypes.bar(type.def.Bug) [ catch (!|type.def.Types|! ex) {}@751] EXACT_MATCH\n" +
1334 "src/all/types/ref/TestTypes.java type.def.Bug all.types.ref.TestTypes.bar(type.def.Bug) [ catch (!|Exception|! ex) {}@782] EXACT_MATCH"
1335 );
1336 }
testTypeRefQualifiedAll_Field()1337 public void testTypeRefQualifiedAll_Field() throws CoreException {
1338 setUpTypeRefQualifiedAll();
1339 search("*", TYPE, FIELD_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1340 assertSearchResults(
1341 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ !|type.def.Types|! field = new type.def.Types(), local, other = new type.def.Types();@131] EXACT_MATCH\n" +
1342 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.object [ !|Object|! object;@845] EXACT_MATCH\n" +
1343 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.str [ !|String|! str;@861] EXACT_MATCH\n" +
1344 "src/type/def/Types.java type.def.Types.test1 [ !|ITest1|! test1;@96] EXACT_MATCH\n" +
1345 "src/type/def/Types.java type.def.Types.test2 [ !|ITest2|! test2;@111] EXACT_MATCH"
1346 );
1347 }
testTypeRefQualifiedAll_Import()1348 public void testTypeRefQualifiedAll_Import() throws CoreException {
1349 setUpTypeRefQualifiedAll();
1350 search("*", TYPE, IMPORT_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1351 assertSearchResults("");
1352 }
testTypeRefQualifiedAll_MethodParameter()1353 public void testTypeRefQualifiedAll_MethodParameter() throws CoreException {
1354 setUpTypeRefQualifiedAll();
1355 search("*", TYPE, PARAMETER_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1356 assertSearchResults(
1357 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ type.def.Types method(!|type.def.Types|! param) throws type.def.Types {@526] EXACT_MATCH\n" +
1358 "src/all/types/ref/TestTypes.java type.def.Bug all.types.ref.TestTypes.bar(type.def.Bug) [ type.def.Bug bar(!|type.def.Bug|! bug) {@693] EXACT_MATCH"
1359 );
1360 }
testTypeRefQualifiedAll_Return()1361 public void testTypeRefQualifiedAll_Return() throws CoreException {
1362 setUpTypeRefQualifiedAll();
1363 search("*", TYPE, RETURN_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1364 assertSearchResults(
1365 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ !|type.def.Types|! method(type.def.Types param) throws type.def.Types {@504] EXACT_MATCH\n" +
1366 "src/all/types/ref/TestTypes.java type.def.Bug all.types.ref.TestTypes.bar(type.def.Bug) [ !|type.def.Bug|! bar(type.def.Bug bug) {@676] EXACT_MATCH\n" +
1367 "src/type/def/Bug.java int type.def.Bug.num() [ !|int|! num() default 0;@43] EXACT_MATCH\n" +
1368 "src/type/def/Bug.java String type.def.Bug.comment() [ !|String|! comment() default \"\";@65] EXACT_MATCH"
1369 );
1370 }
testTypeRefQualifiedAll_Supertype()1371 public void testTypeRefQualifiedAll_Supertype() throws CoreException {
1372 setUpTypeRefQualifiedAll();
1373 search("*", TYPE, SUPERTYPE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1374 assertSearchResults(
1375 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes [public class TestTypes extends !|type.def.Types|! {@81] EXACT_MATCH\n" +
1376 "src/type/def/Types.java type.def.Types [public class Types extends !|Exception|! implements ITest1, ITest2 {@57] EXACT_MATCH\n" +
1377 "src/type/def/Types.java type.def.Types [public class Types extends Exception implements !|ITest1|!, ITest2 {@78] EXACT_MATCH\n" +
1378 "src/type/def/Types.java type.def.Types [public class Types extends Exception implements ITest1, !|ITest2|! {@86] EXACT_MATCH\n" +
1379 "src/type/def/Types.java type.def.ITest2 [interface ITest2 extends !|ITest1|! {}@184] EXACT_MATCH"
1380 );
1381 }
testTypeRefQualifiedAll_Throws()1382 public void testTypeRefQualifiedAll_Throws() throws CoreException {
1383 setUpTypeRefQualifiedAll();
1384 search("*", TYPE, THROWS_CLAUSE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1385 assertSearchResults(
1386 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ type.def.Types method(type.def.Types param) throws !|type.def.Types|! {@555] EXACT_MATCH\n" +
1387 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws !|type.def.Types|!, RuntimeException {@893] EXACT_MATCH\n" +
1388 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws type.def.Types, !|RuntimeException|! {@909] EXACT_MATCH"
1389 );
1390 }
testTypeRefQualifiedAll_Variable()1391 public void testTypeRefQualifiedAll_Variable() throws CoreException {
1392 setUpTypeRefQualifiedAll();
1393 search("*", TYPE, LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
1394 assertSearchResults(
1395 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|Object|! o;@218] EXACT_MATCH\n" +
1396 "src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|type.def.Types|! t;@230] EXACT_MATCH\n" +
1397 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ !|Object|! obj = new type.def.Types();@574] EXACT_MATCH\n" +
1398 "src/all/types/ref/TestTypes.java type.def.Types all.types.ref.TestTypes.method(type.def.Types) [ !|type.def.Types|! local = (type.def.Types) obj;@611] EXACT_MATCH"
1399 );
1400 }
1401
1402 /*
1403 * Tests using classes defined in JavaSearch15 project
1404 */
testTypeRefGenericAllG1_TypeArgument()1405 public void testTypeRefGenericAllG1_TypeArgument() throws CoreException {
1406 IType type = getCompilationUnit("JavaSearch15/src/g1/t/s/ref/R3.java").getType("R3");
1407 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1408 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, scope);
1409 assertSearchResults(
1410 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_obj [ public Generic<!|Object|!>.MemberGeneric<Object> gen_obj;@393] EXACT_MATCH\n" +
1411 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_obj [ public Generic<Object>.MemberGeneric<!|Object|!> gen_obj;@415] EXACT_MATCH\n" +
1412 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_exc [ public Generic<!|Exception|!>.MemberGeneric<Exception> gen_exc;@448] EXACT_MATCH\n" +
1413 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_exc [ public Generic<Exception>.MemberGeneric<!|Exception|!> gen_exc;@473] EXACT_MATCH\n" +
1414 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_obj [ public g1.t.s.def.Generic<!|Object|!>.MemberGeneric<Object> qgen_obj;@803] EXACT_MATCH\n" +
1415 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_obj [ public g1.t.s.def.Generic<Object>.MemberGeneric<!|Object|!> qgen_obj;@825] EXACT_MATCH\n" +
1416 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_exc [ public g1.t.s.def.Generic<!|Exception|!>.MemberGeneric<Exception> qgen_exc;@870] EXACT_MATCH\n" +
1417 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_exc [ public g1.t.s.def.Generic<Exception>.MemberGeneric<!|Exception|!> qgen_exc;@895] EXACT_MATCH"
1418 );
1419 }
testTypeRefGenericAllG1_WildcardBounds()1420 public void testTypeRefGenericAllG1_WildcardBounds() throws CoreException {
1421 IType type = getCompilationUnit("JavaSearch15/src/g1/t/s/ref/R3.java").getType("R3");
1422 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1423 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, scope);
1424 assertSearchResults(
1425 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_thr [ public Generic<? extends !|Throwable|!>.MemberGeneric<? super RuntimeException> gen_thr;@564] EXACT_MATCH\n" +
1426 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_thr [ public Generic<? extends Throwable>.MemberGeneric<? super !|RuntimeException|!> gen_thr;@597] EXACT_MATCH\n" +
1427 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_run [ public Generic<? super !|RuntimeException|!>.MemberGeneric<? extends Throwable> gen_run;@648] EXACT_MATCH\n" +
1428 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.gen_run [ public Generic<? super RuntimeException>.MemberGeneric<? extends !|Throwable|!> gen_run;@690] EXACT_MATCH\n" +
1429 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_thr [ public g1.t.s.def.Generic<? extends !|Throwable|!>.MemberGeneric<? super RuntimeException> qgen_thr;@1010] EXACT_MATCH\n" +
1430 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_thr [ public g1.t.s.def.Generic<? extends Throwable>.MemberGeneric<? super !|RuntimeException|!> qgen_thr;@1043] EXACT_MATCH\n" +
1431 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_run [ public g1.t.s.def.Generic<? super !|RuntimeException|!>.MemberGeneric<? extends Throwable> qgen_run;@1106] EXACT_MATCH\n" +
1432 "src/g1/t/s/ref/R3.java g1.t.s.ref.R3.qgen_run [ public g1.t.s.def.Generic<? super RuntimeException>.MemberGeneric<? extends !|Throwable|!> qgen_run;@1148] EXACT_MATCH"
1433 );
1434 }
testTypeRefGenericAllG2_TypeArgument()1435 public void testTypeRefGenericAllG2_TypeArgument() throws CoreException {
1436 // TODO The JavaSearch15/src/g2/f/s/def/R3.java should be updated as it contains compilation errors!
1437 IType type = getCompilationUnit("JavaSearch15/src/g2/f/s/def/R3.java").getType("R3");
1438 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1439 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, scope);
1440 assertSearchResults(
1441 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<!|Object|!>.MemberGeneric<Object> member = new Generic<Object>().new MemberGeneric<Object>();@177] EXACT_MATCH\n" +
1442 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<Object>.MemberGeneric<!|Object|!> member = new Generic<Object>().new MemberGeneric<Object>();@199] EXACT_MATCH\n" +
1443 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<Object>.MemberGeneric<Object> member = new Generic<!|Object|!>().new MemberGeneric<Object>();@228] EXACT_MATCH\n" +
1444 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<Object>.MemberGeneric<Object> member = new Generic<Object>().new MemberGeneric<!|Object|!>();@256] EXACT_MATCH\n" +
1445 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<!|Exception|!>.MemberGeneric<Exception> member = new Generic<Exception>().new MemberGeneric<Exception>();@306] EXACT_MATCH\n" +
1446 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<Exception>.MemberGeneric<!|Exception|!> member = new Generic<Exception>().new MemberGeneric<Exception>();@331] EXACT_MATCH\n" +
1447 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<Exception>.MemberGeneric<Exception> member = new Generic<!|Exception|!>().new MemberGeneric<Exception>();@363] EXACT_MATCH\n" +
1448 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<Exception>.MemberGeneric<Exception> member = new Generic<Exception>().new MemberGeneric<!|Exception|!>();@394] EXACT_MATCH\n" +
1449 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<!|Exception|!>().new MemberGeneric<Exception>();@633] EXACT_MATCH\n" +
1450 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<Exception>().new MemberGeneric<!|Exception|!>();@664] EXACT_MATCH\n" +
1451 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<!|Exception|!>().new MemberGeneric<? extends Throwable>();@794] EXACT_MATCH\n" +
1452 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<? extends Throwable>().new MemberGeneric<!|Exception|!>();@1006] EXACT_MATCH\n" +
1453 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<!|Exception|!>().new MemberGeneric<Exception>();@1327] EXACT_MATCH\n" +
1454 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<Exception>().new MemberGeneric<!|Exception|!>();@1358] EXACT_MATCH\n" +
1455 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<!|Exception|!>().new MemberGeneric<? super RuntimeException>();@1498] EXACT_MATCH\n" +
1456 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<? super RuntimeException>().new MemberGeneric<!|Exception|!>();@1730] EXACT_MATCH"
1457 );
1458 }
testTypeRefGenericAllG2_WildcardBounds()1459 public void testTypeRefGenericAllG2_WildcardBounds() throws CoreException {
1460 // TODO The JavaSearch15/src/g2/f/s/def/R3.java should be updated as it contains compilation errors!
1461 IType type = getCompilationUnit("JavaSearch15/src/g2/f/s/def/R3.java").getType("R3");
1462 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1463 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, scope);
1464 assertSearchResults(
1465 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends !|Throwable|!>.MemberGeneric<? extends Throwable> member = new Generic<Exception>().new MemberGeneric<Exception>();@566] EXACT_MATCH\n" +
1466 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends !|Throwable|!> member = new Generic<Exception>().new MemberGeneric<Exception>();@601] EXACT_MATCH\n" +
1467 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends !|Throwable|!>.MemberGeneric<? extends Throwable> member = new Generic<Exception>().new MemberGeneric<? extends Throwable>();@727] EXACT_MATCH\n" +
1468 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends !|Throwable|!> member = new Generic<Exception>().new MemberGeneric<? extends Throwable>();@762] EXACT_MATCH\n" +
1469 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<Exception>().new MemberGeneric<? extends !|Throwable|!>();@835] EXACT_MATCH\n" +
1470 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends !|Throwable|!>.MemberGeneric<? extends Throwable> member = new Generic<? extends Throwable>().new MemberGeneric<Exception>();@898] EXACT_MATCH\n" +
1471 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends !|Throwable|!> member = new Generic<? extends Throwable>().new MemberGeneric<Exception>();@933] EXACT_MATCH\n" +
1472 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<? extends !|Throwable|!>().new MemberGeneric<Exception>();@975] EXACT_MATCH\n" +
1473 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends !|Throwable|!>.MemberGeneric<? extends Throwable> member = new Generic<? extends Throwable>().new MemberGeneric<? extends Throwable>();@1069] EXACT_MATCH\n" +
1474 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends !|Throwable|!> member = new Generic<? extends Throwable>().new MemberGeneric<? extends Throwable>();@1104] EXACT_MATCH\n" +
1475 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<? extends !|Throwable|!>().new MemberGeneric<? extends Throwable>();@1146] EXACT_MATCH\n" +
1476 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? extends Throwable>.MemberGeneric<? extends Throwable> member = new Generic<? extends Throwable>().new MemberGeneric<? extends !|Throwable|!>();@1187] EXACT_MATCH\n" +
1477 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super !|RuntimeException|!>.MemberGeneric<? super RuntimeException> member = new Generic<Exception>().new MemberGeneric<Exception>();@1248] EXACT_MATCH\n" +
1478 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super !|RuntimeException|!> member = new Generic<Exception>().new MemberGeneric<Exception>();@1288] EXACT_MATCH\n" +
1479 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super !|RuntimeException|!>.MemberGeneric<? super RuntimeException> member = new Generic<Exception>().new MemberGeneric<? super RuntimeException>();@1419] EXACT_MATCH\n" +
1480 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super !|RuntimeException|!> member = new Generic<Exception>().new MemberGeneric<? super RuntimeException>();@1459] EXACT_MATCH\n" +
1481 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<Exception>().new MemberGeneric<? super !|RuntimeException|!>();@1537] EXACT_MATCH\n" +
1482 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super !|RuntimeException|!>.MemberGeneric<? super RuntimeException> member = new Generic<? super RuntimeException>().new MemberGeneric<Exception>();@1605] EXACT_MATCH\n" +
1483 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super !|RuntimeException|!> member = new Generic<? super RuntimeException>().new MemberGeneric<Exception>();@1645] EXACT_MATCH\n" +
1484 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<? super !|RuntimeException|!>().new MemberGeneric<Exception>();@1692] EXACT_MATCH\n" +
1485 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super !|RuntimeException|!>.MemberGeneric<? super RuntimeException> member = new Generic<? super RuntimeException>().new MemberGeneric<? super RuntimeException>();@1791] EXACT_MATCH\n" +
1486 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super !|RuntimeException|!> member = new Generic<? super RuntimeException>().new MemberGeneric<? super RuntimeException>();@1831] EXACT_MATCH\n" +
1487 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<? super !|RuntimeException|!>().new MemberGeneric<? super RuntimeException>();@1878] EXACT_MATCH\n" +
1488 "src/g2/f/s/def/R3.java g2.f.s.def.R3.{} [ Generic<? super RuntimeException>.MemberGeneric<? super RuntimeException> member = new Generic<? super RuntimeException>().new MemberGeneric<? super !|RuntimeException|!>();@1924] EXACT_MATCH"
1489 );
1490 }
testTypeRefGenericAllG3R3_TypeArgument()1491 public void testTypeRefGenericAllG3R3_TypeArgument() throws CoreException {
1492 IType type = getCompilationUnit("JavaSearch15/src/g3/t/ref/R3.java").getType("R3");
1493 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1494 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1495 assertSearchResults(
1496 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_wld [ public GS<!|GM<?, ?, ?>.Generic|!<?, ?, ?>>.Generic<?> sgsm_wld;@321] EXACT_MATCH\n" +
1497 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_www [ public GS<!|GM<GM<?, ?, ?>.Generic<?,?,?>,GM<?, ?, ?>.Generic<?,?,?>,GM<?, ?, ?>.Generic<?,?,?>>.Generic|!<?,?,?>>.Generic<?> sgsm_www;@383] EXACT_MATCH\n" +
1498 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_www [ public GS<GM<!|GM<?, ?, ?>.Generic|!<?,?,?>,GM<?, ?, ?>.Generic<?,?,?>,GM<?, ?, ?>.Generic<?,?,?>>.Generic<?,?,?>>.Generic<?> sgsm_www;@386] EXACT_MATCH\n" +
1499 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_www [ public GS<GM<GM<?, ?, ?>.Generic<?,?,?>,!|GM<?, ?, ?>.Generic|!<?,?,?>,GM<?, ?, ?>.Generic<?,?,?>>.Generic<?,?,?>>.Generic<?> sgsm_www;@413] EXACT_MATCH\n" +
1500 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_www [ public GS<GM<GM<?, ?, ?>.Generic<?,?,?>,GM<?, ?, ?>.Generic<?,?,?>,!|GM<?, ?, ?>.Generic|!<?,?,?>>.Generic<?,?,?>>.Generic<?> sgsm_www;@440] EXACT_MATCH\n" +
1501 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<!|GM<Object, Exception, RuntimeException>.Generic|!<Object, Exception, RuntimeException>>.Generic<Exception> sgsm_obj;@516] EXACT_MATCH\n" +
1502 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<GM<!|Object|!, Exception, RuntimeException>.Generic<Object, Exception, RuntimeException>>.Generic<Exception> sgsm_obj;@519] EXACT_MATCH\n" +
1503 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<GM<Object, !|Exception|!, RuntimeException>.Generic<Object, Exception, RuntimeException>>.Generic<Exception> sgsm_obj;@527] EXACT_MATCH\n" +
1504 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<GM<Object, Exception, !|RuntimeException|!>.Generic<Object, Exception, RuntimeException>>.Generic<Exception> sgsm_obj;@538] EXACT_MATCH\n" +
1505 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<GM<Object, Exception, RuntimeException>.Generic<!|Object|!, Exception, RuntimeException>>.Generic<Exception> sgsm_obj;@564] EXACT_MATCH\n" +
1506 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<GM<Object, Exception, RuntimeException>.Generic<Object, !|Exception|!, RuntimeException>>.Generic<Exception> sgsm_obj;@572] EXACT_MATCH\n" +
1507 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<GM<Object, Exception, RuntimeException>.Generic<Object, Exception, !|RuntimeException|!>>.Generic<Exception> sgsm_obj;@583] EXACT_MATCH\n" +
1508 "src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_obj [ public GS<GM<Object, Exception, RuntimeException>.Generic<Object, Exception, RuntimeException>>.Generic<!|Exception|!> sgsm_obj;@610] EXACT_MATCH\n" +
1509 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_wld [ public GM<!|GS<?>.Generic|!<?>, GS<?>.Generic<?>, GS<?>.Generic<?>>.Generic<?,?,?> sgms_wld;@642] EXACT_MATCH\n" +
1510 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_wld [ public GM<GS<?>.Generic<?>, !|GS<?>.Generic|!<?>, GS<?>.Generic<?>>.Generic<?,?,?> sgms_wld;@660] EXACT_MATCH\n" +
1511 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_wld [ public GM<GS<?>.Generic<?>, GS<?>.Generic<?>, !|GS<?>.Generic|!<?>>.Generic<?,?,?> sgms_wld;@678] EXACT_MATCH\n" +
1512 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_www [ public GM<!|GS<?>.Generic|!<?>, GS<GS<?>.Generic<?>>.Generic<?>, GS<GS<GS<?>.Generic<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> sgms_www;@732] EXACT_MATCH\n" +
1513 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_www [ public GM<GS<?>.Generic<?>, !|GS<GS<?>.Generic<?>>.Generic|!<?>, GS<GS<GS<?>.Generic<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> sgms_www;@750] EXACT_MATCH\n" +
1514 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_www [ public GM<GS<?>.Generic<?>, GS<!|GS<?>.Generic|!<?>>.Generic<?>, GS<GS<GS<?>.Generic<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> sgms_www;@753] EXACT_MATCH\n" +
1515 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_www [ public GM<GS<?>.Generic<?>, GS<GS<?>.Generic<?>>.Generic<?>, !|GS<GS<GS<?>.Generic<?>>.Generic<?>>.Generic|!<?>>.Generic<?,?,?> sgms_www;@783] EXACT_MATCH\n" +
1516 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_www [ public GM<GS<?>.Generic<?>, GS<GS<?>.Generic<?>>.Generic<?>, GS<!|GS<GS<?>.Generic<?>>.Generic|!<?>>.Generic<?>>.Generic<?,?,?> sgms_www;@786] EXACT_MATCH\n" +
1517 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_www [ public GM<GS<?>.Generic<?>, GS<GS<?>.Generic<?>>.Generic<?>, GS<GS<!|GS<?>.Generic|!<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> sgms_www;@789] EXACT_MATCH\n" +
1518 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_obj [ public GM<!|GS<Object>.Generic|!<?>, GS<? extends Throwable>.Generic<?>, GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> sgms_obj;@867] EXACT_MATCH\n" +
1519 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_obj [ public GM<GS<!|Object|!>.Generic<?>, GS<? extends Throwable>.Generic<?>, GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> sgms_obj;@870] EXACT_MATCH\n" +
1520 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_obj [ public GM<GS<Object>.Generic<?>, !|GS<? extends Throwable>.Generic|!<?>, GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> sgms_obj;@890] EXACT_MATCH\n" +
1521 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_obj [ public GM<GS<Object>.Generic<?>, GS<? extends Throwable>.Generic<?>, !|GS<? super RuntimeException>.Generic|!<?>>.Generic<?,?,?> sgms_obj;@926] EXACT_MATCH\n" +
1522 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_wld [ public g3.t.def.GS<!|g3.t.def.GM<?, ?, ?>.Generic|!<?, ?, ?>>.Generic<?> qgsm_wld;@1031] EXACT_MATCH\n" +
1523 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_www [ public g3.t.def.GS<!|g3.t.def.GM<g3.t.def.GM<?, ?, ?>.Generic<?,?,?>,g3.t.def.GM<?, ?, ?>.Generic<?,?,?>,g3.t.def.GM<?, ?, ?>.Generic<?,?,?>>.Generic|!<?,?,?>>.Generic<?> qgsm_www;@1111] EXACT_MATCH\n" +
1524 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_www [ public g3.t.def.GS<g3.t.def.GM<!|g3.t.def.GM<?, ?, ?>.Generic|!<?,?,?>,g3.t.def.GM<?, ?, ?>.Generic<?,?,?>,g3.t.def.GM<?, ?, ?>.Generic<?,?,?>>.Generic<?,?,?>>.Generic<?> qgsm_www;@1123] EXACT_MATCH\n" +
1525 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_www [ public g3.t.def.GS<g3.t.def.GM<g3.t.def.GM<?, ?, ?>.Generic<?,?,?>,!|g3.t.def.GM<?, ?, ?>.Generic|!<?,?,?>,g3.t.def.GM<?, ?, ?>.Generic<?,?,?>>.Generic<?,?,?>>.Generic<?> qgsm_www;@1159] EXACT_MATCH\n" +
1526 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_www [ public g3.t.def.GS<g3.t.def.GM<g3.t.def.GM<?, ?, ?>.Generic<?,?,?>,g3.t.def.GM<?, ?, ?>.Generic<?,?,?>,!|g3.t.def.GM<?, ?, ?>.Generic|!<?,?,?>>.Generic<?,?,?>>.Generic<?> qgsm_www;@1195] EXACT_MATCH\n" +
1527 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<!|g3.t.def.GM<Object, Exception, RuntimeException>.Generic|!<Object, Exception, RuntimeException>>.Generic<Exception> qgsm_obj;@1289] EXACT_MATCH\n" +
1528 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<g3.t.def.GM<!|Object|!, Exception, RuntimeException>.Generic<Object, Exception, RuntimeException>>.Generic<Exception> qgsm_obj;@1301] EXACT_MATCH\n" +
1529 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<g3.t.def.GM<Object, !|Exception|!, RuntimeException>.Generic<Object, Exception, RuntimeException>>.Generic<Exception> qgsm_obj;@1309] EXACT_MATCH\n" +
1530 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<g3.t.def.GM<Object, Exception, !|RuntimeException|!>.Generic<Object, Exception, RuntimeException>>.Generic<Exception> qgsm_obj;@1320] EXACT_MATCH\n" +
1531 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<g3.t.def.GM<Object, Exception, RuntimeException>.Generic<!|Object|!, Exception, RuntimeException>>.Generic<Exception> qgsm_obj;@1346] EXACT_MATCH\n" +
1532 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<g3.t.def.GM<Object, Exception, RuntimeException>.Generic<Object, !|Exception|!, RuntimeException>>.Generic<Exception> qgsm_obj;@1354] EXACT_MATCH\n" +
1533 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<g3.t.def.GM<Object, Exception, RuntimeException>.Generic<Object, Exception, !|RuntimeException|!>>.Generic<Exception> qgsm_obj;@1365] EXACT_MATCH\n" +
1534 "src/g3/t/ref/R3.java g3.t.ref.R3.qgsm_obj [ public g3.t.def.GS<g3.t.def.GM<Object, Exception, RuntimeException>.Generic<Object, Exception, RuntimeException>>.Generic<!|Exception|!> qgsm_obj;@1392] EXACT_MATCH\n" +
1535 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_wld [ public g3.t.def.GM<!|g3.t.def.GS<?>.Generic|!<?>, g3.t.def.GS<?>.Generic<?>, g3.t.def.GS<?>.Generic<?>>.Generic<?,?,?> qgms_wld;@1433] EXACT_MATCH\n" +
1536 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_wld [ public g3.t.def.GM<g3.t.def.GS<?>.Generic<?>, !|g3.t.def.GS<?>.Generic|!<?>, g3.t.def.GS<?>.Generic<?>>.Generic<?,?,?> qgms_wld;@1460] EXACT_MATCH\n" +
1537 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_wld [ public g3.t.def.GM<g3.t.def.GS<?>.Generic<?>, g3.t.def.GS<?>.Generic<?>, !|g3.t.def.GS<?>.Generic|!<?>>.Generic<?,?,?> qgms_wld;@1487] EXACT_MATCH\n" +
1538 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_www [ public g3.t.def.GM<!|g3.t.def.GS<?>.Generic|!<?>, g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>, g3.t.def.GS<g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> qgms_www;@1559] EXACT_MATCH\n" +
1539 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_www [ public g3.t.def.GM<g3.t.def.GS<?>.Generic<?>, !|g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic|!<?>, g3.t.def.GS<g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> qgms_www;@1586] EXACT_MATCH\n" +
1540 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_www [ public g3.t.def.GM<g3.t.def.GS<?>.Generic<?>, g3.t.def.GS<!|g3.t.def.GS<?>.Generic|!<?>>.Generic<?>, g3.t.def.GS<g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> qgms_www;@1598] EXACT_MATCH\n" +
1541 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_www [ public g3.t.def.GM<g3.t.def.GS<?>.Generic<?>, g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>, !|g3.t.def.GS<g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>>.Generic|!<?>>.Generic<?,?,?> qgms_www;@1637] EXACT_MATCH\n" +
1542 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_www [ public g3.t.def.GM<g3.t.def.GS<?>.Generic<?>, g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>, g3.t.def.GS<!|g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic|!<?>>.Generic<?>>.Generic<?,?,?> qgms_www;@1649] EXACT_MATCH\n" +
1543 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_www [ public g3.t.def.GM<g3.t.def.GS<?>.Generic<?>, g3.t.def.GS<g3.t.def.GS<?>.Generic<?>>.Generic<?>, g3.t.def.GS<g3.t.def.GS<!|g3.t.def.GS<?>.Generic|!<?>>.Generic<?>>.Generic<?>>.Generic<?,?,?> qgms_www;@1661] EXACT_MATCH\n" +
1544 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_obj [ public g3.t.def.GM<!|g3.t.def.GS<Object>.Generic|!<?>, g3.t.def.GS<? extends Throwable>.Generic<?>, g3.t.def.GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> qgms_obj;@1757] EXACT_MATCH\n" +
1545 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_obj [ public g3.t.def.GM<g3.t.def.GS<!|Object|!>.Generic<?>, g3.t.def.GS<? extends Throwable>.Generic<?>, g3.t.def.GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> qgms_obj;@1769] EXACT_MATCH\n" +
1546 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_obj [ public g3.t.def.GM<g3.t.def.GS<Object>.Generic<?>, !|g3.t.def.GS<? extends Throwable>.Generic|!<?>, g3.t.def.GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> qgms_obj;@1789] EXACT_MATCH\n" +
1547 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_obj [ public g3.t.def.GM<g3.t.def.GS<Object>.Generic<?>, g3.t.def.GS<? extends Throwable>.Generic<?>, !|g3.t.def.GS<? super RuntimeException>.Generic|!<?>>.Generic<?,?,?> qgms_obj;@1834] EXACT_MATCH"
1548 );
1549 }
testTypeRefGenericAllG3R3_WildcardBounds()1550 public void testTypeRefGenericAllG3R3_WildcardBounds() throws CoreException {
1551 IType type = getCompilationUnit("JavaSearch15/src/g3/t/ref/R3.java").getType("R3");
1552 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1553 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1554 assertSearchResults(
1555 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_obj [ public GM<GS<Object>.Generic<?>, GS<? extends !|Throwable|!>.Generic<?>, GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> sgms_obj;@903] EXACT_MATCH\n" +
1556 "src/g3/t/ref/R3.java g3.t.ref.R3.sgms_obj [ public GM<GS<Object>.Generic<?>, GS<? extends Throwable>.Generic<?>, GS<? super !|RuntimeException|!>.Generic<?>>.Generic<?,?,?> sgms_obj;@937] EXACT_MATCH\n" +
1557 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_obj [ public g3.t.def.GM<g3.t.def.GS<Object>.Generic<?>, g3.t.def.GS<? extends !|Throwable|!>.Generic<?>, g3.t.def.GS<? super RuntimeException>.Generic<?>>.Generic<?,?,?> qgms_obj;@1811] EXACT_MATCH\n" +
1558 "src/g3/t/ref/R3.java g3.t.ref.R3.qgms_obj [ public g3.t.def.GM<g3.t.def.GS<Object>.Generic<?>, g3.t.def.GS<? extends Throwable>.Generic<?>, g3.t.def.GS<? super !|RuntimeException|!>.Generic<?>>.Generic<?,?,?> qgms_obj;@1854] EXACT_MATCH"
1559 );
1560 }
testTypeRefGenericAllG3R3_TypeVariableBounds()1561 public void testTypeRefGenericAllG3R3_TypeVariableBounds() throws CoreException {
1562 IType type = getCompilationUnit("JavaSearch15/src/g3/t/ref/R3.java").getType("R3");
1563 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1564 search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1565 assertSearchResults("");
1566 }
testTypeRefGenericAllG5_TypeArgument()1567 public void testTypeRefGenericAllG5_TypeArgument() throws CoreException {
1568 IType type = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java").getType("RefMultiple");
1569 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1570 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1571 assertSearchResults(
1572 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ Multiple<!|Object|!, Exception, RuntimeException> gm = new Multiple<Object, Exception, RuntimeException>();@115] EXACT_MATCH\n" +
1573 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ Multiple<Object, !|Exception|!, RuntimeException> gm = new Multiple<Object, Exception, RuntimeException>();@123] EXACT_MATCH\n" +
1574 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ Multiple<Object, Exception, !|RuntimeException|!> gm = new Multiple<Object, Exception, RuntimeException>();@134] EXACT_MATCH\n" +
1575 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ Multiple<Object, Exception, RuntimeException> gm = new Multiple<!|Object|!, Exception, RuntimeException>();@170] EXACT_MATCH\n" +
1576 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ Multiple<Object, Exception, RuntimeException> gm = new Multiple<Object, !|Exception|!, RuntimeException>();@178] EXACT_MATCH\n" +
1577 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ Multiple<Object, Exception, RuntimeException> gm = new Multiple<Object, Exception, !|RuntimeException|!>();@189] EXACT_MATCH\n" +
1578 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm.<!|Object|!, Exception, RuntimeException>generic(new Object(), new Exception(), new RuntimeException());@367] EXACT_MATCH\n" +
1579 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm.<Object, !|Exception|!, RuntimeException>generic(new Object(), new Exception(), new RuntimeException());@375] EXACT_MATCH\n" +
1580 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm.<Object, Exception, !|RuntimeException|!>generic(new Object(), new Exception(), new RuntimeException());@386] EXACT_MATCH\n" +
1581 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm.paramTypesArgs(new Single<!|Object|!>(), new Single<Exception>(), new Single<RuntimeException>(), gm);@656] EXACT_MATCH\n" +
1582 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm.paramTypesArgs(new Single<Object>(), new Single<!|Exception|!>(), new Single<RuntimeException>(), gm);@678] EXACT_MATCH\n" +
1583 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm.paramTypesArgs(new Single<Object>(), new Single<Exception>(), new Single<!|RuntimeException|!>(), gm);@703] EXACT_MATCH\n" +
1584 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm = gm.<!|Object|!, Exception, RuntimeException>complete(new Object(), new Exception(), new RuntimeException(), gm);@838] EXACT_MATCH\n" +
1585 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm = gm.<Object, !|Exception|!, RuntimeException>complete(new Object(), new Exception(), new RuntimeException(), gm);@846] EXACT_MATCH\n" +
1586 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.test() [ gm = gm.<Object, Exception, !|RuntimeException|!>complete(new Object(), new Exception(), new RuntimeException(), gm);@857] EXACT_MATCH\n" +
1587 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testUnbound() [ gm.paramTypesArgs(new Single<!|Object|!>(), new Single<Object>(), new Single<Object>(), gm);@1095] EXACT_MATCH\n" +
1588 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testUnbound() [ gm.paramTypesArgs(new Single<Object>(), new Single<!|Object|!>(), new Single<Object>(), gm);@1117] EXACT_MATCH\n" +
1589 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testUnbound() [ gm.paramTypesArgs(new Single<Object>(), new Single<Object>(), new Single<!|Object|!>(), gm);@1139] EXACT_MATCH\n" +
1590 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ Multiple<!|Object|!, ? extends Throwable, ? extends Exception> gm = new Multiple<Object, Exception, RuntimeException>();@1295] EXACT_MATCH\n" +
1591 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ Multiple<Object, ? extends Throwable, ? extends Exception> gm = new Multiple<!|Object|!, Exception, RuntimeException>();@1363] EXACT_MATCH\n" +
1592 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ Multiple<Object, ? extends Throwable, ? extends Exception> gm = new Multiple<Object, !|Exception|!, RuntimeException>();@1371] EXACT_MATCH\n" +
1593 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ Multiple<Object, ? extends Throwable, ? extends Exception> gm = new Multiple<Object, Exception, !|RuntimeException|!>();@1382] EXACT_MATCH\n" +
1594 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm.<!|Object|!, RuntimeException, RuntimeException>generic(new Object(), new RuntimeException(), new RuntimeException());@1409] EXACT_MATCH\n" +
1595 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm.<Object, !|RuntimeException|!, RuntimeException>generic(new Object(), new RuntimeException(), new RuntimeException());@1417] EXACT_MATCH\n" +
1596 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm.<Object, RuntimeException, !|RuntimeException|!>generic(new Object(), new RuntimeException(), new RuntimeException());@1435] EXACT_MATCH\n" +
1597 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm.paramTypesArgs(new Single<!|Object|!>(), new Single<Throwable>(), new Single<Exception>(), gm);@1554] EXACT_MATCH\n" +
1598 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm.paramTypesArgs(new Single<Object>(), new Single<!|Throwable|!>(), new Single<Exception>(), gm);@1576] EXACT_MATCH\n" +
1599 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm.paramTypesArgs(new Single<Object>(), new Single<Throwable>(), new Single<!|Exception|!>(), gm);@1601] EXACT_MATCH\n" +
1600 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm = gm.<!|Object|!, RuntimeException, RuntimeException>complete(new Object(), new RuntimeException(), new RuntimeException(), gm);@1660] EXACT_MATCH\n" +
1601 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm = gm.<Object, !|RuntimeException|!, RuntimeException>complete(new Object(), new RuntimeException(), new RuntimeException(), gm);@1668] EXACT_MATCH\n" +
1602 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ gm = gm.<Object, RuntimeException, !|RuntimeException|!>complete(new Object(), new RuntimeException(), new RuntimeException(), gm);@1686] EXACT_MATCH\n" +
1603 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ Multiple<!|Object|!, ? super RuntimeException, ? super IllegalMonitorStateException> gm = new Multiple<Object, Exception, RuntimeException>();@1893] EXACT_MATCH\n" +
1604 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ Multiple<Object, ? super RuntimeException, ? super IllegalMonitorStateException> gm = new Multiple<!|Object|!, Exception, RuntimeException>();@1983] EXACT_MATCH\n" +
1605 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ Multiple<Object, ? super RuntimeException, ? super IllegalMonitorStateException> gm = new Multiple<Object, !|Exception|!, RuntimeException>();@1991] EXACT_MATCH\n" +
1606 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ Multiple<Object, ? super RuntimeException, ? super IllegalMonitorStateException> gm = new Multiple<Object, Exception, !|RuntimeException|!>();@2002] EXACT_MATCH\n" +
1607 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm.<!|Object|!, RuntimeException, IllegalMonitorStateException>generic(new Object(), new RuntimeException(), new IllegalMonitorStateException());@2029] EXACT_MATCH\n" +
1608 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm.<Object, !|RuntimeException|!, IllegalMonitorStateException>generic(new Object(), new RuntimeException(), new IllegalMonitorStateException());@2037] EXACT_MATCH\n" +
1609 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm.<Object, RuntimeException, !|IllegalMonitorStateException|!>generic(new Object(), new RuntimeException(), new IllegalMonitorStateException());@2055] EXACT_MATCH\n" +
1610 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm.paramTypesArgs(new Single<!|Object|!>(), new Single<RuntimeException>(), new Single<RuntimeException>(), gm);@2198] EXACT_MATCH\n" +
1611 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm.paramTypesArgs(new Single<Object>(), new Single<!|RuntimeException|!>(), new Single<RuntimeException>(), gm);@2220] EXACT_MATCH\n" +
1612 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm.paramTypesArgs(new Single<Object>(), new Single<RuntimeException>(), new Single<!|RuntimeException|!>(), gm);@2252] EXACT_MATCH\n" +
1613 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm = gm.<!|Object|!, RuntimeException, IllegalMonitorStateException>complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm);@2318] EXACT_MATCH\n" +
1614 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm = gm.<Object, !|RuntimeException|!, IllegalMonitorStateException>complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm);@2326] EXACT_MATCH\n" +
1615 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ gm = gm.<Object, RuntimeException, !|IllegalMonitorStateException|!>complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm);@2344] EXACT_MATCH"
1616 );
1617 }
testTypeRefGenericAllG5_WildcardBounds()1618 public void testTypeRefGenericAllG5_WildcardBounds() throws CoreException {
1619 IType type = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java").getType("RefMultiple");
1620 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1621 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1622 assertSearchResults(
1623 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ Multiple<Object, ? extends !|Throwable|!, ? extends Exception> gm = new Multiple<Object, Exception, RuntimeException>();@1313] EXACT_MATCH\n" +
1624 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testExtends() [ Multiple<Object, ? extends Throwable, ? extends !|Exception|!> gm = new Multiple<Object, Exception, RuntimeException>();@1334] EXACT_MATCH\n" +
1625 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ Multiple<Object, ? super !|RuntimeException|!, ? super IllegalMonitorStateException> gm = new Multiple<Object, Exception, RuntimeException>();@1909] EXACT_MATCH\n" +
1626 "src/g5/m/ref/RefMultiple.java void g5.m.ref.RefMultiple.testSuper() [ Multiple<Object, ? super RuntimeException, ? super !|IllegalMonitorStateException|!> gm = new Multiple<Object, Exception, RuntimeException>();@1935] EXACT_MATCH"
1627 );
1628 }
testTypeRefGenericAllG5_TypeVariableBounds()1629 public void testTypeRefGenericAllG5_TypeVariableBounds() throws CoreException {
1630 IType type = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java").getType("RefMultiple");
1631 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1632 search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1633 assertSearchResults("");
1634 }
testTypeRefGenericAllG6_TypeArgument()1635 public void testTypeRefGenericAllG6_TypeArgument() throws CoreException {
1636 IType type = getCompilationUnit("JavaSearch15/src/g6/t/ref/QualifMultiple.java").getType("QualifMultiple");
1637 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1638 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1639 assertSearchResults(
1640 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryException [ g6.t.def.Table<!|String|!, Exception>.Entry<String, Exception> entryException;@64] EXACT_MATCH\n" +
1641 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryException [ g6.t.def.Table<String, !|Exception|!>.Entry<String, Exception> entryException;@72] EXACT_MATCH\n" +
1642 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryException [ g6.t.def.Table<String, Exception>.Entry<!|String|!, Exception> entryException;@89] EXACT_MATCH\n" +
1643 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryException [ g6.t.def.Table<String, Exception>.Entry<String, !|Exception|!> entryException;@97] EXACT_MATCH\n" +
1644 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryExceptionArray [ g6.t.def.Table<!|String|!, Exception>.Entry<String, Exception>[] entryExceptionArray;@140] EXACT_MATCH\n" +
1645 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryExceptionArray [ g6.t.def.Table<String, !|Exception|!>.Entry<String, Exception>[] entryExceptionArray;@148] EXACT_MATCH\n" +
1646 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryExceptionArray [ g6.t.def.Table<String, Exception>.Entry<!|String|!, Exception>[] entryExceptionArray;@165] EXACT_MATCH\n" +
1647 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryExceptionArray [ g6.t.def.Table<String, Exception>.Entry<String, !|Exception|!>[] entryExceptionArray;@173] EXACT_MATCH\n" +
1648 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<!|String|!, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@223] EXACT_MATCH\n" +
1649 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, !|g6.t.def.Table<String, Exception>.Entry<String, Exception>[]|!>.Entry<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@231] EXACT_MATCH\n" +
1650 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<!|String|!, Exception>.Entry<String, Exception>[]>.Entry<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@246] EXACT_MATCH\n" +
1651 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, !|Exception|!>.Entry<String, Exception>[]>.Entry<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@254] EXACT_MATCH\n" +
1652 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<!|String|!, Exception>[]>.Entry<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@271] EXACT_MATCH\n" +
1653 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, !|Exception|!>[]>.Entry<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@279] EXACT_MATCH\n" +
1654 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry<!|String|!, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@299] EXACT_MATCH\n" +
1655 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry<String, !|g6.t.def.Table<String, Exception>.Entry<String, Exception>[]|!> tableOfEntryExceptionArray;@307] EXACT_MATCH\n" +
1656 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry<String, g6.t.def.Table<!|String|!, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@322] EXACT_MATCH\n" +
1657 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry<String, g6.t.def.Table<String, !|Exception|!>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@330] EXACT_MATCH\n" +
1658 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry<String, g6.t.def.Table<String, Exception>.Entry<!|String|!, Exception>[]> tableOfEntryExceptionArray;@347] EXACT_MATCH\n" +
1659 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry<String, g6.t.def.Table<String, Exception>.Entry<String, !|Exception|!>[]> tableOfEntryExceptionArray;@355] EXACT_MATCH"
1660 );
1661 }
testTypeRefGenericAllG6_WildcardBounds()1662 public void testTypeRefGenericAllG6_WildcardBounds() throws CoreException {
1663 IType type = getCompilationUnit("JavaSearch15/src/g6/t/ref/QualifMultiple.java").getType("QualifMultiple");
1664 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1665 search("*", TYPE, FIELD_DECLARATION_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1666 assertSearchResults(
1667 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryException [ !|g6.t.def.Table<String, Exception>.Entry|!<String, Exception> entryException;@49] EXACT_MATCH\n" +
1668 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.entryExceptionArray [ !|g6.t.def.Table<String, Exception>.Entry<String, Exception>[]|! entryExceptionArray;@125] EXACT_MATCH\n" +
1669 "src/g6/t/ref/QualifMultiple.java g6.t.ref.QualifMultiple.tableOfEntryExceptionArray [ !|g6.t.def.Table<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]>.Entry|!<String, g6.t.def.Table<String, Exception>.Entry<String, Exception>[]> tableOfEntryExceptionArray;@208] EXACT_MATCH"
1670 );
1671 }
testTypeRefGenericAllG6_TypeVariableBounds()1672 public void testTypeRefGenericAllG6_TypeVariableBounds() throws CoreException {
1673 IType type = getCompilationUnit("JavaSearch15/src/g6/t/ref/QualifMultiple.java").getType("QualifMultiple");
1674 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1675 search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE | WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1676 assertSearchResults("");
1677 }
1678 /**
1679 * @bug 561268: [search] fine grained search for return type references should include generic methods
1680 * @test Ensure that generic methods are found when searching for return type fine grain references
1681 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=561268"
1682 */
testBug561268()1683 public void testBug561268() throws CoreException {
1684 IType type = getCompilationUnit("JavaSearch15/src/g7/a/ref/TestSearch.java").getType("TestSearch");
1685 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1686 search("ISearchTest", TYPE, RETURN_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1687 assertSearchResults(
1688 "src/g7/a/ref/TestSearch.java ISearchTest<T> g7.a.ref.TestSearch.getSearchTestImpl() [ public static <T> !|ISearchTest|!<T> getSearchTestImpl() {@125] EXACT_MATCH\n" +
1689 "src/g7/a/ref/TestSearch.java ISearchTest<Integer> g7.a.ref.TestSearch.getSearchTestImpl2() [ public static !|ISearchTest|!<Integer> getSearchTestImpl2() {@213] EXACT_MATCH");
1690 }
1691
1692 // Additional tests
testTypeRefGenericsTest06_TypeArgument()1693 public void testTypeRefGenericsTest06_TypeArgument() throws CoreException {
1694 this.workingCopies = new ICompilationUnit[1];
1695 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test06/Test.java",
1696 "package test06;\n" +
1697 "public class Test {\n" +
1698 " X<Exception> x; \n" +
1699 " Y<Object, String, Exception> y; \n" +
1700 "}\n" +
1701 "class X<T> {}\n" +
1702 "class Y<R, S, T> {}\n"
1703 );
1704 IType type = this.workingCopies[0].getType("Test");
1705 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1706 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1707 assertSearchResults(
1708 "src/test06/Test.java test06.Test.x [ X<!|Exception|!> x; @39] EXACT_MATCH\n" +
1709 "src/test06/Test.java test06.Test.y [ Y<!|Object|!, String, Exception> y; @57] EXACT_MATCH\n" +
1710 "src/test06/Test.java test06.Test.y [ Y<Object, !|String|!, Exception> y; @65] EXACT_MATCH\n" +
1711 "src/test06/Test.java test06.Test.y [ Y<Object, String, !|Exception|!> y; @73] EXACT_MATCH"
1712 );
1713 }
testTypeRefGenericsTest07_TypeArgument()1714 public void testTypeRefGenericsTest07_TypeArgument() throws CoreException {
1715 this.workingCopies = new ICompilationUnit[1];
1716 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test07/Test.java",
1717 "package test07;\n" +
1718 "public class Test {\n" +
1719 " Y<Y<Exception>> y1;\n" +
1720 " Y<X<Object, String, Exception>> y2;\n" +
1721 " X<Y<Object>, Y<String>, Y<Exception>> x1;\n" +
1722 " X<X<Object, Object, Object>, X<String, String, String>, X<Exception, Exception, Exception>> x2;\n" +
1723 "}\n" +
1724 "class X<R, S, T> {}\n" +
1725 "class Y<U> {}"
1726 );
1727 IType type = this.workingCopies[0].getType("Test");
1728 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1729 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1730 assertSearchResults(
1731 "src/test07/Test.java test07.Test.y1 [ Y<!|Y|!<Exception>> y1;@39] EXACT_MATCH\n" +
1732 "src/test07/Test.java test07.Test.y1 [ Y<Y<!|Exception|!>> y1;@41] EXACT_MATCH\n" +
1733 "src/test07/Test.java test07.Test.y2 [ Y<!|X|!<Object, String, Exception>> y2;@60] EXACT_MATCH\n" +
1734 "src/test07/Test.java test07.Test.y2 [ Y<X<!|Object|!, String, Exception>> y2;@62] EXACT_MATCH\n" +
1735 "src/test07/Test.java test07.Test.y2 [ Y<X<Object, !|String|!, Exception>> y2;@70] EXACT_MATCH\n" +
1736 "src/test07/Test.java test07.Test.y2 [ Y<X<Object, String, !|Exception|!>> y2;@78] EXACT_MATCH\n" +
1737 "src/test07/Test.java test07.Test.x1 [ X<!|Y|!<Object>, Y<String>, Y<Exception>> x1;@97] EXACT_MATCH\n" +
1738 "src/test07/Test.java test07.Test.x1 [ X<Y<!|Object|!>, Y<String>, Y<Exception>> x1;@99] EXACT_MATCH\n" +
1739 "src/test07/Test.java test07.Test.x1 [ X<Y<Object>, !|Y|!<String>, Y<Exception>> x1;@108] EXACT_MATCH\n" +
1740 "src/test07/Test.java test07.Test.x1 [ X<Y<Object>, Y<!|String|!>, Y<Exception>> x1;@110] EXACT_MATCH\n" +
1741 "src/test07/Test.java test07.Test.x1 [ X<Y<Object>, Y<String>, !|Y|!<Exception>> x1;@119] EXACT_MATCH\n" +
1742 "src/test07/Test.java test07.Test.x1 [ X<Y<Object>, Y<String>, Y<!|Exception|!>> x1;@121] EXACT_MATCH\n" +
1743 "src/test07/Test.java test07.Test.x2 [ X<!|X|!<Object, Object, Object>, X<String, String, String>, X<Exception, Exception, Exception>> x2;@140] EXACT_MATCH\n" +
1744 "src/test07/Test.java test07.Test.x2 [ X<X<!|Object|!, Object, Object>, X<String, String, String>, X<Exception, Exception, Exception>> x2;@142] EXACT_MATCH\n" +
1745 "src/test07/Test.java test07.Test.x2 [ X<X<Object, !|Object|!, Object>, X<String, String, String>, X<Exception, Exception, Exception>> x2;@150] EXACT_MATCH\n" +
1746 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, !|Object|!>, X<String, String, String>, X<Exception, Exception, Exception>> x2;@158] EXACT_MATCH\n" +
1747 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, !|X|!<String, String, String>, X<Exception, Exception, Exception>> x2;@167] EXACT_MATCH\n" +
1748 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<!|String|!, String, String>, X<Exception, Exception, Exception>> x2;@169] EXACT_MATCH\n" +
1749 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<String, !|String|!, String>, X<Exception, Exception, Exception>> x2;@177] EXACT_MATCH\n" +
1750 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<String, String, !|String|!>, X<Exception, Exception, Exception>> x2;@185] EXACT_MATCH\n" +
1751 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<String, String, String>, !|X|!<Exception, Exception, Exception>> x2;@194] EXACT_MATCH\n" +
1752 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<String, String, String>, X<!|Exception|!, Exception, Exception>> x2;@196] EXACT_MATCH\n" +
1753 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<String, String, String>, X<Exception, !|Exception|!, Exception>> x2;@207] EXACT_MATCH\n" +
1754 "src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<String, String, String>, X<Exception, Exception, !|Exception|!>> x2;@218] EXACT_MATCH"
1755 );
1756 }
testTypeRefGenericsTest08_TypeArgument()1757 public void testTypeRefGenericsTest08_TypeArgument() throws CoreException {
1758 this.workingCopies = new ICompilationUnit[1];
1759 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test08/Test.java",
1760 "package test08;\n" +
1761 "public class Test {\n" +
1762 " Z<\n" +
1763 " Y<X<Object>, X<String>, X<Exception>>,\n" +
1764 " X<Y<Object, String, X<Exception>>>,\n" +
1765 " Z<Object, X<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,\n" +
1766 " X<X<X<X<String>>>>> z;\n" +
1767 "}\n" +
1768 "class X<R> {}\n" +
1769 "class Y<S, T, U> {}\n" +
1770 "class Z<A, B, C, D> {}\n"
1771 );
1772 IType type = this.workingCopies[0].getType("Test");
1773 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1774 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1775 assertSearchResults(
1776 "src/test08/Test.java test08.Test.z [ !|Y|!<X<Object>, X<String>, X<Exception>>,@42] EXACT_MATCH\n" +
1777 "src/test08/Test.java test08.Test.z [ Y<!|X|!<Object>, X<String>, X<Exception>>,@44] EXACT_MATCH\n" +
1778 "src/test08/Test.java test08.Test.z [ Y<X<!|Object|!>, X<String>, X<Exception>>,@46] EXACT_MATCH\n" +
1779 "src/test08/Test.java test08.Test.z [ Y<X<Object>, !|X|!<String>, X<Exception>>,@55] EXACT_MATCH\n" +
1780 "src/test08/Test.java test08.Test.z [ Y<X<Object>, X<!|String|!>, X<Exception>>,@57] EXACT_MATCH\n" +
1781 "src/test08/Test.java test08.Test.z [ Y<X<Object>, X<String>, !|X|!<Exception>>,@66] EXACT_MATCH\n" +
1782 "src/test08/Test.java test08.Test.z [ Y<X<Object>, X<String>, X<!|Exception|!>>,@68] EXACT_MATCH\n" +
1783 "src/test08/Test.java test08.Test.z [ !|X|!<Y<Object, String, X<Exception>>>,@83] EXACT_MATCH\n" +
1784 "src/test08/Test.java test08.Test.z [ X<!|Y|!<Object, String, X<Exception>>>,@85] EXACT_MATCH\n" +
1785 "src/test08/Test.java test08.Test.z [ X<Y<!|Object|!, String, X<Exception>>>,@87] EXACT_MATCH\n" +
1786 "src/test08/Test.java test08.Test.z [ X<Y<Object, !|String|!, X<Exception>>>,@95] EXACT_MATCH\n" +
1787 "src/test08/Test.java test08.Test.z [ X<Y<Object, String, !|X|!<Exception>>>,@103] EXACT_MATCH\n" +
1788 "src/test08/Test.java test08.Test.z [ X<Y<Object, String, X<!|Exception|!>>>,@105] EXACT_MATCH\n" +
1789 "src/test08/Test.java test08.Test.z [ !|Z|!<Object, X<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@121] EXACT_MATCH\n" +
1790 "src/test08/Test.java test08.Test.z [ Z<!|Object|!, X<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@123] EXACT_MATCH\n" +
1791 "src/test08/Test.java test08.Test.z [ Z<Object, !|X|!<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@131] EXACT_MATCH\n" +
1792 "src/test08/Test.java test08.Test.z [ Z<Object, X<!|String|!>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@133] EXACT_MATCH\n" +
1793 "src/test08/Test.java test08.Test.z [ Z<Object, X<String>, !|X|!<X<Exception>>, X<X<X<java.io.Serializable>>>>,@142] EXACT_MATCH\n" +
1794 "src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<!|X|!<Exception>>, X<X<X<java.io.Serializable>>>>,@144] EXACT_MATCH\n" +
1795 "src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<!|Exception|!>>, X<X<X<java.io.Serializable>>>>,@146] EXACT_MATCH\n" +
1796 "src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, !|X|!<X<X<java.io.Serializable>>>>,@159] EXACT_MATCH\n" +
1797 "src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, X<!|X|!<X<java.io.Serializable>>>>,@161] EXACT_MATCH\n" +
1798 "src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, X<X<!|X|!<java.io.Serializable>>>>,@163] EXACT_MATCH\n" +
1799 "src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, X<X<X<!|java.io.Serializable|!>>>>,@165] EXACT_MATCH\n" +
1800 "src/test08/Test.java test08.Test.z [ !|X|!<X<X<X<String>>>>> z;@193] EXACT_MATCH\n" +
1801 "src/test08/Test.java test08.Test.z [ X<!|X|!<X<X<String>>>>> z;@195] EXACT_MATCH\n" +
1802 "src/test08/Test.java test08.Test.z [ X<X<!|X|!<X<String>>>>> z;@197] EXACT_MATCH\n" +
1803 "src/test08/Test.java test08.Test.z [ X<X<X<!|X|!<String>>>>> z;@199] EXACT_MATCH\n" +
1804 "src/test08/Test.java test08.Test.z [ X<X<X<X<!|String|!>>>>> z;@201] EXACT_MATCH"
1805 );
1806 }
testTypeRefGenericsTest09_TypeArgument()1807 public void testTypeRefGenericsTest09_TypeArgument() throws CoreException {
1808 this.workingCopies = new ICompilationUnit[1];
1809 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test09/Test.java",
1810 "package test09;\n" +
1811 "public class Test {\n" +
1812 " X<? extends Exception> x; \n" +
1813 " Y<? extends Object, ? super String, ? extends Exception> y; \n" +
1814 "}\n" +
1815 "class X< R> {}\n" +
1816 "class Y<S, T, U> {}\n"
1817 );
1818 IType type = this.workingCopies[0].getType("Test");
1819 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1820 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE | TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1821 assertSearchResults(
1822 "src/test09/Test.java test09.Test.x [ X<? extends !|Exception|!> x; @49] EXACT_MATCH\n" +
1823 "src/test09/Test.java test09.Test.y [ Y<? extends !|Object|!, ? super String, ? extends Exception> y; @77] EXACT_MATCH\n" +
1824 "src/test09/Test.java test09.Test.y [ Y<? extends Object, ? super !|String|!, ? extends Exception> y; @93] EXACT_MATCH\n" +
1825 "src/test09/Test.java test09.Test.y [ Y<? extends Object, ? super String, ? extends !|Exception|!> y; @111] EXACT_MATCH"
1826 );
1827 }
testTypeRefGenericsTest10_TypeArgument()1828 public void testTypeRefGenericsTest10_TypeArgument() throws CoreException {
1829 this.workingCopies = new ICompilationUnit[1];
1830 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test10/Test.java",
1831 "package test10;\n" +
1832 "public class Test {\n" +
1833 " Y<Y<? extends Exception>> y1;\n" +
1834 " Y<X<? extends Object, ? super String, ? extends Exception>> y2;\n" +
1835 " X<Y<? super Object>, Y<? extends String>, Y<? super Exception>> x1;\n" +
1836 " X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;\n" +
1837 "}\n" +
1838 "class X<R, S, T> {}\n" +
1839 "class Y<U> {}"
1840 );
1841 IType type = this.workingCopies[0].getType("Test");
1842 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1843 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1844 assertSearchResults(
1845 "src/test10/Test.java test10.Test.y1 [ Y<!|Y|!<? extends Exception>> y1;@39] EXACT_MATCH\n" +
1846 "src/test10/Test.java test10.Test.y2 [ Y<!|X|!<? extends Object, ? super String, ? extends Exception>> y2;@70] EXACT_MATCH\n" +
1847 "src/test10/Test.java test10.Test.x1 [ X<!|Y|!<? super Object>, Y<? extends String>, Y<? super Exception>> x1;@135] EXACT_MATCH\n" +
1848 "src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, !|Y|!<? extends String>, Y<? super Exception>> x1;@154] EXACT_MATCH\n" +
1849 "src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, Y<? extends String>, !|Y|!<? super Exception>> x1;@175] EXACT_MATCH\n" +
1850 "src/test10/Test.java test10.Test.x2 [ X<!|X|!<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@204] EXACT_MATCH\n" +
1851 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, !|X|!<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@261] EXACT_MATCH\n" +
1852 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, !|X|!<? extends Exception, ? super Exception, ? extends Exception>> x2;@312] EXACT_MATCH"
1853 );
1854 }
testTypeRefGenericsTest10_WildcardBound()1855 public void testTypeRefGenericsTest10_WildcardBound() throws CoreException {
1856 this.workingCopies = new ICompilationUnit[1];
1857 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test10/Test.java",
1858 "package test10;\n" +
1859 "public class Test {\n" +
1860 " Y<Y<? extends Exception>> y1;\n" +
1861 " Y<X<? extends Object, ? super String, ? extends Exception>> y2;\n" +
1862 " X<Y<? super Object>, Y<? extends String>, Y<? super Exception>> x1;\n" +
1863 " X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;\n" +
1864 "}\n" +
1865 "class X<R, S, T> {}\n" +
1866 "class Y<U> {}"
1867 );
1868 IType type = this.workingCopies[0].getType("Test");
1869 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1870 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1871 assertSearchResults(
1872 "src/test10/Test.java test10.Test.y1 [ Y<Y<? extends !|Exception|!>> y1;@51] EXACT_MATCH\n" +
1873 "src/test10/Test.java test10.Test.y2 [ Y<X<? extends !|Object|!, ? super String, ? extends Exception>> y2;@82] EXACT_MATCH\n" +
1874 "src/test10/Test.java test10.Test.y2 [ Y<X<? extends Object, ? super !|String|!, ? extends Exception>> y2;@98] EXACT_MATCH\n" +
1875 "src/test10/Test.java test10.Test.y2 [ Y<X<? extends Object, ? super String, ? extends !|Exception|!>> y2;@116] EXACT_MATCH\n" +
1876 "src/test10/Test.java test10.Test.x1 [ X<Y<? super !|Object|!>, Y<? extends String>, Y<? super Exception>> x1;@145] EXACT_MATCH\n" +
1877 "src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, Y<? extends !|String|!>, Y<? super Exception>> x1;@166] EXACT_MATCH\n" +
1878 "src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, Y<? extends String>, Y<? super !|Exception|!>> x1;@185] EXACT_MATCH\n" +
1879 "src/test10/Test.java test10.Test.x2 [ X<X<? extends !|Object|!, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@216] EXACT_MATCH\n" +
1880 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends !|Object|!, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@234] EXACT_MATCH\n" +
1881 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends !|Object|!>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@252] EXACT_MATCH\n" +
1882 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, X<? super !|String|!, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@271] EXACT_MATCH\n" +
1883 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super !|String|!, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@287] EXACT_MATCH\n" +
1884 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super !|String|!>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;@303] EXACT_MATCH\n" +
1885 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends !|Exception|!, ? super Exception, ? extends Exception>> x2;@324] EXACT_MATCH\n" +
1886 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super !|Exception|!, ? extends Exception>> x2;@343] EXACT_MATCH\n" +
1887 "src/test10/Test.java test10.Test.x2 [ X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends !|Exception|!>> x2;@364] EXACT_MATCH"
1888 );
1889 }
testTypeRefGenericsTest11_TypeArgument()1890 public void testTypeRefGenericsTest11_TypeArgument() throws CoreException {
1891 this.workingCopies = new ICompilationUnit[1];
1892 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test11/Test.java",
1893 "package test11;\n" +
1894 "public class Test {\n" +
1895 " Z<\n" +
1896 " Y<X<? extends Object>, X<? super String>, X<? extends Exception>>,\n" +
1897 " X<Y<? extends Object, ? super String, X<? extends Exception>>>,\n" +
1898 " Z<? extends Object, X<? super String>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,\n" +
1899 " X<X<X<X<? super String>>>>> z;\n" +
1900 "}\n" +
1901 "class X<R> {}\n" +
1902 "class Y<S, T, U> {}\n" +
1903 "class Z<A, B, C, D> {}\n"
1904 );
1905 IType type = this.workingCopies[0].getType("Test");
1906 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1907 search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1908 assertSearchResults(
1909 "src/test11/Test.java test11.Test.z [ !|Y|!<X<? extends Object>, X<? super String>, X<? extends Exception>>,@42] EXACT_MATCH\n" +
1910 "src/test11/Test.java test11.Test.z [ Y<!|X|!<? extends Object>, X<? super String>, X<? extends Exception>>,@44] EXACT_MATCH\n" +
1911 "src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, !|X|!<? super String>, X<? extends Exception>>,@65] EXACT_MATCH\n" +
1912 "src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, X<? super String>, !|X|!<? extends Exception>>,@84] EXACT_MATCH\n" +
1913 "src/test11/Test.java test11.Test.z [ !|X|!<Y<? extends Object, ? super String, X<? extends Exception>>>,@111] EXACT_MATCH\n" +
1914 "src/test11/Test.java test11.Test.z [ X<!|Y|!<? extends Object, ? super String, X<? extends Exception>>>,@113] EXACT_MATCH\n" +
1915 "src/test11/Test.java test11.Test.z [ X<Y<? extends Object, ? super String, !|X|!<? extends Exception>>>,@149] EXACT_MATCH\n" +
1916 "src/test11/Test.java test11.Test.z [ !|Z|!<? extends Object, X<? super String>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,@177] EXACT_MATCH\n" +
1917 "src/test11/Test.java test11.Test.z [ Z<? extends Object, !|X|!<? super String>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,@197] EXACT_MATCH\n" +
1918 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super String>, !|X|!<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,@216] EXACT_MATCH\n" +
1919 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super String>, X<!|X|!<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,@218] EXACT_MATCH\n" +
1920 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super String>, X<X<? extends Exception>>, !|X|!<X<X<? extends java.io.Serializable>>>>,@243] EXACT_MATCH\n" +
1921 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super String>, X<X<? extends Exception>>, X<!|X|!<X<? extends java.io.Serializable>>>>,@245] EXACT_MATCH\n" +
1922 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super String>, X<X<? extends Exception>>, X<X<!|X|!<? extends java.io.Serializable>>>>,@247] EXACT_MATCH\n" +
1923 "src/test11/Test.java test11.Test.z [ !|X|!<X<X<X<? super String>>>>> z;@287] EXACT_MATCH\n" +
1924 "src/test11/Test.java test11.Test.z [ X<!|X|!<X<X<? super String>>>>> z;@289] EXACT_MATCH\n" +
1925 "src/test11/Test.java test11.Test.z [ X<X<!|X|!<X<? super String>>>>> z;@291] EXACT_MATCH\n" +
1926 "src/test11/Test.java test11.Test.z [ X<X<X<!|X|!<? super String>>>>> z;@293] EXACT_MATCH"
1927 );
1928 }
testTypeRefGenericsTest11_WildcardBound()1929 public void testTypeRefGenericsTest11_WildcardBound() throws CoreException {
1930 this.workingCopies = new ICompilationUnit[1];
1931 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test11/Test.java",
1932 "package test11;\n" +
1933 "public class Test {\n" +
1934 " Z<\n" +
1935 " Y<X<? extends Object>, X<? super String>, X<? extends Exception>>,\n" +
1936 " X<Y<? extends Object, ? super String, X<? extends Exception>>>,\n" +
1937 " Z<? extends Object, X<? super String>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,\n" +
1938 " X<X<X<X<? super String>>>>> z;\n" +
1939 "}\n" +
1940 "class X<R> {}\n" +
1941 "class Y<S, T, U> {}\n" +
1942 "class Z<A, B, C, D> {}\n"
1943 );
1944 IType type = this.workingCopies[0].getType("Test");
1945 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1946 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1947 assertSearchResults(
1948 "src/test11/Test.java test11.Test.z [ Y<X<? extends !|Object|!>, X<? super String>, X<? extends Exception>>,@56] EXACT_MATCH\n" +
1949 "src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, X<? super !|String|!>, X<? extends Exception>>,@75] EXACT_MATCH\n" +
1950 "src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, X<? super String>, X<? extends !|Exception|!>>,@96] EXACT_MATCH\n" +
1951 "src/test11/Test.java test11.Test.z [ X<Y<? extends !|Object|!, ? super String, X<? extends Exception>>>,@125] EXACT_MATCH\n" +
1952 "src/test11/Test.java test11.Test.z [ X<Y<? extends Object, ? super !|String|!, X<? extends Exception>>>,@141] EXACT_MATCH\n" +
1953 "src/test11/Test.java test11.Test.z [ X<Y<? extends Object, ? super String, X<? extends !|Exception|!>>>,@161] EXACT_MATCH\n" +
1954 "src/test11/Test.java test11.Test.z [ Z<? extends !|Object|!, X<? super String>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,@189] EXACT_MATCH\n" +
1955 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super !|String|!>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,@207] EXACT_MATCH\n" +
1956 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super String>, X<X<? extends !|Exception|!>>, X<X<X<? extends java.io.Serializable>>>>,@230] EXACT_MATCH\n" +
1957 "src/test11/Test.java test11.Test.z [ Z<? extends Object, X<? super String>, X<X<? extends Exception>>, X<X<X<? extends !|java.io.Serializable|!>>>>,@259] EXACT_MATCH\n" +
1958 "src/test11/Test.java test11.Test.z [ X<X<X<X<? super !|String|!>>>>> z;@303] EXACT_MATCH"
1959 );
1960 }
testTypeRefGenericsTest12_TypeArgument()1961 public void testTypeRefGenericsTest12_TypeArgument() throws CoreException {
1962 this.workingCopies = new ICompilationUnit[1];
1963 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test12/Test.java",
1964 "package test12;\n" +
1965 "public class Test extends S<Exception> {\n" +
1966 " void foo(Test test) {\n" +
1967 " this.<Exception>foo(null);\n" +
1968 " super.<Exception>foo(null);\n" +
1969 " foo(null);\n" +
1970 " test.<RuntimeException>foo(null);\n" +
1971 " }\n" +
1972 " void bar(Test test) {\n" +
1973 " this.<Object, RuntimeException, Test>bar(null);\n" +
1974 " super.<Object, RuntimeException, Test>bar(null);\n" +
1975 " bar(null);\n" +
1976 " test.<Object, RuntimeException, Test>bar(null);\n" +
1977 " }\n" +
1978 "}\n" +
1979 "class S<R> {\n" +
1980 " <T> T foo(T t) { return t; }\n" +
1981 " <T, U extends Exception, V extends S<R>>void bar(S s) {}\n" +
1982 "}\n" +
1983 "class X<T> {}\n"
1984 );
1985 IType type = this.workingCopies[0].getType("Test");
1986 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
1987 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE | TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
1988 assertSearchResults(
1989 "src/test12/Test.java test12.Test [public class Test extends S<!|Exception|!> {@44] EXACT_MATCH\n" +
1990 "src/test12/Test.java void test12.Test.foo(Test) [ this.<!|Exception|!>foo(null);@88] EXACT_MATCH\n" +
1991 "src/test12/Test.java void test12.Test.foo(Test) [ super.<!|Exception|!>foo(null);@118] EXACT_MATCH\n" +
1992 "src/test12/Test.java void test12.Test.foo(Test) [ test.<!|RuntimeException|!>foo(null);@160] EXACT_MATCH\n" +
1993 "src/test12/Test.java void test12.Test.bar(Test) [ this.<!|Object|!, RuntimeException, Test>bar(null);@222] EXACT_MATCH\n" +
1994 "src/test12/Test.java void test12.Test.bar(Test) [ this.<Object, !|RuntimeException|!, Test>bar(null);@230] EXACT_MATCH\n" +
1995 "src/test12/Test.java void test12.Test.bar(Test) [ this.<Object, RuntimeException, !|Test|!>bar(null);@248] EXACT_MATCH\n" +
1996 "src/test12/Test.java void test12.Test.bar(Test) [ super.<!|Object|!, RuntimeException, Test>bar(null);@273] EXACT_MATCH\n" +
1997 "src/test12/Test.java void test12.Test.bar(Test) [ super.<Object, !|RuntimeException|!, Test>bar(null);@281] EXACT_MATCH\n" +
1998 "src/test12/Test.java void test12.Test.bar(Test) [ super.<Object, RuntimeException, !|Test|!>bar(null);@299] EXACT_MATCH\n" +
1999 "src/test12/Test.java void test12.Test.bar(Test) [ test.<!|Object|!, RuntimeException, Test>bar(null);@336] EXACT_MATCH\n" +
2000 "src/test12/Test.java void test12.Test.bar(Test) [ test.<Object, !|RuntimeException|!, Test>bar(null);@344] EXACT_MATCH\n" +
2001 "src/test12/Test.java void test12.Test.bar(Test) [ test.<Object, RuntimeException, !|Test|!>bar(null);@362] EXACT_MATCH\n" +
2002 "src/test12/Test.java void test12.S.bar(S) [ <T, U extends Exception, V extends S<!|R|!>>void bar(S s) {}@464] EXACT_MATCH"
2003 );
2004 }
testTypeRefGenericsTest13_TypeArgument()2005 public void testTypeRefGenericsTest13_TypeArgument() throws CoreException {
2006 this.workingCopies = new ICompilationUnit[1];
2007 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test13/Test.java",
2008 "package test13;\n" +
2009 "public class Test<T> extends S<Exception> {\n" +
2010 " void foo(Test<Exception> test) {\n" +
2011 " this.<X<Exception>>foo(null);\n" +
2012 " super.<X<X<Exception>>>foo(null);\n" +
2013 " foo(null);\n" +
2014 " test.<X<X<X<RuntimeException>>>>foo(null);\n" +
2015 " }\n" +
2016 " void fred(Test<String> test) {\n" +
2017 " this.<X<Object>, Exception, Test<Exception>>bar(null);\n" +
2018 " super.<X<X<Object>>, RuntimeException, Test<X<Exception>>>bar(null);\n" +
2019 " bar(null);\n" +
2020 " test.<X<X<X<Object>>>, RuntimeException, Test<X<X<Exception>>>>bar(null);\n" +
2021 " }\n" +
2022 "}\n" +
2023 "class S<R> {\n" +
2024 " <T> T foo(T t) { return t; }\n" +
2025 " <T, U extends Exception, V extends S<R>>void bar(S s) {}\n" +
2026 "}\n" +
2027 "class X<T> {}\n"
2028 );
2029 IType type = this.workingCopies[0].getType("Test");
2030 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
2031 search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE | TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
2032 assertSearchResults(
2033 "src/test13/Test.java test13.Test [public class Test<T> extends S<!|Exception|!> {@47] EXACT_MATCH\n" +
2034 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ void foo(Test<!|Exception|!> test) {@75] EXACT_MATCH\n" +
2035 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ this.<!|X|!<Exception>>foo(null);@102] EXACT_MATCH\n" +
2036 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ this.<X<!|Exception|!>>foo(null);@104] EXACT_MATCH\n" +
2037 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ super.<!|X|!<X<Exception>>>foo(null);@135] EXACT_MATCH\n" +
2038 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ super.<X<!|X|!<Exception>>>foo(null);@137] EXACT_MATCH\n" +
2039 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ super.<X<X<!|Exception|!>>>foo(null);@139] EXACT_MATCH\n" +
2040 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<!|X|!<X<X<RuntimeException>>>>foo(null);@183] EXACT_MATCH\n" +
2041 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<X<!|X|!<X<RuntimeException>>>>foo(null);@185] EXACT_MATCH\n" +
2042 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<X<X<!|X|!<RuntimeException>>>>foo(null);@187] EXACT_MATCH\n" +
2043 "src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<X<X<X<!|RuntimeException|!>>>>foo(null);@189] EXACT_MATCH\n" +
2044 "src/test13/Test.java void test13.Test.fred(Test<String>) [ void fred(Test<!|String|!> test) {@239] EXACT_MATCH\n" +
2045 "src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<!|X|!<Object>, Exception, Test<Exception>>bar(null);@263] EXACT_MATCH\n" +
2046 "src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<!|Object|!>, Exception, Test<Exception>>bar(null);@265] EXACT_MATCH\n" +
2047 "src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<Object>, !|Exception|!, Test<Exception>>bar(null);@274] EXACT_MATCH\n" +
2048 "src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<Object>, Exception, !|Test|!<Exception>>bar(null);@285] EXACT_MATCH\n" +
2049 "src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<Object>, Exception, Test<!|Exception|!>>bar(null);@290] EXACT_MATCH\n" +
2050 "src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<!|X|!<X<Object>>, RuntimeException, Test<X<Exception>>>bar(null);@321] EXACT_MATCH\n" +
2051 "src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<!|X|!<Object>>, RuntimeException, Test<X<Exception>>>bar(null);@323] EXACT_MATCH\n" +
2052 "src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<!|Object|!>>, RuntimeException, Test<X<Exception>>>bar(null);@325] EXACT_MATCH\n" +
2053 "src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, !|RuntimeException|!, Test<X<Exception>>>bar(null);@335] EXACT_MATCH\n" +
2054 "src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, RuntimeException, !|Test|!<X<Exception>>>bar(null);@353] EXACT_MATCH\n" +
2055 "src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, RuntimeException, Test<!|X|!<Exception>>>bar(null);@358] EXACT_MATCH\n" +
2056 "src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, RuntimeException, Test<X<!|Exception|!>>>bar(null);@360] EXACT_MATCH\n" +
2057 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<!|X|!<X<X<Object>>>, RuntimeException, Test<X<X<Exception>>>>bar(null);@404] EXACT_MATCH\n" +
2058 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<!|X|!<X<Object>>>, RuntimeException, Test<X<X<Exception>>>>bar(null);@406] EXACT_MATCH\n" +
2059 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<X<!|X|!<Object>>>, RuntimeException, Test<X<X<Exception>>>>bar(null);@408] EXACT_MATCH\n" +
2060 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<X<X<!|Object|!>>>, RuntimeException, Test<X<X<Exception>>>>bar(null);@410] EXACT_MATCH\n" +
2061 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<X<X<Object>>>, !|RuntimeException|!, Test<X<X<Exception>>>>bar(null);@421] EXACT_MATCH\n" +
2062 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<X<X<Object>>>, RuntimeException, !|Test|!<X<X<Exception>>>>bar(null);@439] EXACT_MATCH\n" +
2063 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<X<X<Object>>>, RuntimeException, Test<!|X|!<X<Exception>>>>bar(null);@444] EXACT_MATCH\n" +
2064 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<X<X<Object>>>, RuntimeException, Test<X<!|X|!<Exception>>>>bar(null);@446] EXACT_MATCH\n" +
2065 "src/test13/Test.java void test13.Test.fred(Test<String>) [ test.<X<X<X<Object>>>, RuntimeException, Test<X<X<!|Exception|!>>>>bar(null);@448] EXACT_MATCH\n" +
2066 "src/test13/Test.java void test13.S.bar(S) [ <T, U extends Exception, V extends S<!|R|!>>void bar(S s) {}@558] EXACT_MATCH"
2067 );
2068 }
testTypeRefGenericsTest15_ClassInstanceCreation()2069 public void testTypeRefGenericsTest15_ClassInstanceCreation() throws CoreException {
2070 this.workingCopies = new ICompilationUnit[1];
2071 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test15/Test.java",
2072 "package test15;\n" +
2073 "public class Test {\n" +
2074 " Test() {}\n" +
2075 " <U> Test(U u) {}\n" +
2076 " static Test foo() {\n" +
2077 " return new <String> Test(\"\");\n" +
2078 " }\n" +
2079 " static Test bar() {\n" +
2080 " return new Test();\n" +
2081 " }\n" +
2082 "}\n"
2083 );
2084 IType type = this.workingCopies[0].getType("Test");
2085 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
2086 search("*", TYPE, CLASS_INSTANCE_CREATION_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
2087 assertSearchResults(
2088 "src/test15/Test.java Test test15.Test.foo() [ return new <String> !|Test|!(\"\");@108] EXACT_MATCH\n" +
2089 "src/test15/Test.java Test test15.Test.bar() [ return new !|Test|!();@156] EXACT_MATCH"
2090 );
2091 }
2092
2093 /**
2094 * @bug 212599: [search] fine grained search must not report matches in Javadoc
2095 * @test Ensure that fine grain references are not found in javadoc
2096 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=212599"
2097 */
testBug212599()2098 public void testBug212599() throws CoreException {
2099 this.workingCopies = new ICompilationUnit[2];
2100 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Ref.java",
2101 "public class Ref {\n" +
2102 " public int field;\n" +
2103 " public Ref foo() {\n" +
2104 " return null;\n" +
2105 " }\n" +
2106 "}\n"
2107 );
2108 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/Test.java",
2109 "/**\n" +
2110 " * @see Ref\n" +
2111 " */\n" +
2112 "public class Test {\n" +
2113 " Ref test;\n" +
2114 " /**\n" +
2115 " * @see Ref#field\n" +
2116 " * @see Ref#foo()\n" +
2117 " */\n" +
2118 " Ref bar() {\n" +
2119 " if (this.test != null) {\n" +
2120 " if (this.test.field > 0) {\n" +
2121 " return this.test;\n" +
2122 " }\n" +
2123 " return new Ref();\n" +
2124 " }\n" +
2125 " return null;\n" +
2126 " }\n" +
2127 "}\n"
2128 );
2129 IType type = this.workingCopies[0].getType("Ref");
2130 search(type, RETURN_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
2131 assertSearchResults(
2132 "src/Ref.java Ref Ref.foo() [ public !|Ref|! foo() {@46] EXACT_MATCH\n" +
2133 "src/Test.java Ref Test.bar() [ !|Ref|! bar() {@100] EXACT_MATCH"
2134 );
2135 }
testBug212599_all()2136 public void testBug212599_all() throws CoreException {
2137 this.workingCopies = new ICompilationUnit[2];
2138 this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Ref.java",
2139 "public class Ref {\n" +
2140 " public int field;\n" +
2141 " public Ref foo() {\n" +
2142 " return null;\n" +
2143 " }\n" +
2144 "}\n"
2145 );
2146 this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/Test.java",
2147 "/**\n" +
2148 " * @see Ref\n" +
2149 " */\n" +
2150 "public class Test {\n" +
2151 " Ref test;\n" +
2152 " /**\n" +
2153 " * @see Ref#field\n" +
2154 " * @see Ref#foo()\n" +
2155 " */\n" +
2156 " Ref bar() {\n" +
2157 " if (this.test != null) {\n" +
2158 " if (this.test.field > 0) {\n" +
2159 " return this.test;\n" +
2160 " }\n" +
2161 " return new Ref();\n" +
2162 " }\n" +
2163 " return null;\n" +
2164 " }\n" +
2165 "}\n"
2166 );
2167 IType type = this.workingCopies[0].getType("Ref");
2168 search(type, ALL_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
2169 assertSearchResults(
2170 "src/Ref.java Ref Ref.foo() [ public !|Ref|! foo() {@46] EXACT_MATCH\n" +
2171 "src/Test.java Test.test [ !|Ref|! test;@41] EXACT_MATCH\n" +
2172 "src/Test.java Ref Test.bar() [ !|Ref|! bar() {@100] EXACT_MATCH\n" +
2173 "src/Test.java Ref Test.bar() [ return new !|Ref|!();@210] EXACT_MATCH"
2174 );
2175 }
2176 }
2177