Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 429738 | Differences between
and this patch

Collapse All | Expand All

(-)a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs8Tests.java (-38 / +11 lines)
Lines 76-85 Link Here
76
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g15"));
76
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g15"));
77
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g16"));
77
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g16"));
78
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g17"));
78
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g17"));
79
//	suite.addTest(new JavaSearchBugs8Tests("testBug400899g18"));
79
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g18"));
80
//	suite.addTest(new JavaSearchBugs8Tests("testBug400899g19"));
81
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g20"));
80
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g20"));
82
//	suite.addTest(new JavaSearchBugs8Tests("testBug400899g22"));
81
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g22"));
83
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g23"));
82
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g23"));
84
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g24"));
83
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g24"));
85
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g25"));
84
	suite.addTest(new JavaSearchBugs8Tests("testBug400899g25"));
Lines 820-826 Link Here
820
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b400899/X.java",
819
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b400899/X.java",
821
		"import java.lang.annotation.ElementType;\n" +
820
		"import java.lang.annotation.ElementType;\n" +
822
		"import java.lang.annotation.Target;\n" +
821
		"import java.lang.annotation.Target;\n" +
823
		"public class X<T extends Object & Comparable<? super @Marker String>> {}\n" +
822
		"public class X<T extends @Marker Object & @Marker Comparable<? super @Marker String>> {}\n" +
824
		"class Y<T> {\n" +
823
		"class Y<T> {\n" +
825
		"}\n" +
824
		"}\n" +
826
 		"@Target(ElementType.TYPE_USE)\n" +	
825
 		"@Target(ElementType.TYPE_USE)\n" +	
Lines 837-875 Link Here
837
this.resultCollector,
836
this.resultCollector,
838
null);
837
null);
839
assertSearchResults(
838
assertSearchResults(
840
		"<TODO : ADD THE EXPECTED RESULT HERE>"
839
		"src/b400899/X.java b400899.X [Marker] EXACT_MATCH\n" + 
841
);	
840
		"src/b400899/X.java b400899.X [Marker] EXACT_MATCH\n" + 
842
}
841
		"src/b400899/X.java b400899.X [Marker] EXACT_MATCH"
843
844
/**
845
 * @bug 400899:  [1.8][search] Search engine/indexer should evolve to support Java 8 constructs
846
 * @test Ensures that the search for type use annotation finds matches in the following
847
 * ReferenceType3 ::= ReferenceType '>>>'
848
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=400899"
849
 */
850
public void testBug400899g19() throws CoreException {
851
this.workingCopies = new ICompilationUnit[1];
852
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b400899/X.java",
853
		"import java.lang.annotation.ElementType;\n" +
854
		"import java.lang.annotation.Target;\n" +
855
		"public class X<A extends X<X<X<@Marker String>>>> {}\n" +
856
		"class Y<T> {\n" +
857
		"}\n" +
858
 		"@Target(ElementType.TYPE_USE)\n" +	
859
		"@interface Marker {}\n"
860
	);
861
SearchPattern pattern = SearchPattern.createPattern(
862
		"Marker",
863
		ANNOTATION_TYPE,
864
		REFERENCES,
865
		EXACT_RULE);
866
new SearchEngine(this.workingCopies).search(pattern,
867
new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
868
getJavaSearchWorkingCopiesScope(),
869
this.resultCollector,
870
null);
871
assertSearchResults(
872
		"<TODO : ADD THE EXPECTED RESULT HERE>"
873
);	
842
);	
874
}
843
}
875
844
Lines 953-959 Link Here
953
this.resultCollector,
922
this.resultCollector,
954
null);
923
null);
955
assertSearchResults(
924
assertSearchResults(
956
		"TODO - ADD THE RESULT HERE"
925
		"src/b400899/X.java b400899.CI [Marker] EXACT_MATCH\n" + 
926
		"src/b400899/X.java b400899.CI [Marker] EXACT_MATCH\n" + 
927
		"src/b400899/X.java b400899.CI [Marker] EXACT_MATCH\n" + 
928
		"src/b400899/X.java b400899.CJ [Marker] EXACT_MATCH\n" + 
929
		"src/b400899/X.java b400899.CJ [Marker] EXACT_MATCH"
957
);	
930
);	
958
}
931
}
959
932
(-)a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java (+9 lines)
Lines 2928-2933 Link Here
2928
			if (typeParameter.bounds != null) {
2928
			if (typeParameter.bounds != null) {
2929
				for (int j=0, b=typeParameter.bounds.length; j<b; j++) {
2929
				for (int j=0, b=typeParameter.bounds.length; j<b; j++) {
2930
					TypeReference typeParameterBound = typeParameter.bounds[j];
2930
					TypeReference typeParameterBound = typeParameter.bounds[j];
2931
					if (typeParameterBound.annotations != null) {
2932
						reportMatching(typeParameterBound.annotations, enclosingElement, binding,nodeSet, matchedClassContainer);
2933
					}
2931
					level = (Integer) nodeSet.matchingNodes.removeKey(typeParameterBound);
2934
					level = (Integer) nodeSet.matchingNodes.removeKey(typeParameterBound);
2932
					if (level != null) {
2935
					if (level != null) {
2933
						IJavaElement localElement = createHandle(typeParameter, enclosingElement);
2936
						IJavaElement localElement = createHandle(typeParameter, enclosingElement);
Lines 2939-2944 Link Here
2939
	                    	int length = paramSTR.typeArguments.length;
2942
	                    	int length = paramSTR.typeArguments.length;
2940
	                    	for (int k=0; k<length; k++) {
2943
	                    	for (int k=0; k<length; k++) {
2941
								TypeReference typeArgument = paramSTR.typeArguments[k];
2944
								TypeReference typeArgument = paramSTR.typeArguments[k];
2945
								if (typeArgument.annotations != null) {
2946
									reportMatching(typeArgument.annotations, enclosingElement, binding,nodeSet, matchedClassContainer);
2947
								}
2942
								level = (Integer) nodeSet.matchingNodes.removeKey(typeArgument);
2948
								level = (Integer) nodeSet.matchingNodes.removeKey(typeArgument);
2943
								if (level != null) {
2949
								if (level != null) {
2944
									IJavaElement localElement = createHandle(typeParameter, enclosingElement);
2950
									IJavaElement localElement = createHandle(typeParameter, enclosingElement);
Lines 2947-2952 Link Here
2947
								if (typeArgument instanceof Wildcard) {
2953
								if (typeArgument instanceof Wildcard) {
2948
		                            TypeReference wildcardBound = ((Wildcard) typeArgument).bound;
2954
		                            TypeReference wildcardBound = ((Wildcard) typeArgument).bound;
2949
		                            if (wildcardBound != null) {
2955
		                            if (wildcardBound != null) {
2956
		            					if (wildcardBound.annotations != null) {
2957
		            						reportMatching(wildcardBound.annotations, enclosingElement, binding,nodeSet, matchedClassContainer);
2958
		            					}
2950
										level = (Integer) nodeSet.matchingNodes.removeKey(wildcardBound);
2959
										level = (Integer) nodeSet.matchingNodes.removeKey(wildcardBound);
2951
										if (level != null) {
2960
										if (level != null) {
2952
											IJavaElement localElement = createHandle(typeParameter, enclosingElement);
2961
											IJavaElement localElement = createHandle(typeParameter, enclosingElement);

Return to bug 429738