blob: bf063ff073976981000272c219e5edfabc9990ac [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Technical University Berlin - adapted for Object Teams
*******************************************************************************/
package org.eclipse.jdt.core.tests.model;
import junit.framework.Test;
import org.eclipse.core.runtime.*;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.core.search.SearchPattern;
/**
* Specific test suite for fine grained search.
*
* @bug 155013: [search] [DCR] More finegrained options for Java search
* @test Several tests sets trying to cover as many cases as possible.
* <p>
* Each set is organize the same way:
* <ul>
* <li>specific method defining the test case called by all the tests of the set,</li>
* <li>first test performs a search request without any fine grain flag defined
* to have a precise idea of what are the entire expected references,</li>
* <li>second test performs a search request with all fine grain flags
* defined to verify that flags combination works well</li>
* <li>each following test each defines one of the possible fine grain flag
* to verify that it works properly with the given test case,</li>
* </ul>
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=155013"
*/
public class JavaSearchFineGrainTests extends JavaSearchTests {
public JavaSearchFineGrainTests(String name) {
super(name);
this.endChar = "";
}
public static Test suite() {
return buildModelTestSuite(JavaSearchFineGrainTests.class);
}
static {
// org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
}
IJavaSearchScope getJavaSearchScope() {
return super.getJavaSearchScope15();
}
public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
if (this.wcOwner == null) {
this.wcOwner = new WorkingCopyOwner() {};
}
return getWorkingCopy(path, source, this.wcOwner);
}
protected void setUp () throws Exception {
super.setUp();
this.resultCollector = new JavaSearchResultCollector();
this.resultCollector.showAccuracy(true);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
}
static {
// TESTS_PREFIX = "testMethodRef";
}
/*
* References to a specific IField
*/
private final static int ALL_FIELD_METHOD_FINE_GRAIN_FLAGS =
SUPER_REFERENCE |
QUALIFIED_REFERENCE |
THIS_REFERENCE |
IMPLICIT_THIS_REFERENCE;
private IField setUpFieldRef() throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/field/def/Fields.java",
"package field.def;\n" +
"public class Fields {\n" +
" public Object field;\n" +
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/field/ref/TestFields.java",
"package field.ref;\n" +
"import field.def.Fields;\n" +
"public class TestFields extends Fields {\n" +
" boolean foo(Fields param) {\n" +
" return super.field == null ||\n" +
" param.field == null ||\n" +
" this.field == null ||\n" +
" field == null;\n" +
" }\n" +
"}\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
return this.workingCopies[0].getType("Fields").getField("field");
}
public void testFieldRef() throws CoreException {
search(setUpFieldRef(), REFERENCES);
assertSearchResults(
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ return super.!|field|! == null ||@129] EXACT_MATCH\n" +
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ param.!|field|! == null ||@155] EXACT_MATCH\n" +
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ this.!|field|! == null ||@180] EXACT_MATCH\n" +
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ !|field|! == null;@200] EXACT_MATCH"
);
}
public void testFieldRef_AllFlags() throws CoreException {
search(setUpFieldRef(), ALL_FIELD_METHOD_FINE_GRAIN_FLAGS);
assertSearchResults(
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ return super.!|field|! == null ||@129] EXACT_MATCH\n" +
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ param.!|field|! == null ||@155] EXACT_MATCH\n" +
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ this.!|field|! == null ||@180] EXACT_MATCH\n" +
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ !|field|! == null;@200] EXACT_MATCH"
);
}
public void testFieldRef_Qualified() throws CoreException {
search(setUpFieldRef(), QUALIFIED_REFERENCE);
assertSearchResults(
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ param.!|field|! == null ||@155] EXACT_MATCH"
);
}
public void testFieldRef_Simple() throws CoreException {
search(setUpFieldRef(), IMPLICIT_THIS_REFERENCE);
assertSearchResults(
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ !|field|! == null;@200] EXACT_MATCH"
);
}
public void testFieldRef_Super() throws CoreException {
search(setUpFieldRef(), SUPER_REFERENCE);
assertSearchResults(
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ return super.!|field|! == null ||@129] EXACT_MATCH"
);
}
public void testFieldRef_This() throws CoreException {
search(setUpFieldRef(), THIS_REFERENCE);
assertSearchResults(
"src/field/ref/TestFields.java boolean field.ref.TestFields.foo(Fields) [ this.!|field|! == null ||@180] EXACT_MATCH"
);
}
/*
* References to a specific IMethod
*/
private IMethod setUpMethodRef() throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/meth/def/Methods.java",
"package meth.def;\n" +
"public class Methods {\n" +
" public void method() {}\n" +
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/meth/ref/TestMethods.java",
"package meth.ref;\n" +
"import meth.def.Methods;\n" +
"public class TestMethods extends Methods {\n" +
" void foo(Methods param) {\n" +
" super.method();\n" +
" param.method();\n" +
" this.method();\n" +
" method();\n" +
" }\n" +
"}\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
return this.workingCopies[0].getType("Methods").getMethod("method", new String[0]);
}
public void testMethodRef() throws CoreException {
search(setUpMethodRef(), REFERENCES);
assertSearchResults(
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ super.!|method()|!;@121] EXACT_MATCH\n" +
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ param.!|method()|!;@139] EXACT_MATCH\n" +
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ this.!|method()|!;@156] EXACT_MATCH\n" +
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ !|method()|!;@168] EXACT_MATCH"
);
}
public void testMethodRef_AllFlags() throws CoreException {
search(setUpMethodRef(), ALL_FIELD_METHOD_FINE_GRAIN_FLAGS);
assertSearchResults(
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ super.!|method()|!;@121] EXACT_MATCH\n" +
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ param.!|method()|!;@139] EXACT_MATCH\n" +
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ this.!|method()|!;@156] EXACT_MATCH\n" +
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ !|method()|!;@168] EXACT_MATCH"
);
}
public void testMethodRef_Qualified() throws CoreException {
search(setUpMethodRef(), QUALIFIED_REFERENCE);
assertSearchResults(
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ param.!|method()|!;@139] EXACT_MATCH"
);
}
public void testMethodRef_Simple() throws CoreException {
search(setUpMethodRef(), IMPLICIT_THIS_REFERENCE);
assertSearchResults(
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ !|method()|!;@168] EXACT_MATCH"
);
}
public void testMethodRef_Super() throws CoreException {
search(setUpMethodRef(), SUPER_REFERENCE);
assertSearchResults(
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ super.!|method()|!;@121] EXACT_MATCH"
);
}
public void testMethodRef_This() throws CoreException {
search(setUpMethodRef(), THIS_REFERENCE);
assertSearchResults(
"src/meth/ref/TestMethods.java void meth.ref.TestMethods.foo(Methods) [ this.!|method()|!;@156] EXACT_MATCH"
);
}
private final static int ALL_TYPE_FINE_GRAIN_FLAGS =
FIELD_DECLARATION_TYPE_REFERENCE |
LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE |
PARAMETER_DECLARATION_TYPE_REFERENCE |
SUPERTYPE_TYPE_REFERENCE |
THROWS_CLAUSE_TYPE_REFERENCE |
CAST_TYPE_REFERENCE |
CATCH_TYPE_REFERENCE |
CLASS_INSTANCE_CREATION_TYPE_REFERENCE |
RETURN_TYPE_REFERENCE |
IMPORT_DECLARATION_TYPE_REFERENCE |
ANNOTATION_TYPE_REFERENCE |
TYPE_VARIABLE_BOUND_TYPE_REFERENCE |
TYPE_ARGUMENT_TYPE_REFERENCE |
WILDCARD_BOUND_TYPE_REFERENCE;
/*
* References to a specific IType
*/
private IType setUpTypeRef(int typeIndex) throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[3];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
"package type.def;\n" +
"@Bug\n" +
"@ATest\n" +
"public class Types extends Exception implements ITest1, ITest2 {\n" +
" ITest1 test1;\n" +
" ITest2 test2;\n" +
"}\n" +
"@Bug\n" +
"interface ITest1 {}\n" +
"@ATest\n" +
"interface ITest2 extends ITest1 {}\n" +
"@Bug\n" +
"@ATest\n" +
"enum ETest {}\n" +
"@Bug\n" +
"@interface ATest {}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/type/def/Bug.java",
"package type.def;\n" +
"public @interface Bug {\n" +
" int num() default 0;\n" +
" String comment() default \"\";\n" +
"}\n"
);
this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/type/ref/TestTypes.java",
"package type.ref;\n" +
"import type.def.Types;\n" +
"import type.def.Bug;\n" +
"\n" +
"@Bug(num=155013)\n" +
"public class TestTypes extends Types {\n" +
" @Bug(comment=\"field\")\n" +
" Types field;\n" +
" @Bug(comment=\"method\", num=155013)\n" +
" Types method(Types param) throws Types {\n" +
" Object obj = new Types();\n" +
" Types local = (Types) obj;\n" +
" return local;\n" +
" }\n" +
" Bug bar(Bug bug) {\n" +
" try {\n" +
" method(this);\n" +
" } catch (Types ex) {\n" +
" }\n" +
" return bug;\n" +
" }\n" +
"}\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
ICompilationUnit cu = this.workingCopies[typeIndex];
String cuName = cu.getElementName();
return cu.getType(cuName.substring(0, cuName.indexOf('.')));
}
public void testTypeRef() throws CoreException {
search(setUpTypeRef(0), REFERENCES);
assertSearchResults(
"src/type/ref/TestTypes.java [import !|type.def.Types|!;@25] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java type.ref.TestTypes [public class TestTypes extends !|Types|! {@111] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java type.ref.TestTypes.field [ !|Types|! field;@143] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@193] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@206] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@226] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@253] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@264] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@279] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Bug type.ref.TestTypes.bar(Bug) [ } catch (!|Types|! ex) {@366] EXACT_MATCH"
);
}
public void testTypeRef_AllFlags() throws CoreException {
search(setUpTypeRef(0), ALL_TYPE_FINE_GRAIN_FLAGS);
assertSearchResults(
"src/type/ref/TestTypes.java [import !|type.def.Types|!;@25] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java type.ref.TestTypes [public class TestTypes extends !|Types|! {@111] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java type.ref.TestTypes.field [ !|Types|! field;@143] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@193] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@206] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@226] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@253] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@264] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@279] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Bug type.ref.TestTypes.bar(Bug) [ } catch (!|Types|! ex) {@366] EXACT_MATCH"
);
}
public void testTypeRef_Allocation() throws CoreException {
search(setUpTypeRef(0), CLASS_INSTANCE_CREATION_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@253] EXACT_MATCH"
);
}
public void testTypeRef_Annotation() throws CoreException {
search(setUpTypeRef(1), ANNOTATION_TYPE_REFERENCE);
assertSearchResults(
"src/type/def/Types.java type.def.Types [@!|Bug|!@19] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest1 [@!|Bug|!@128] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ETest [@!|Bug|!@195] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ATest [@!|Bug|!@221] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java type.ref.TestTypes [@!|Bug|!(num=155013)@64] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java type.ref.TestTypes.field [ @!|Bug|!(comment=\"field\")@121] EXACT_MATCH\n" +
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ @!|Bug|!(comment=\"method\", num=155013)@158] EXACT_MATCH"
);
}
public void testTypeRef_Cast() throws CoreException {
search(setUpTypeRef(0), CAST_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@279] EXACT_MATCH"
);
}
public void testTypeRef_Catch() throws CoreException {
search(setUpTypeRef(0), CATCH_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java Bug type.ref.TestTypes.bar(Bug) [ } catch (!|Types|! ex) {@366] EXACT_MATCH"
);
}
public void testTypeRef_Field() throws CoreException {
search(setUpTypeRef(0), FIELD_DECLARATION_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java type.ref.TestTypes.field [ !|Types|! field;@143] EXACT_MATCH"
);
}
public void testTypeRef_Import() throws CoreException {
search(setUpTypeRef(0), IMPORT_DECLARATION_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java [import !|type.def.Types|!;@25] EXACT_MATCH"
);
}
public void testTypeRef_MethodParameter() throws CoreException {
search(setUpTypeRef(0), PARAMETER_DECLARATION_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@206] EXACT_MATCH"
);
}
public void testTypeRef_Return() throws CoreException {
search(setUpTypeRef(0), RETURN_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@193] EXACT_MATCH"
);
}
public void testTypeRef_Superinterface() throws CoreException {
IType type = setUpTypeRef(0);
search(((ICompilationUnit) type.getParent()).getType("ITest1"), SUPERTYPE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/type/def/Types.java type.def.Types [public class Types extends Exception implements !|ITest1|!, ITest2 {@78] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest2 [interface ITest2 extends !|ITest1|! {}@184] EXACT_MATCH"
);
}
public void testTypeRef_Supertype() throws CoreException {
search(setUpTypeRef(0), SUPERTYPE_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java type.ref.TestTypes [public class TestTypes extends !|Types|! {@111] EXACT_MATCH"
);
}
public void testTypeRef_Throws() throws CoreException {
search(setUpTypeRef(0), THROWS_CLAUSE_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@226] EXACT_MATCH"
);
}
public void testTypeRef_Variable() throws CoreException {
search(setUpTypeRef(0), LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE);
assertSearchResults(
"src/type/ref/TestTypes.java Types type.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@264] EXACT_MATCH"
);
}
/**
* @bug 221130: [search] No fine-grain search for instanceof criteria
* @test Verify that type references are only reported in instanceof pattern when
* corresponding fine grain flag is set.
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=221130"
*/
public void testTypeRef_InstanceOf() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Test.java",
"public class Test {\n" +
" Object field;\n" +
" void foo(Object param) {\n" +
" if (field instanceof java.lang.String) {\n" +
" }\n" +
" if (param instanceof Test) {\n" +
" }\n" +
" }\n" +
"}\n"
);
search("*", TYPE, INSTANCEOF_TYPE_REFERENCE);
assertSearchResults(
"src/Test.java void Test.foo(Object) [ if (field instanceof !|java.lang.String|!) {@84] EXACT_MATCH\n" +
"src/Test.java void Test.foo(Object) [ if (param instanceof !|Test|!) {@131] EXACT_MATCH"
);
}
public void testTypeRef_InstanceOfWithParenthesis() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Test.java",
"public class Test {\n" +
" Object field;\n" +
" void foo(Object param) {\n" +
" if ((field instanceof Test)) {\n" +
" }\n" +
" if ((param instanceof java.lang.Throwable)) {\n" +
" }\n" +
" }\n" +
"}\n"
);
search("*", TYPE, INSTANCEOF_TYPE_REFERENCE);
assertSearchResults(
"src/Test.java void Test.foo(Object) [ if ((field instanceof !|Test|!)) {@85] EXACT_MATCH\n" +
"src/Test.java void Test.foo(Object) [ if ((param instanceof !|java.lang.Throwable|!)) {@122] EXACT_MATCH"
);
}
/*
* References to a all types (using '*' string pattern)
*/
private void setUpTypeRefAll() throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[3];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
"package type.def;\n" +
"@Bug\n" +
"@ATest\n" +
"public class Types extends Exception implements ITest1, ITest2 {\n" +
" ITest1 test1;\n" +
" ITest2 test2;\n" +
"}\n" +
"@Bug\n" +
"interface ITest1 {}\n" +
"@ATest\n" +
"interface ITest2 extends ITest1 {}\n" +
"@Bug\n" +
"@ATest\n" +
"enum ETest {}\n" +
"@Bug\n" +
"@interface ATest {}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/type/def/Bug.java",
"package type.def;\n" +
"public @interface Bug {\n" +
" int num() default 0;\n" +
" String comment() default \"\";\n" +
"}\n"
);
this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/all/types/ref/TestTypes.java",
"package all.types.ref;\n" +
"\n" +
"import type.def.Bug;\n" +
"import type.def.Types;\n" +
"\n" +
"@Bug(num=155013)\n" +
"public class TestTypes extends Types {\n" +
" @Bug(comment=\"field\")\n" +
" Types field = new Types(), local, other = new Types();\n" +
" {\n" +
" Object o;\n" +
" Types t;\n" +
" if (this.field == null) {\n" +
" try {\n" +
" t = new TestTypes();\n" +
" } catch (RuntimeException e) {\n" +
" t = new Types();\n" +
" } \n" +
" } else {\n" +
" o = this.field;\n" +
" t = (Types) o;\n" +
" }\n" +
" local = t;\n" +
" };\n" +
" @Bug(comment=\"method\", num=155013)\n" +
" Types method(Types param) throws Types {\n" +
" Object obj = new Types();\n" +
" Types local = (Types) obj;\n" +
" return local;\n" +
" }\n" +
" Bug bar(Bug bug) {\n" +
" try {\n" +
" method(this);\n" +
" }\n" +
" catch (Types ex) {}\n" +
" catch (Exception ex) {}\n" +
" return bug; \n" +
" }\n" +
" // Other types references\n" +
" Object object;\n" +
" String str;\n" +
" TestTypes() throws Types, RuntimeException {\n" +
" if (this.object instanceof String) {\n" +
" this.str = (String) this.object;\n" +
" } else {\n" +
" this.str = new String();\n" +
" this.object = new Object();\n" +
" }\n" +
" }\n" +
"}\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
}
public void testTypeRefAll_Allocation() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, CLASS_INSTANCE_CREATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ Types field = new !|Types|!(), local, other = new Types();@167] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.other [ Types field = new Types(), local, other = new !|Types|!();@195] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|TestTypes|!();@279] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|Types|!();@338] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Object obj = new !|Types|!();@519] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = new !|String|!();@897] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.object = new !|Object|!();@928] EXACT_MATCH"
);
}
public void testTypeRefAll_Annotation() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, ANNOTATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order:
/* orig:
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [@!|Bug|!(num=155013)@70] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ @!|Bug|!(comment=\"field\")@127] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ @!|Bug|!(comment=\"method\", num=155013)@424] EXACT_MATCH\n" +
*/
"src/type/def/Types.java type.def.Types [@!|Bug|!@19] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types [@!|ATest|!@24] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest1 [@!|Bug|!@128] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest2 [@!|ATest|!@153] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ETest [@!|Bug|!@195] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ETest [@!|ATest|!@200] EXACT_MATCH\n" +
/*
"src/type/def/Types.java type.def.ATest [@!|Bug|!@221] EXACT_MATCH"
:giro */
"src/type/def/Types.java type.def.ATest [@!|Bug|!@221] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [@!|Bug|!(num=155013)@70] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ @!|Bug|!(comment=\"field\")@127] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ @!|Bug|!(comment=\"method\", num=155013)@424] EXACT_MATCH"
// SH}
);
}
public void testTypeRefAll_Cast() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, CAST_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = (!|Types|!) o;@391] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Types local = (!|Types|!) obj;@545] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = (!|String|!) this.object;@847] EXACT_MATCH"
);
}
public void testTypeRefAll_Catch() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, CATCH_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ } catch (!|RuntimeException|! e) {@304] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ catch (!|Types|! ex) {}@634] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ catch (!|Exception|! ex) {}@656] EXACT_MATCH"
);
}
public void testTypeRefAll_Field() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, FIELD_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order:
/* orig:
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ !|Types|! field = new Types(), local, other = new Types();@149] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.object [ !|Object|! object;@719] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.str [ !|String|! str;@735] EXACT_MATCH\n" +
*/
"src/type/def/Types.java type.def.Types.test1 [ !|ITest1|! test1;@96] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types.test2 [ !|ITest2|! test2;@111] EXACT_MATCH"
// :giro
+"\n"+
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ !|Types|! field = new Types(), local, other = new Types();@149] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.object [ !|Object|! object;@719] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.str [ !|String|! str;@735] EXACT_MATCH"
// SH}
);
}
public void testTypeRefAll_Import() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, IMPORT_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java [import !|type.def.Bug|!;@31] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java [import !|type.def.Types|!;@52] EXACT_MATCH"
);
}
public void testTypeRefAll_MethodParameter() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, PARAMETER_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Types method(!|Types|! param) throws Types {@472] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ Bug bar(!|Bug|! bug) {@585] EXACT_MATCH"
);
}
public void testTypeRefAll_Return() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, RETURN_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order:
/* orig:
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@459] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ !|Bug|! bar(Bug bug) {@577] EXACT_MATCH\n" +
*/
"src/type/def/Bug.java int type.def.Bug.num() [ !|int|! num() default 0;@43] EXACT_MATCH\n" +
"src/type/def/Bug.java String type.def.Bug.comment() [ !|String|! comment() default \"\";@65] EXACT_MATCH"
// :giro
+"\n"+
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ !|Types|! method(Types param) throws Types {@459] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Bug all.types.ref.TestTypes.bar(Bug) [ !|Bug|! bar(Bug bug) {@577] EXACT_MATCH"
// SH}
);
}
public void testTypeRefAll_Supertype() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, SUPERTYPE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order:
/* orig:
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [public class TestTypes extends !|Types|! {@117] EXACT_MATCH\n" +
*/
"src/type/def/Types.java type.def.Types [public class Types extends !|Exception|! implements ITest1, ITest2 {@57] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types [public class Types extends Exception implements !|ITest1|!, ITest2 {@78] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types [public class Types extends Exception implements ITest1, !|ITest2|! {@86] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest2 [interface ITest2 extends !|ITest1|! {}@184] EXACT_MATCH"
// :giro
+"\n"+
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [public class TestTypes extends !|Types|! {@117] EXACT_MATCH"
// SH}
);
}
public void testTypeRefAll_Throws() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, THROWS_CLAUSE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ Types method(Types param) throws !|Types|! {@492] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws !|Types|!, RuntimeException {@767] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws Types, !|RuntimeException|! {@774] EXACT_MATCH"
);
}
public void testTypeRefAll_Variable() throws CoreException {
setUpTypeRefAll();
search("*", TYPE, LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|Object|! o;@209] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|Types|! t;@221] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ !|Object|! obj = new Types();@502] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java Types all.types.ref.TestTypes.method(Types) [ !|Types|! local = (Types) obj;@530] EXACT_MATCH"
);
}
private final static int ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS =
TYPE_VARIABLE_BOUND_TYPE_REFERENCE |
TYPE_ARGUMENT_TYPE_REFERENCE |
WILDCARD_BOUND_TYPE_REFERENCE;
/*
* References to a specific generic IType and all types.
*/
private IType setUpTypeRefGeneric01() throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[3];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
"package type.def;\n" +
"public class Types {}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/test01/Generic.java",
"package test01;\n" +
"import java.io.Serializable;\n" +
"import type.def.Types;\n" +
"public class Generic<T extends Types, U extends Types & Comparable<Types> & Serializable, V extends A<? super Types>> {\n" +
" Generic<? extends Types, ?, ?> field;\n" +
" Comparable<String> comp;\n" +
" Class<? extends Exception> clazz;\n" +
"}\n" +
"class A<R> {}\n"
);
this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/test01/TestGeneric.java",
"package test01;\n" +
"import java.io.Serializable;\n" +
"import type.def.Types;\n" +
"public class TestGeneric<T> extends Generic<Types, UClass, VClass> {\n" +
" TestGeneric<Types> test;\n" +
" TestGeneric<String> foo(TestGeneric<Types> param1, Comparable<String> param2) {\n" +
" return null;\n" +
" }\n" +
" Comparable<TestGeneric<Types>> bar() {\n" +
" return null;\n" +
" } \n" +
"}\n" +
"class UClass extends Types implements Comparable<Types>, Serializable {\n" +
" private static final long serialVersionUID = 1L;\n" +
" public int compareTo(Types o) {\n" +
" return 0;\n" +
" }\n" +
"}\n" +
"class VClass extends A<Types> {}\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
return this.workingCopies[0].getType("Types");
}
public void testTypeRefGeneric01() throws CoreException {
search(setUpTypeRefGeneric01(), REFERENCES);
assertSearchResults(
"src/test01/Generic.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
"src/test01/TestGeneric.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
"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" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends !|Types|! implements Comparable<Types>, Serializable {@345] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
"src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public int compareTo(!|Types|! o) {@468] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
);
}
public void testTypeRefGeneric01_AllFlags() throws CoreException {
search(setUpTypeRefGeneric01(), ALL_TYPE_FINE_GRAIN_FLAGS);
assertSearchResults(
"src/test01/Generic.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
"src/test01/TestGeneric.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
"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" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends !|Types|! implements Comparable<Types>, Serializable {@345] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
"src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public int compareTo(!|Types|! o) {@468] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
);
}
public void testTypeRefGeneric01_TypeArgument() throws CoreException {
search(setUpTypeRefGeneric01(), TYPE_ARGUMENT_TYPE_REFERENCE);
assertSearchResults(
"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" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
"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" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
);
}
public void testTypeRefGeneric01_TypeVariableBound() throws CoreException {
search(setUpTypeRefGeneric01(), TYPE_VARIABLE_BOUND_TYPE_REFERENCE);
assertSearchResults(
"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" +
"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"
);
}
public void testTypeRefGeneric01_WildcardBound() throws CoreException {
search(setUpTypeRefGeneric01(), WILDCARD_BOUND_TYPE_REFERENCE);
assertSearchResults(
"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" +
"src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH"
);
}
public void testTypeRefGenericAll01() throws CoreException {
setUpTypeRefGeneric01();
search("*", TYPE, REFERENCES, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/test01/Generic.java [import !|java.io.Serializable|!;@23] EXACT_MATCH\n" +
"src/test01/Generic.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test01/Generic.java test01.Generic.field [ !|Generic|!<? extends Types, ?, ?> field;@189] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.comp [ !|Comparable|!<String> comp;@228] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.comp [ Comparable<!|String|!> comp;@239] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.clazz [ !|Class|!<? extends Exception> clazz;@254] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.clazz [ Class<? extends !|Exception|!> clazz;@270] EXACT_MATCH\n" +
"src/test01/TestGeneric.java [import !|java.io.Serializable|!;@23] EXACT_MATCH\n" +
"src/test01/TestGeneric.java [import !|type.def.Types|!;@52] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends !|Generic|!<Types, UClass, VClass> {@104] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, !|UClass|!, VClass> {@119] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, UClass, !|VClass|!> {@127] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric.test [ !|TestGeneric|!<Types> test;@138] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ !|Comparable|!<TestGeneric<Types>> bar() {@264] EXACT_MATCH\n" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<!|TestGeneric|!<Types>> bar() {@275] EXACT_MATCH\n" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends !|Types|! implements Comparable<Types>, Serializable {@345] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements !|Comparable|!<Types>, Serializable {@362] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<Types>, !|Serializable|! {@381] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass.serialVersionUID [ private static final !|long|! serialVersionUID = 1L;@418] EXACT_MATCH\n" +
"src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public !|int|! compareTo(Types o) {@454] EXACT_MATCH\n" +
"src/test01/TestGeneric.java int test01.UClass.compareTo(Types) [ public int compareTo(!|Types|! o) {@468] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.VClass [class VClass extends !|A|!<Types> {}@517] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
);
}
public void testTypeRefGenericAll01_AllGenericFlags() throws CoreException {
setUpTypeRefGeneric01();
search("*", TYPE, ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.comp [ Comparable<!|String|!> comp;@239] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.clazz [ Class<? extends !|Exception|!> clazz;@270] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, !|UClass|!, VClass> {@119] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, UClass, !|VClass|!> {@127] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<!|TestGeneric|!<Types>> bar() {@275] EXACT_MATCH\n" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
);
}
public void testTypeRefGenericAll01_TypeArgument() throws CoreException {
setUpTypeRefGeneric01();
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"src/test01/Generic.java test01.Generic.comp [ Comparable<!|String|!> comp;@239] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<!|Types|!, UClass, VClass> {@112] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, !|UClass|!, VClass> {@119] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric [public class TestGeneric<T> extends Generic<Types, UClass, !|VClass|!> {@127] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.TestGeneric.test [ TestGeneric<!|Types|!> test;@150] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<!|TestGeneric|!<Types>> bar() {@275] EXACT_MATCH\n" +
"src/test01/TestGeneric.java Comparable<TestGeneric<Types>> test01.TestGeneric.bar() [ Comparable<TestGeneric<!|Types|!>> bar() {@287] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.UClass [class UClass extends Types implements Comparable<!|Types|!>, Serializable {@373] EXACT_MATCH\n" +
"src/test01/TestGeneric.java test01.VClass [class VClass extends A<!|Types|!> {}@519] EXACT_MATCH"
);
}
public void testTypeRefGenericAll01_TypeVariableBound() throws CoreException {
setUpTypeRefGeneric01();
search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAll01_WildcardBound() throws CoreException {
setUpTypeRefGeneric01();
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"src/test01/Generic.java test01.Generic.field [ Generic<? extends !|Types|!, ?, ?> field;@207] EXACT_MATCH\n" +
"src/test01/Generic.java test01.Generic.clazz [ Class<? extends !|Exception|!> clazz;@270] EXACT_MATCH"
);
}
/*
* Same test than previous ones with another example
*/
private IType setUpTypeRefGeneric02() throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test02/Test.java",
"package test02;\n" +
"public class Test <T, U, V> {\n" +
" Test<A, ? extends B, ? super C> field = new Test<A, Z<String>, X<String>> () {\n" +
" X<String> x;\n" +
" Test<A, B, C> t;\n" +
" Test<X<Y<Z<String>>>, Y<Z<String>>, Z<String>> bar() {\n" +
" return new Test<X<Y<Z<String>>>, Y<Z<String>>, Z<String>>();\n" +
" }\n" +
" };\n" +
" Test<? super A, B, ? extends C> foo(Test<? extends A, ? super B, C> param) {\n" +
" return null;\n" +
" };\n" +
"}\n" +
"class A {}\n" +
"class B {}\n" +
"class C extends X<String> {}\n" +
"class X<R> {}\n" +
"class Y<S> extends A {}\n" +
"class Z<P> extends B {}\n" +
"\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
return this.workingCopies[0].getType("Types");
}
public void testTypeRefGenericAll02() throws CoreException {
setUpTypeRefGeneric02();
search("*", TYPE, REFERENCES, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.x [ !|X|!<String> x;@128] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.x [ X<!|String|!> x;@130] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ !|Test|!<A, B, C> t;@143] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<!|A|!, B, C> t;@148] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, !|B|!, C> t;@151] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, B, !|C|!> t;@154] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test02/Test.java test02.C [class C extends !|X|!<String> {}@426] EXACT_MATCH\n" +
"src/test02/Test.java test02.C [class C extends X<!|String|!> {}@428] EXACT_MATCH\n" +
"src/test02/Test.java test02.Y [class Y<S> extends !|A|! {}@472] EXACT_MATCH\n" +
"src/test02/Test.java test02.Z [class Z<P> extends !|B|! {}@496] EXACT_MATCH"
);
}
public void testTypeRefGenericAll02_AllGenericFlags() throws CoreException {
setUpTypeRefGeneric02();
search("*", TYPE, ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/test02/Test.java test02.Test.field:<anonymous>#1.x [ X<!|String|!> x;@130] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<!|A|!, B, C> t;@148] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, !|B|!, C> t;@151] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, B, !|C|!> t;@154] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test02/Test.java test02.C [class C extends X<!|String|!> {}@428] EXACT_MATCH"
);
}
public void testTypeRefGenericAll02_TypeArgumentl() throws CoreException {
setUpTypeRefGeneric02();
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/test02/Test.java test02.Test.field:<anonymous>#1.x [ X<!|String|!> x;@130] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<!|A|!, B, C> t;@148] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, !|B|!, C> t;@151] EXACT_MATCH\n" +
"src/test02/Test.java test02.Test.field:<anonymous>#1.t [ Test<A, B, !|C|!> t;@154] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test02/Test.java test02.C [class C extends X<!|String|!> {}@428] EXACT_MATCH"
);
}
public void testTypeRefGenericAll02_TypeVariableBound() throws CoreException {
setUpTypeRefGeneric02();
search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults("");
}
public void testTypeRefGenericAll02_WildcardBound() throws CoreException {
setUpTypeRefGeneric02();
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
/*
* References to all qualified types (using '*' string pattern)
*/
private void setUpTypeRefGenericMethod() throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test/Test.java",
"package test;\n" +
"public class Test {\n" +
" void foo(A<String> a) {\n" +
" a.<String>foo();\n" +
" a.<A<? extends Exception>>foo();\n" +
" }\n" +
"}\n" +
"class A<T> {\n" +
" <U> void foo() {}\n" +
"}\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
}
public void testTypeRefGenericMethod_AllGenericFlags() throws CoreException {
setUpTypeRefGenericMethod();
search("*", TYPE, ALL_GENERIC_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/test/Test.java void test.Test.foo(A<String>) [ void foo(A<!|String|!> a) {@46] EXACT_MATCH\n" +
"src/test/Test.java void test.Test.foo(A<String>) [ a.<!|String|!>foo();@64] EXACT_MATCH\n" +
"src/test/Test.java void test.Test.foo(A<String>) [ a.<!|A|!<? extends Exception>>foo();@83] EXACT_MATCH\n" +
"src/test/Test.java void test.Test.foo(A<String>) [ a.<A<? extends !|Exception|!>>foo();@95] EXACT_MATCH"
);
}
public void testTypeRefGenericMethod_TypeArgument() throws CoreException {
setUpTypeRefGenericMethod();
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/test/Test.java void test.Test.foo(A<String>) [ void foo(A<!|String|!> a) {@46] EXACT_MATCH\n" +
"src/test/Test.java void test.Test.foo(A<String>) [ a.<!|String|!>foo();@64] EXACT_MATCH\n" +
"src/test/Test.java void test.Test.foo(A<String>) [ a.<!|A|!<? extends Exception>>foo();@83] EXACT_MATCH"
);
}
public void testTypeRefGenericMethod_TypeVariableBound() throws CoreException {
setUpTypeRefGenericMethod();
search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults("");
}
public void testTypeRefGenericMethod_WildcardBound() throws CoreException {
setUpTypeRefGenericMethod();
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/test/Test.java void test.Test.foo(A<String>) [ a.<A<? extends !|Exception|!>>foo();@95] EXACT_MATCH"
);
}
/*
* References to all qualified types (using '*' string pattern)
*/
private void setUpTypeRefQualifiedAll() throws JavaModelException {
final ProblemRequestor problemRequestor = new ProblemRequestor();
this.wcOwner = new WorkingCopyOwner() {
public IProblemRequestor getProblemRequestor(ICompilationUnit workingCopy) {
return problemRequestor;
}
};
this.workingCopies = new ICompilationUnit[3];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/type/def/Types.java",
"package type.def;\n" +
"@Bug\n" +
"@ATest\n" +
"public class Types extends Exception implements ITest1, ITest2 {\n" +
" ITest1 test1;\n" +
" ITest2 test2;\n" +
"}\n" +
"@Bug\n" +
"interface ITest1 {}\n" +
"@ATest\n" +
"interface ITest2 extends ITest1 {}\n" +
"@Bug\n" +
"@ATest\n" +
"enum ETest {}\n" +
"@Bug\n" +
"@interface ATest {}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/type/def/Bug.java",
"package type.def;\n" +
"public @interface Bug {\n" +
" int num() default 0;\n" +
" String comment() default \"\";\n" +
"}\n"
);
this.workingCopies[2] = getWorkingCopy("/JavaSearch15/src/all/types/ref/TestTypes.java",
"package all.types.ref;\n" +
"\n" +
"@type.def.Bug(num=155013)\n" +
"public class TestTypes extends type.def.Types {\n" +
" @type.def.Bug(comment=\"field\")\n" +
" type.def.Types field = new type.def.Types(), local, other = new type.def.Types();\n" +
" {\n" +
" Object o;\n" +
" type.def.Types t;\n" +
" if (this.field == null) {\n" +
" try {\n" +
" t = new TestTypes();\n" +
" } catch (RuntimeException e) {\n" +
" t = new type.def.Types();\n" +
" } \n" +
" } else {\n" +
" o = this.field;\n" +
" t = (type.def.Types) o;\n" +
" }\n" +
" local = t;\n" +
" };\n" +
" @type.def.Bug(comment=\"method\", num=155013)\n" +
" type.def.Types method(type.def.Types param) throws type.def.Types {\n" +
" Object obj = new type.def.Types();\n" +
" type.def.Types local = (type.def.Types) obj;\n" +
" return local;\n" +
" }\n" +
" type.def.Bug bar(type.def.Bug bug) {\n" +
" try {\n" +
" method(this);\n" +
" }\n" +
" catch (type.def.Types ex) {}\n" +
" catch (Exception ex) {}\n" +
" return bug; \n" +
" }\n" +
" // Other types references\n" +
" Object object;\n" +
" String str;\n" +
" TestTypes() throws type.def.Types, RuntimeException {\n" +
" if (this.object instanceof String) {\n" +
" this.str = (String) this.object;\n" +
" } else {\n" +
" this.str = new String();\n" +
" this.object = new Object();\n" +
" }\n" +
" }\n" +
"}\n"
);
assertEquals("CU Should not have any problem!",
"----------\n" +
"----------\n",
problemRequestor.problems.toString()
);
this.resultCollector.showSelection();
this.resultCollector.showOffset();
}
public void testTypeRefQualifiedAll_Allocation() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, CLASS_INSTANCE_CREATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"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" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|TestTypes|!();@297] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = new !|type.def.Types|!();@356] EXACT_MATCH\n" +
"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" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = new !|String|!();@1032] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.object = new !|Object|!();@1063] EXACT_MATCH"
);
}
public void testTypeRefQualifiedAll_Annotation() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, ANNOTATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order:
/* orig:
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [@!|type.def.Bug|!(num=155013)@25] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ @!|type.def.Bug|!(comment=\"field\")@100] EXACT_MATCH\n" +
"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" +
*/
"src/type/def/Types.java type.def.Types [@!|Bug|!@19] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types [@!|ATest|!@24] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest1 [@!|Bug|!@128] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest2 [@!|ATest|!@153] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ETest [@!|Bug|!@195] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ETest [@!|ATest|!@200] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ATest [@!|Bug|!@221] EXACT_MATCH"
// :giro
+"\n"+
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [@!|type.def.Bug|!(num=155013)@25] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.field [ @!|type.def.Bug|!(comment=\"field\")@100] EXACT_MATCH\n" +
"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"
// SH}
);
}
public void testTypeRefQualifiedAll_Cast() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, CAST_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ t = (!|type.def.Types|!) o;@418] EXACT_MATCH\n" +
"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" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ this.str = (!|String|!) this.object;@982] EXACT_MATCH"
);
}
public void testTypeRefQualifiedAll_Catch() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, CATCH_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ } catch (!|RuntimeException|! e) {@322] EXACT_MATCH\n" +
"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" +
"src/all/types/ref/TestTypes.java type.def.Bug all.types.ref.TestTypes.bar(type.def.Bug) [ catch (!|Exception|! ex) {}@782] EXACT_MATCH"
);
}
public void testTypeRefQualifiedAll_Field() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, FIELD_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order:
"src/type/def/Types.java type.def.Types.test1 [ !|ITest1|! test1;@96] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types.test2 [ !|ITest2|! test2;@111] EXACT_MATCH\n" +
// orig:
"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" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.object [ !|Object|! object;@845] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.str [ !|String|! str;@861] EXACT_MATCH"
/*
"src/type/def/Types.java type.def.Types.test1 [ !|ITest1|! test1;@96] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types.test2 [ !|ITest2|! test2;@111] EXACT_MATCH"
:giro */
// SH}
);
}
public void testTypeRefQualifiedAll_Import() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, IMPORT_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults("");
}
public void testTypeRefQualifiedAll_MethodParameter() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, PARAMETER_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"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"
);
}
public void testTypeRefQualifiedAll_Return() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, RETURN_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order:
/* orig:
"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" +
"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" +
*/
"src/type/def/Bug.java int type.def.Bug.num() [ !|int|! num() default 0;@43] EXACT_MATCH\n" +
"src/type/def/Bug.java String type.def.Bug.comment() [ !|String|! comment() default \"\";@65] EXACT_MATCH"
// :giro
+"\n"+
"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" +
"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"
// SH}
);
}
public void testTypeRefQualifiedAll_Supertype() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, SUPERTYPE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
//{ObjectTeams: changed order
/* orig:
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [public class TestTypes extends !|type.def.Types|! {@81] EXACT_MATCH\n" +
*/
"src/type/def/Types.java type.def.Types [public class Types extends !|Exception|! implements ITest1, ITest2 {@57] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types [public class Types extends Exception implements !|ITest1|!, ITest2 {@78] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.Types [public class Types extends Exception implements ITest1, !|ITest2|! {@86] EXACT_MATCH\n" +
"src/type/def/Types.java type.def.ITest2 [interface ITest2 extends !|ITest1|! {}@184] EXACT_MATCH"
// :giro
+"\n"+
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes [public class TestTypes extends !|type.def.Types|! {@81] EXACT_MATCH"
// SH}
);
}
public void testTypeRefQualifiedAll_Throws() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, THROWS_CLAUSE_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"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" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws !|type.def.Types|!, RuntimeException {@893] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes() [ TestTypes() throws type.def.Types, !|RuntimeException|! {@909] EXACT_MATCH"
);
}
public void testTypeRefQualifiedAll_Variable() throws CoreException {
setUpTypeRefQualifiedAll();
search("*", TYPE, LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|Object|! o;@218] EXACT_MATCH\n" +
"src/all/types/ref/TestTypes.java all.types.ref.TestTypes.{} [ !|type.def.Types|! t;@230] EXACT_MATCH\n" +
"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" +
"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"
);
}
/*
* Tests using classes defined in JavaSearch15 project
*/
public void testTypeRefGenericAllG1_TypeArgument() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g1/t/s/ref/R3.java").getType("R3");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG1_WildcardBounds() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g1/t/s/ref/R3.java").getType("R3");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG2_TypeArgument() throws CoreException {
// TODO The JavaSearch15/src/g2/f/s/def/R3.java should be updated as it contains compilation errors!
IType type = getCompilationUnit("JavaSearch15/src/g2/f/s/def/R3.java").getType("R3");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG2_WildcardBounds() throws CoreException {
// TODO The JavaSearch15/src/g2/f/s/def/R3.java should be updated as it contains compilation errors!
IType type = getCompilationUnit("JavaSearch15/src/g2/f/s/def/R3.java").getType("R3");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG3R3_TypeArgument() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g3/t/ref/R3.java").getType("R3");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/g3/t/ref/R3.java g3.t.ref.R3.sgsm_wld [ public GS<!|GM<?, ?, ?>.Generic|!<?, ?, ?>>.Generic<?> sgsm_wld;@321] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG3R3_WildcardBounds() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g3/t/ref/R3.java").getType("R3");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG3R3_TypeVariableBounds() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g3/t/ref/R3.java").getType("R3");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults("");
}
public void testTypeRefGenericAllG5_TypeArgument() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java").getType("RefMultiple");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG5_WildcardBounds() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java").getType("RefMultiple");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG5_TypeVariableBounds() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g5/m/ref/RefMultiple.java").getType("RefMultiple");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults("");
}
public void testTypeRefGenericAllG6_TypeArgument() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g6/t/ref/QualifMultiple.java").getType("QualifMultiple");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG6_WildcardBounds() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g6/t/ref/QualifMultiple.java").getType("QualifMultiple");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, FIELD_DECLARATION_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericAllG6_TypeVariableBounds() throws CoreException {
IType type = getCompilationUnit("JavaSearch15/src/g6/t/ref/QualifMultiple.java").getType("QualifMultiple");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_VARIABLE_BOUND_TYPE_REFERENCE | WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults("");
}
// Additional tests
public void testTypeRefGenericsTest06_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test06/Test.java",
"package test06;\n" +
"public class Test {\n" +
" X<Exception> x; \n" +
" Y<Object, String, Exception> y; \n" +
"}\n" +
"class X<T> {}\n" +
"class Y<R, S, T> {}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test06/Test.java test06.Test.x [ X<!|Exception|!> x; @39] EXACT_MATCH\n" +
"src/test06/Test.java test06.Test.y [ Y<!|Object|!, String, Exception> y; @57] EXACT_MATCH\n" +
"src/test06/Test.java test06.Test.y [ Y<Object, !|String|!, Exception> y; @65] EXACT_MATCH\n" +
"src/test06/Test.java test06.Test.y [ Y<Object, String, !|Exception|!> y; @73] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest07_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test07/Test.java",
"package test07;\n" +
"public class Test {\n" +
" Y<Y<Exception>> y1;\n" +
" Y<X<Object, String, Exception>> y2;\n" +
" X<Y<Object>, Y<String>, Y<Exception>> x1;\n" +
" X<X<Object, Object, Object>, X<String, String, String>, X<Exception, Exception, Exception>> x2;\n" +
"}\n" +
"class X<R, S, T> {}\n" +
"class Y<U> {}"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test07/Test.java test07.Test.y1 [ Y<!|Y|!<Exception>> y1;@39] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.y1 [ Y<Y<!|Exception|!>> y1;@41] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.y2 [ Y<!|X|!<Object, String, Exception>> y2;@60] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.y2 [ Y<X<!|Object|!, String, Exception>> y2;@62] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.y2 [ Y<X<Object, !|String|!, Exception>> y2;@70] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.y2 [ Y<X<Object, String, !|Exception|!>> y2;@78] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.x1 [ X<!|Y|!<Object>, Y<String>, Y<Exception>> x1;@97] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.x1 [ X<Y<!|Object|!>, Y<String>, Y<Exception>> x1;@99] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.x1 [ X<Y<Object>, !|Y|!<String>, Y<Exception>> x1;@108] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.x1 [ X<Y<Object>, Y<!|String|!>, Y<Exception>> x1;@110] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.x1 [ X<Y<Object>, Y<String>, !|Y|!<Exception>> x1;@119] EXACT_MATCH\n" +
"src/test07/Test.java test07.Test.x1 [ X<Y<Object>, Y<String>, Y<!|Exception|!>> x1;@121] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test07/Test.java test07.Test.x2 [ X<X<Object, Object, Object>, X<String, String, String>, X<Exception, Exception, !|Exception|!>> x2;@218] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest08_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test08/Test.java",
"package test08;\n" +
"public class Test {\n" +
" Z<\n" +
" Y<X<Object>, X<String>, X<Exception>>,\n" +
" X<Y<Object, String, X<Exception>>>,\n" +
" Z<Object, X<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,\n" +
" X<X<X<X<String>>>>> z;\n" +
"}\n" +
"class X<R> {}\n" +
"class Y<S, T, U> {}\n" +
"class Z<A, B, C, D> {}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test08/Test.java test08.Test.z [ !|Y|!<X<Object>, X<String>, X<Exception>>,@42] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Y<!|X|!<Object>, X<String>, X<Exception>>,@44] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Y<X<!|Object|!>, X<String>, X<Exception>>,@46] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Y<X<Object>, !|X|!<String>, X<Exception>>,@55] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Y<X<Object>, X<!|String|!>, X<Exception>>,@57] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Y<X<Object>, X<String>, !|X|!<Exception>>,@66] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Y<X<Object>, X<String>, X<!|Exception|!>>,@68] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ !|X|!<Y<Object, String, X<Exception>>>,@83] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<!|Y|!<Object, String, X<Exception>>>,@85] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<Y<!|Object|!, String, X<Exception>>>,@87] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<Y<Object, !|String|!, X<Exception>>>,@95] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<Y<Object, String, !|X|!<Exception>>>,@103] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<Y<Object, String, X<!|Exception|!>>>,@105] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ !|Z|!<Object, X<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@121] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<!|Object|!, X<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@123] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, !|X|!<String>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@131] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<!|String|!>, X<X<Exception>>, X<X<X<java.io.Serializable>>>>,@133] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<String>, !|X|!<X<Exception>>, X<X<X<java.io.Serializable>>>>,@142] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<!|X|!<Exception>>, X<X<X<java.io.Serializable>>>>,@144] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<!|Exception|!>>, X<X<X<java.io.Serializable>>>>,@146] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, !|X|!<X<X<java.io.Serializable>>>>,@159] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, X<!|X|!<X<java.io.Serializable>>>>,@161] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, X<X<!|X|!<java.io.Serializable>>>>,@163] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ Z<Object, X<String>, X<X<Exception>>, X<X<X<!|java.io.Serializable|!>>>>,@165] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ !|X|!<X<X<X<String>>>>> z;@193] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<!|X|!<X<X<String>>>>> z;@195] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<X<!|X|!<X<String>>>>> z;@197] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<X<X<!|X|!<String>>>>> z;@199] EXACT_MATCH\n" +
"src/test08/Test.java test08.Test.z [ X<X<X<X<!|String|!>>>>> z;@201] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest09_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test09/Test.java",
"package test09;\n" +
"public class Test {\n" +
" X<? extends Exception> x; \n" +
" Y<? extends Object, ? super String, ? extends Exception> y; \n" +
"}\n" +
"class X< R> {}\n" +
"class Y<S, T, U> {}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE | TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test09/Test.java test09.Test.x [ X<? extends !|Exception|!> x; @49] EXACT_MATCH\n" +
"src/test09/Test.java test09.Test.y [ Y<? extends !|Object|!, ? super String, ? extends Exception> y; @77] EXACT_MATCH\n" +
"src/test09/Test.java test09.Test.y [ Y<? extends Object, ? super !|String|!, ? extends Exception> y; @93] EXACT_MATCH\n" +
"src/test09/Test.java test09.Test.y [ Y<? extends Object, ? super String, ? extends !|Exception|!> y; @111] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest10_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test10/Test.java",
"package test10;\n" +
"public class Test {\n" +
" Y<Y<? extends Exception>> y1;\n" +
" Y<X<? extends Object, ? super String, ? extends Exception>> y2;\n" +
" X<Y<? super Object>, Y<? extends String>, Y<? super Exception>> x1;\n" +
" X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;\n" +
"}\n" +
"class X<R, S, T> {}\n" +
"class Y<U> {}"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test10/Test.java test10.Test.y1 [ Y<!|Y|!<? extends Exception>> y1;@39] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.y2 [ Y<!|X|!<? extends Object, ? super String, ? extends Exception>> y2;@70] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.x1 [ X<!|Y|!<? super Object>, Y<? extends String>, Y<? super Exception>> x1;@135] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, !|Y|!<? extends String>, Y<? super Exception>> x1;@154] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, Y<? extends String>, !|Y|!<? super Exception>> x1;@175] EXACT_MATCH\n" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericsTest10_WildcardBound() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test10/Test.java",
"package test10;\n" +
"public class Test {\n" +
" Y<Y<? extends Exception>> y1;\n" +
" Y<X<? extends Object, ? super String, ? extends Exception>> y2;\n" +
" X<Y<? super Object>, Y<? extends String>, Y<? super Exception>> x1;\n" +
" X<X<? extends Object, ? extends Object, ? extends Object>, X<? super String, ? super String, ? super String>, X<? extends Exception, ? super Exception, ? extends Exception>> x2;\n" +
"}\n" +
"class X<R, S, T> {}\n" +
"class Y<U> {}"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test10/Test.java test10.Test.y1 [ Y<Y<? extends !|Exception|!>> y1;@51] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.y2 [ Y<X<? extends !|Object|!, ? super String, ? extends Exception>> y2;@82] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.y2 [ Y<X<? extends Object, ? super !|String|!, ? extends Exception>> y2;@98] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.y2 [ Y<X<? extends Object, ? super String, ? extends !|Exception|!>> y2;@116] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.x1 [ X<Y<? super !|Object|!>, Y<? extends String>, Y<? super Exception>> x1;@145] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, Y<? extends !|String|!>, Y<? super Exception>> x1;@166] EXACT_MATCH\n" +
"src/test10/Test.java test10.Test.x1 [ X<Y<? super Object>, Y<? extends String>, Y<? super !|Exception|!>> x1;@185] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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"
);
}
public void testTypeRefGenericsTest11_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test11/Test.java",
"package test11;\n" +
"public class Test {\n" +
" Z<\n" +
" Y<X<? extends Object>, X<? super String>, X<? extends Exception>>,\n" +
" X<Y<? extends Object, ? super String, X<? extends Exception>>>,\n" +
" Z<? extends Object, X<? super String>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,\n" +
" X<X<X<X<? super String>>>>> z;\n" +
"}\n" +
"class X<R> {}\n" +
"class Y<S, T, U> {}\n" +
"class Z<A, B, C, D> {}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test11/Test.java test11.Test.z [ !|Y|!<X<? extends Object>, X<? super String>, X<? extends Exception>>,@42] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ Y<!|X|!<? extends Object>, X<? super String>, X<? extends Exception>>,@44] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, !|X|!<? super String>, X<? extends Exception>>,@65] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, X<? super String>, !|X|!<? extends Exception>>,@84] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ !|X|!<Y<? extends Object, ? super String, X<? extends Exception>>>,@111] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<!|Y|!<? extends Object, ? super String, X<? extends Exception>>>,@113] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<Y<? extends Object, ? super String, !|X|!<? extends Exception>>>,@149] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test11/Test.java test11.Test.z [ !|X|!<X<X<X<? super String>>>>> z;@287] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<!|X|!<X<X<? super String>>>>> z;@289] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<X<!|X|!<X<? super String>>>>> z;@291] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<X<X<!|X|!<? super String>>>>> z;@293] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest11_WildcardBound() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test11/Test.java",
"package test11;\n" +
"public class Test {\n" +
" Z<\n" +
" Y<X<? extends Object>, X<? super String>, X<? extends Exception>>,\n" +
" X<Y<? extends Object, ? super String, X<? extends Exception>>>,\n" +
" Z<? extends Object, X<? super String>, X<X<? extends Exception>>, X<X<X<? extends java.io.Serializable>>>>,\n" +
" X<X<X<X<? super String>>>>> z;\n" +
"}\n" +
"class X<R> {}\n" +
"class Y<S, T, U> {}\n" +
"class Z<A, B, C, D> {}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test11/Test.java test11.Test.z [ Y<X<? extends !|Object|!>, X<? super String>, X<? extends Exception>>,@56] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, X<? super !|String|!>, X<? extends Exception>>,@75] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ Y<X<? extends Object>, X<? super String>, X<? extends !|Exception|!>>,@96] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<Y<? extends !|Object|!, ? super String, X<? extends Exception>>>,@125] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<Y<? extends Object, ? super !|String|!, X<? extends Exception>>>,@141] EXACT_MATCH\n" +
"src/test11/Test.java test11.Test.z [ X<Y<? extends Object, ? super String, X<? extends !|Exception|!>>>,@161] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"src/test11/Test.java test11.Test.z [ X<X<X<X<? super !|String|!>>>>> z;@303] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest12_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test12/Test.java",
"package test12;\n" +
"public class Test extends S<Exception> {\n" +
" void foo(Test test) {\n" +
" this.<Exception>foo(null);\n" +
" super.<Exception>foo(null);\n" +
" foo(null);\n" +
" test.<RuntimeException>foo(null);\n" +
" }\n" +
" void bar(Test test) {\n" +
" this.<Object, RuntimeException, Test>bar(null);\n" +
" super.<Object, RuntimeException, Test>bar(null);\n" +
" bar(null);\n" +
" test.<Object, RuntimeException, Test>bar(null);\n" +
" }\n" +
"}\n" +
"class S<R> {\n" +
" <T> T foo(T t) { return t; }\n" +
" <T, U extends Exception, V extends S<R>>void bar(S s) {}\n" +
"}\n" +
"class X<T> {}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE | TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test12/Test.java test12.Test [public class Test extends S<!|Exception|!> {@44] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.foo(Test) [ this.<!|Exception|!>foo(null);@88] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.foo(Test) [ super.<!|Exception|!>foo(null);@118] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.foo(Test) [ test.<!|RuntimeException|!>foo(null);@160] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ this.<!|Object|!, RuntimeException, Test>bar(null);@222] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ this.<Object, !|RuntimeException|!, Test>bar(null);@230] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ this.<Object, RuntimeException, !|Test|!>bar(null);@248] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ super.<!|Object|!, RuntimeException, Test>bar(null);@273] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ super.<Object, !|RuntimeException|!, Test>bar(null);@281] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ super.<Object, RuntimeException, !|Test|!>bar(null);@299] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ test.<!|Object|!, RuntimeException, Test>bar(null);@336] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ test.<Object, !|RuntimeException|!, Test>bar(null);@344] EXACT_MATCH\n" +
"src/test12/Test.java void test12.Test.bar(Test) [ test.<Object, RuntimeException, !|Test|!>bar(null);@362] EXACT_MATCH\n" +
"src/test12/Test.java void test12.S.bar(S) [ <T, U extends Exception, V extends S<!|R|!>>void bar(S s) {}@464] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest13_TypeArgument() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test13/Test.java",
"package test13;\n" +
"public class Test<T> extends S<Exception> {\n" +
" void foo(Test<Exception> test) {\n" +
" this.<X<Exception>>foo(null);\n" +
" super.<X<X<Exception>>>foo(null);\n" +
" foo(null);\n" +
" test.<X<X<X<RuntimeException>>>>foo(null);\n" +
" }\n" +
" void fred(Test<String> test) {\n" +
" this.<X<Object>, Exception, Test<Exception>>bar(null);\n" +
" super.<X<X<Object>>, RuntimeException, Test<X<Exception>>>bar(null);\n" +
" bar(null);\n" +
" test.<X<X<X<Object>>>, RuntimeException, Test<X<X<Exception>>>>bar(null);\n" +
" }\n" +
"}\n" +
"class S<R> {\n" +
" <T> T foo(T t) { return t; }\n" +
" <T, U extends Exception, V extends S<R>>void bar(S s) {}\n" +
"}\n" +
"class X<T> {}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, WILDCARD_BOUND_TYPE_REFERENCE | TYPE_ARGUMENT_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test13/Test.java test13.Test [public class Test<T> extends S<!|Exception|!> {@47] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ void foo(Test<!|Exception|!> test) {@75] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ this.<!|X|!<Exception>>foo(null);@102] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ this.<X<!|Exception|!>>foo(null);@104] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ super.<!|X|!<X<Exception>>>foo(null);@135] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ super.<X<!|X|!<Exception>>>foo(null);@137] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ super.<X<X<!|Exception|!>>>foo(null);@139] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<!|X|!<X<X<RuntimeException>>>>foo(null);@183] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<X<!|X|!<X<RuntimeException>>>>foo(null);@185] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<X<X<!|X|!<RuntimeException>>>>foo(null);@187] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.foo(Test<Exception>) [ test.<X<X<X<!|RuntimeException|!>>>>foo(null);@189] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ void fred(Test<!|String|!> test) {@239] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<!|X|!<Object>, Exception, Test<Exception>>bar(null);@263] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<!|Object|!>, Exception, Test<Exception>>bar(null);@265] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<Object>, !|Exception|!, Test<Exception>>bar(null);@274] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<Object>, Exception, !|Test|!<Exception>>bar(null);@285] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ this.<X<Object>, Exception, Test<!|Exception|!>>bar(null);@290] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<!|X|!<X<Object>>, RuntimeException, Test<X<Exception>>>bar(null);@321] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<!|X|!<Object>>, RuntimeException, Test<X<Exception>>>bar(null);@323] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<!|Object|!>>, RuntimeException, Test<X<Exception>>>bar(null);@325] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, !|RuntimeException|!, Test<X<Exception>>>bar(null);@335] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, RuntimeException, !|Test|!<X<Exception>>>bar(null);@353] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, RuntimeException, Test<!|X|!<Exception>>>bar(null);@358] EXACT_MATCH\n" +
"src/test13/Test.java void test13.Test.fred(Test<String>) [ super.<X<X<Object>>, RuntimeException, Test<X<!|Exception|!>>>bar(null);@360] EXACT_MATCH\n" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"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" +
"src/test13/Test.java void test13.S.bar(S) [ <T, U extends Exception, V extends S<!|R|!>>void bar(S s) {}@558] EXACT_MATCH"
);
}
public void testTypeRefGenericsTest15_ClassInstanceCreation() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/test15/Test.java",
"package test15;\n" +
"public class Test {\n" +
" Test() {}\n" +
" <U> Test(U u) {}\n" +
" static Test foo() {\n" +
" return new <String> Test(\"\");\n" +
" }\n" +
" static Test bar() {\n" +
" return new Test();\n" +
" }\n" +
"}\n"
);
IType type = this.workingCopies[0].getType("Test");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { type });
search("*", TYPE, CLASS_INSTANCE_CREATION_TYPE_REFERENCE, SearchPattern.R_ERASURE_MATCH, scope);
assertSearchResults(
"src/test15/Test.java Test test15.Test.foo() [ return new <String> !|Test|!(\"\");@108] EXACT_MATCH\n" +
"src/test15/Test.java Test test15.Test.bar() [ return new !|Test|!();@156] EXACT_MATCH"
);
}
/**
* @bug 212599: [search] fine grained search must not report matches in Javadoc
* @test Ensure that fine grain references are not found in javadoc
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=212599"
*/
public void testBug212599() throws CoreException {
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Ref.java",
"public class Ref {\n" +
" public int field;\n" +
" public Ref foo() {\n" +
" return null;\n" +
" }\n" +
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/Test.java",
"/**\n" +
" * @see Ref\n" +
" */\n" +
"public class Test {\n" +
" Ref test;\n" +
" /**\n" +
" * @see Ref#field\n" +
" * @see Ref#foo()\n" +
" */\n" +
" Ref bar() {\n" +
" if (this.test != null) {\n" +
" if (this.test.field > 0) {\n" +
" return this.test;\n" +
" }\n" +
" return new Ref();\n" +
" }\n" +
" return null;\n" +
" }\n" +
"}\n"
);
IType type = this.workingCopies[0].getType("Ref");
search(type, RETURN_TYPE_REFERENCE, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/Ref.java Ref Ref.foo() [ public !|Ref|! foo() {@46] EXACT_MATCH\n" +
"src/Test.java Ref Test.bar() [ !|Ref|! bar() {@100] EXACT_MATCH"
);
}
public void testBug212599_all() throws CoreException {
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/Ref.java",
"public class Ref {\n" +
" public int field;\n" +
" public Ref foo() {\n" +
" return null;\n" +
" }\n" +
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearch15/src/Test.java",
"/**\n" +
" * @see Ref\n" +
" */\n" +
"public class Test {\n" +
" Ref test;\n" +
" /**\n" +
" * @see Ref#field\n" +
" * @see Ref#foo()\n" +
" */\n" +
" Ref bar() {\n" +
" if (this.test != null) {\n" +
" if (this.test.field > 0) {\n" +
" return this.test;\n" +
" }\n" +
" return new Ref();\n" +
" }\n" +
" return null;\n" +
" }\n" +
"}\n"
);
IType type = this.workingCopies[0].getType("Ref");
search(type, ALL_TYPE_FINE_GRAIN_FLAGS, getJavaSearchWorkingCopiesScope());
assertSearchResults(
"src/Ref.java Ref Ref.foo() [ public !|Ref|! foo() {@46] EXACT_MATCH\n" +
"src/Test.java Test.test [ !|Ref|! test;@41] EXACT_MATCH\n" +
"src/Test.java Ref Test.bar() [ !|Ref|! bar() {@100] EXACT_MATCH\n" +
"src/Test.java Ref Test.bar() [ return new !|Ref|!();@210] EXACT_MATCH"
);
}
}