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

Collapse All | Expand All

(-)search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java (-3 / +20 lines)
Lines 432-446 Link Here
432
432
433
	// Set match raw flag
433
	// Set match raw flag
434
	boolean endPattern = patternTypeArguments==null  ? true  : depth>=patternTypeArguments.length;
434
	boolean endPattern = patternTypeArguments==null  ? true  : depth>=patternTypeArguments.length;
435
	boolean isRaw = parameterizedBinding.isRawType()|| (parameterizedBinding.arguments==null && parameterizedBinding.type.isGenericType());
435
	TypeBinding[] argumentsBindings = parameterizedBinding.arguments;
436
	boolean isRaw = parameterizedBinding.isRawType()|| (argumentsBindings==null && parameterizedBinding.type.isGenericType());
436
	if (isRaw && !match.isRaw()) {
437
	if (isRaw && !match.isRaw()) {
437
		match.setRaw(isRaw);
438
		match.setRaw(isRaw);
438
	}
439
	}
439
	
440
	
440
	// Update match
441
	// Update match
441
	if (!endPattern && patternTypeArguments != null) {
442
	if (!endPattern && patternTypeArguments != null) {
442
		char[][] patternArguments =  patternTypeArguments[depth];
443
		// verify if this is a reference to the generic type itself
443
		updateMatch(parameterizedBinding.arguments, locator, patternArguments, patternHasTypeParameters);
444
		if (!isRaw && patternHasTypeParameters && argumentsBindings != null) {
445
			boolean needUpdate = false;
446
			TypeVariableBinding[] typeVariables = parameterizedBinding.type.typeVariables();
447
			for (int i=0, l=argumentsBindings.length; i<l; i++) {
448
				if (argumentsBindings[i] != typeVariables[i]) {
449
					needUpdate = true;
450
					break;
451
				}
452
			}
453
			if (needUpdate) {
454
				char[][] patternArguments =  patternTypeArguments[depth];
455
				updateMatch(argumentsBindings, locator, patternArguments, patternHasTypeParameters);	
456
			}
457
		} else {
458
			char[][] patternArguments =  patternTypeArguments[depth];
459
			updateMatch(argumentsBindings, locator, patternArguments, patternHasTypeParameters);
460
		}
444
	}
461
	}
445
462
446
	// Recurse
463
	// Recurse
(-)search/org/eclipse/jdt/core/search/SearchPattern.java (-2 / +9 lines)
Lines 1108-1114 Link Here
1108
1108
1109
/**
1109
/**
1110
 * Returns a search pattern based on a given Java element. 
1110
 * Returns a search pattern based on a given Java element. 
1111
 * The pattern is used to trigger the appropriate search, and can be parameterized as follows:
1111
 * The pattern is used to trigger the appropriate search.
1112
 * <br>
1113
 * Note that for generic searches, the returned pattern consider {@link #R_ERASURE_MATCH} matches.
1114
 * If other kind of generic matches (ie. {@link #R_EXACT_MATCH} or {@link #R_EQUIVALENT_MATCH})
1115
 * are expected, {@link #createPattern(IJavaElement, int, int)} method need to be used instead with
1116
 * the explicit match rule specified.
1117
 * <br>
1118
 * The pattern can be parameterized as follows:
1112
 *
1119
 *
1113
 * @param element the Java element the search pattern is based on
1120
 * @param element the Java element the search pattern is based on
1114
 * @param limitTo determines the nature of the expected matches
1121
 * @param limitTo determines the nature of the expected matches
Lines 1150-1156 Link Here
1150
 * @return a search pattern for a Java element or <code>null</code> if the given element is ill-formed
1157
 * @return a search pattern for a Java element or <code>null</code> if the given element is ill-formed
1151
 */
1158
 */
1152
public static SearchPattern createPattern(IJavaElement element, int limitTo) {
1159
public static SearchPattern createPattern(IJavaElement element, int limitTo) {
1153
	return createPattern(element, limitTo, R_EXACT_MATCH | R_CASE_SENSITIVE);
1160
	return createPattern(element, limitTo, R_EXACT_MATCH | R_CASE_SENSITIVE | R_ERASURE_MATCH);
1154
}
1161
}
1155
1162
1156
/**
1163
/**
(-)src/org/eclipse/jdt/core/tests/model/SearchTests.java (-27 / +27 lines)
Lines 647-653 Link Here
647
			IJavaSearchConstants.REFERENCES);
647
			IJavaSearchConstants.REFERENCES);
648
	
648
	
649
	assertPattern(
649
	assertPattern(
650
		"FieldReferencePattern: x.y.z.Foo.field --> int, exact match, case sensitive",
650
		"FieldReferencePattern: x.y.z.Foo.field --> int, exact match, case sensitive, erasure only",
651
		searchPattern);
651
		searchPattern);
652
}
652
}
653
653
Lines 661-667 Link Here
661
			IJavaSearchConstants.DECLARATIONS);
661
			IJavaSearchConstants.DECLARATIONS);
662
	
662
	
663
	assertPattern(
663
	assertPattern(
664
		"FieldDeclarationPattern: x.y.z.Foo.field --> int, exact match, case sensitive",
664
		"FieldDeclarationPattern: x.y.z.Foo.field --> int, exact match, case sensitive, erasure only",
665
		searchPattern);
665
		searchPattern);
666
}
666
}
667
667
Lines 675-681 Link Here
675
			IJavaSearchConstants.ALL_OCCURRENCES);
675
			IJavaSearchConstants.ALL_OCCURRENCES);
676
	
676
	
677
	assertPattern(
677
	assertPattern(
678
		"FieldCombinedPattern: x.y.z.Foo.field --> int, exact match, case sensitive",
678
		"FieldCombinedPattern: x.y.z.Foo.field --> int, exact match, case sensitive, erasure only",
679
		searchPattern);
679
		searchPattern);
680
}
680
}
681
681
Lines 689-695 Link Here
689
			IJavaSearchConstants.REFERENCES);
689
			IJavaSearchConstants.REFERENCES);
690
	
690
	
691
	assertPattern(
691
	assertPattern(
692
		"PackageReferencePattern: <x.y>, exact match, case sensitive",
692
		"PackageReferencePattern: <x.y>, exact match, case sensitive, erasure only",
693
		searchPattern);
693
		searchPattern);
694
}
694
}
695
695
Lines 703-709 Link Here
703
			IJavaSearchConstants.DECLARATIONS);
703
			IJavaSearchConstants.DECLARATIONS);
704
	
704
	
705
	assertPattern(
705
	assertPattern(
706
		"MethodDeclarationPattern: x.y.z.Foo.bar() --> void, exact match, case sensitive",
706
		"MethodDeclarationPattern: x.y.z.Foo.bar() --> void, exact match, case sensitive, erasure only",
707
		searchPattern);
707
		searchPattern);
708
}
708
}
709
709
Lines 717-723 Link Here
717
			IJavaSearchConstants.REFERENCES);
717
			IJavaSearchConstants.REFERENCES);
718
	
718
	
719
	assertPattern(
719
	assertPattern(
720
		"MethodReferencePattern: x.y.z.Foo.bar() --> void, exact match, case sensitive",
720
		"MethodReferencePattern: x.y.z.Foo.bar() --> void, exact match, case sensitive, erasure only",
721
		searchPattern);
721
		searchPattern);
722
}
722
}
723
723
Lines 731-737 Link Here
731
			IJavaSearchConstants.ALL_OCCURRENCES);
731
			IJavaSearchConstants.ALL_OCCURRENCES);
732
	
732
	
733
	assertPattern(
733
	assertPattern(
734
		"MethodCombinedPattern: x.y.z.Foo.bar() --> void, exact match, case sensitive",
734
		"MethodCombinedPattern: x.y.z.Foo.bar() --> void, exact match, case sensitive, erasure only",
735
		searchPattern);
735
		searchPattern);
736
}
736
}
737
737
Lines 745-751 Link Here
745
			IJavaSearchConstants.DECLARATIONS);
745
			IJavaSearchConstants.DECLARATIONS);
746
	
746
	
747
	assertPattern(
747
	assertPattern(
748
		"TypeDeclarationPattern: pkg<x.y.z>, enclosing<>, type<Foo>, exact match, case sensitive",
748
		"TypeDeclarationPattern: pkg<x.y.z>, enclosing<>, type<Foo>, exact match, case sensitive, erasure only",
749
		searchPattern);
749
		searchPattern);
750
}
750
}
751
751
Lines 759-765 Link Here
759
			IJavaSearchConstants.REFERENCES);
759
			IJavaSearchConstants.REFERENCES);
760
	
760
	
761
	assertPattern(
761
	assertPattern(
762
		"TypeReferencePattern: qualification<x.y.z>, type<Foo>, exact match, case sensitive",
762
		"TypeReferencePattern: qualification<x.y.z>, type<Foo>, exact match, case sensitive, erasure only",
763
		searchPattern);
763
		searchPattern);
764
}
764
}
765
765
Lines 773-779 Link Here
773
			IJavaSearchConstants.IMPLEMENTORS);
773
			IJavaSearchConstants.IMPLEMENTORS);
774
	
774
	
775
	assertPattern(
775
	assertPattern(
776
		"SuperInterfaceReferencePattern: <I>, exact match, case sensitive",
776
		"SuperInterfaceReferencePattern: <I>, exact match, case sensitive, erasure only",
777
		searchPattern);
777
		searchPattern);
778
}
778
}
779
779
Lines 787-794 Link Here
787
			IJavaSearchConstants.ALL_OCCURRENCES);
787
			IJavaSearchConstants.ALL_OCCURRENCES);
788
	
788
	
789
	assertPattern(
789
	assertPattern(
790
		"TypeDeclarationPattern: pkg<x.y.z>, enclosing<>, type<Foo>, exact match, case sensitive\n" + 
790
		"TypeDeclarationPattern: pkg<x.y.z>, enclosing<>, type<Foo>, exact match, case sensitive, erasure only\n" + 
791
		"| TypeReferencePattern: qualification<x.y.z>, type<Foo>, exact match, case sensitive",
791
		"| TypeReferencePattern: qualification<x.y.z>, type<Foo>, exact match, case sensitive, erasure only",
792
		searchPattern);
792
		searchPattern);
793
}
793
}
794
794
Lines 802-808 Link Here
802
			IJavaSearchConstants.REFERENCES);
802
			IJavaSearchConstants.REFERENCES);
803
	
803
	
804
	assertPattern(
804
	assertPattern(
805
		"PackageReferencePattern: <x.y.z>, exact match, case sensitive",
805
		"PackageReferencePattern: <x.y.z>, exact match, case sensitive, erasure only",
806
		searchPattern);
806
		searchPattern);
807
}
807
}
808
808
Lines 816-822 Link Here
816
			IJavaSearchConstants.REFERENCES);
816
			IJavaSearchConstants.REFERENCES);
817
	
817
	
818
	assertPattern(
818
	assertPattern(
819
		"PackageReferencePattern: <x.y.z>, exact match, case sensitive",
819
		"PackageReferencePattern: <x.y.z>, exact match, case sensitive, erasure only",
820
		searchPattern);
820
		searchPattern);
821
}
821
}
822
822
Lines 830-836 Link Here
830
			IJavaSearchConstants.REFERENCES);
830
			IJavaSearchConstants.REFERENCES);
831
	
831
	
832
	assertPattern(
832
	assertPattern(
833
		"TypeReferencePattern: qualification<java.util>, type<Vector>, exact match, case sensitive",
833
		"TypeReferencePattern: qualification<java.util>, type<Vector>, exact match, case sensitive, erasure only",
834
		searchPattern);
834
		searchPattern);
835
}
835
}
836
836
Lines 844-850 Link Here
844
			IJavaSearchConstants.DECLARATIONS);
844
			IJavaSearchConstants.DECLARATIONS);
845
	
845
	
846
	assertPattern(
846
	assertPattern(
847
		"PackageDeclarationPattern: <x.y.z>, exact match, case sensitive",
847
		"PackageDeclarationPattern: <x.y.z>, exact match, case sensitive, erasure only",
848
		searchPattern);
848
		searchPattern);
849
}
849
}
850
850
Lines 858-864 Link Here
858
			IJavaSearchConstants.DECLARATIONS);
858
			IJavaSearchConstants.DECLARATIONS);
859
	
859
	
860
	assertPattern(
860
	assertPattern(
861
		"PackageDeclarationPattern: <x.y.z>, exact match, case sensitive",
861
		"PackageDeclarationPattern: <x.y.z>, exact match, case sensitive, erasure only",
862
		searchPattern);
862
		searchPattern);
863
}
863
}
864
864
Lines 872-878 Link Here
872
			IJavaSearchConstants.DECLARATIONS);
872
			IJavaSearchConstants.DECLARATIONS);
873
	
873
	
874
	assertPattern(
874
	assertPattern(
875
		"PackageDeclarationPattern: <x.y>, exact match, case sensitive",
875
		"PackageDeclarationPattern: <x.y>, exact match, case sensitive, erasure only",
876
		searchPattern);
876
		searchPattern);
877
}
877
}
878
878
Lines 886-893 Link Here
886
			IJavaSearchConstants.ALL_OCCURRENCES);
886
			IJavaSearchConstants.ALL_OCCURRENCES);
887
	
887
	
888
	assertPattern(
888
	assertPattern(
889
		"PackageDeclarationPattern: <x.y.z>, exact match, case sensitive\n" +
889
		"PackageDeclarationPattern: <x.y.z>, exact match, case sensitive, erasure only\n" +
890
		"| PackageReferencePattern: <x.y.z>, exact match, case sensitive",
890
		"| PackageReferencePattern: <x.y.z>, exact match, case sensitive, erasure only",
891
		searchPattern);
891
		searchPattern);
892
}
892
}
893
893
Lines 901-907 Link Here
901
			IJavaSearchConstants.DECLARATIONS);
901
			IJavaSearchConstants.DECLARATIONS);
902
	
902
	
903
	assertPattern(
903
	assertPattern(
904
		"LocalVarDeclarationPattern: var [in foo() [in X [in X.java [in <default> [in <project root> [in P]]]]]], exact match, case sensitive",
904
		"LocalVarDeclarationPattern: var [in foo() [in X [in X.java [in <default> [in <project root> [in P]]]]]], exact match, case sensitive, erasure only",
905
		searchPattern);
905
		searchPattern);
906
}
906
}
907
907
Lines 915-921 Link Here
915
			IJavaSearchConstants.REFERENCES);
915
			IJavaSearchConstants.REFERENCES);
916
	
916
	
917
	assertPattern(
917
	assertPattern(
918
		"LocalVarReferencePattern: var [in foo() [in X [in X.java [in <default> [in <project root> [in P]]]]]], exact match, case sensitive",
918
		"LocalVarReferencePattern: var [in foo() [in X [in X.java [in <default> [in <project root> [in P]]]]]], exact match, case sensitive, erasure only",
919
		searchPattern);
919
		searchPattern);
920
}
920
}
921
921
Lines 929-935 Link Here
929
			IJavaSearchConstants.ALL_OCCURRENCES);
929
			IJavaSearchConstants.ALL_OCCURRENCES);
930
	
930
	
931
	assertPattern(
931
	assertPattern(
932
		"LocalVarCombinedPattern: var [in foo() [in X [in X.java [in <default> [in <project root> [in P]]]]]], exact match, case sensitive",
932
		"LocalVarCombinedPattern: var [in foo() [in X [in X.java [in <default> [in <project root> [in P]]]]]], exact match, case sensitive, erasure only",
933
		searchPattern);
933
		searchPattern);
934
}
934
}
935
935
Lines 943-949 Link Here
943
			IJavaSearchConstants.DECLARATIONS);
943
			IJavaSearchConstants.DECLARATIONS);
944
	
944
	
945
	assertPattern(
945
	assertPattern(
946
		"TypeDeclarationPattern: pkg<>, enclosing<X.*>, type<Y>, exact match, case sensitive",
946
		"TypeDeclarationPattern: pkg<>, enclosing<X.*>, type<Y>, exact match, case sensitive, erasure only",
947
		searchPattern);
947
		searchPattern);
948
}
948
}
949
949
Lines 957-963 Link Here
957
			IJavaSearchConstants.REFERENCES);
957
			IJavaSearchConstants.REFERENCES);
958
	
958
	
959
	assertPattern(
959
	assertPattern(
960
		"TypeReferencePattern: qualification<X.*>, type<Y>, exact match, case sensitive",
960
		"TypeReferencePattern: qualification<X.*>, type<Y>, exact match, case sensitive, erasure only",
961
		searchPattern);
961
		searchPattern);
962
}
962
}
963
963
Lines 971-977 Link Here
971
			IJavaSearchConstants.DECLARATIONS);
971
			IJavaSearchConstants.DECLARATIONS);
972
	
972
	
973
	assertPattern(
973
	assertPattern(
974
		"TypeDeclarationPattern: pkg<>, enclosing<X.*>, type<Y>, exact match, case sensitive",
974
		"TypeDeclarationPattern: pkg<>, enclosing<X.*>, type<Y>, exact match, case sensitive, erasure only",
975
		searchPattern);
975
		searchPattern);
976
}
976
}
977
977
Lines 985-991 Link Here
985
			IJavaSearchConstants.REFERENCES);
985
			IJavaSearchConstants.REFERENCES);
986
	
986
	
987
	assertPattern(
987
	assertPattern(
988
		"TypeReferencePattern: qualification<X.*>, type<Y>, exact match, case sensitive",
988
		"TypeReferencePattern: qualification<X.*>, type<Y>, exact match, case sensitive, erasure only",
989
		searchPattern);
989
		searchPattern);
990
}
990
}
991
/**
991
/**
(-)src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java (-43 / +100 lines)
Lines 1840-1846 Link Here
1840
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] ERASURE_MATCH\n" + 
1840
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] ERASURE_MATCH\n" + 
1841
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" + 
1841
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" + 
1842
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" + 
1842
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" + 
1843
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1843
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() EXACT_MATCH"
1844
	);
1844
	);
1845
}
1845
}
1846
public void testBug83304_TypeStringPattern() throws CoreException {
1846
public void testBug83304_TypeStringPattern() throws CoreException {
Lines 5514-5561 Link Here
5514
}
5514
}
5515
5515
5516
/**
5516
/**
5517
 * @test Bug 110422: [search] BasicSearchEngine doesn't find all type declarations
5518
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=110422"
5519
 */
5520
public void testBug110422a() throws CoreException {
5521
	search("TestP", TYPE, DECLARATIONS, SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CASE_SENSITIVE);
5522
	assertSearchResults(
5523
		"lib/b110422.jar b110422.TestPrefix [No source] EXACT_MATCH"
5524
	);
5525
}
5526
public void testBug110422b() throws CoreException {
5527
	search("TESTP", TYPE, DECLARATIONS, SearchPattern.R_PREFIX_MATCH);
5528
	assertSearchResults(
5529
		"lib/b110422.jar b110422.TestPrefix [No source] EXACT_MATCH"
5530
	);
5531
}
5532
5533
/**
5534
 * @test Bug 114539: [search] Internal error when refactoring code with errors
5535
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=114539"
5536
 */
5537
public void testBug114539() throws CoreException {
5538
	workingCopies = new ICompilationUnit[2];
5539
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b114539/Foo.java",
5540
		"package b114539;\n" + 
5541
		"public class Foo {\n" + 
5542
		"	int bar=Bar.FOO;\n" + 
5543
		"}\n"
5544
	);
5545
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b114539/Bar.java",
5546
		"package b114539;\n" + 
5547
		"public class Bar {\n" + 
5548
		"	private static final int FOO=0;\n" + 
5549
		"}\n"
5550
	);
5551
	IField field = this.workingCopies[1].getType("Bar").getField("FOO");
5552
	search(field, REFERENCES);
5553
	assertSearchResults(
5554
		"src/b114539/Foo.java b114539.Foo.bar [FOO] POTENTIAL_MATCH"
5555
	);
5556
}
5557
5558
/**
5559
 * @test Bug 110336: [plan][search] Should optionaly return the local variable for type reference
5517
 * @test Bug 110336: [plan][search] Should optionaly return the local variable for type reference
5560
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=110336"
5518
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=110336"
5561
 */
5519
 */
Lines 5761-5766 Link Here
5761
}
5719
}
5762
5720
5763
/**
5721
/**
5722
 * @test Bug 110422: [search] BasicSearchEngine doesn't find all type declarations
5723
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=110422"
5724
 */
5725
public void testBug110422a() throws CoreException {
5726
	search("TestP", TYPE, DECLARATIONS, SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CASE_SENSITIVE);
5727
	assertSearchResults(
5728
		"lib/b110422.jar b110422.TestPrefix [No source] EXACT_MATCH"
5729
	);
5730
}
5731
public void testBug110422b() throws CoreException {
5732
	search("TESTP", TYPE, DECLARATIONS, SearchPattern.R_PREFIX_MATCH);
5733
	assertSearchResults(
5734
		"lib/b110422.jar b110422.TestPrefix [No source] EXACT_MATCH"
5735
	);
5736
}
5737
5738
/**
5739
 * @test Bug 114539: [search] Internal error when refactoring code with errors
5740
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=114539"
5741
 */
5742
public void testBug114539() throws CoreException {
5743
	workingCopies = new ICompilationUnit[2];
5744
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b114539/Foo.java",
5745
		"package b114539;\n" + 
5746
		"public class Foo {\n" + 
5747
		"	int bar=Bar.FOO;\n" + 
5748
		"}\n"
5749
	);
5750
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b114539/Bar.java",
5751
		"package b114539;\n" + 
5752
		"public class Bar {\n" + 
5753
		"	private static final int FOO=0;\n" + 
5754
		"}\n"
5755
	);
5756
	IField field = this.workingCopies[1].getType("Bar").getField("FOO");
5757
	search(field, REFERENCES);
5758
	assertSearchResults(
5759
		"src/b114539/Foo.java b114539.Foo.bar [FOO] POTENTIAL_MATCH"
5760
	);
5761
}
5762
5763
/**
5764
 * Bug 116459: [search] correct results are missing in java search
5765
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=116459"
5766
 */
5767
public void testBug116459() throws CoreException {
5768
	workingCopies = new ICompilationUnit[1];
5769
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/p1/X.java",
5770
		"package p1;\n" + 
5771
		"class X<T> {\n" + 
5772
		"	X<T> gen;\n" + 
5773
		"	X<String> param;\n" + 
5774
		"	X raw;\n" + 
5775
		"}"
5776
	);
5777
	IType type = workingCopies[0].getType("X");
5778
	this.resultCollector.showRule = true;
5779
	search(type, REFERENCES, ERASURE_RULE);
5780
	assertSearchResults(
5781
		"src/p1/X.java p1.X.gen [X] EXACT_MATCH\n" + 
5782
		"src/p1/X.java p1.X.param [X] ERASURE_MATCH\n" + 
5783
		"src/p1/X.java p1.X.raw [X] ERASURE_RAW_MATCH"
5784
	);
5785
}
5786
5787
/**
5764
 * @test Bug 119545: [search] Binary java method model elements returned by SearchEngine have unresolved parameter types
5788
 * @test Bug 119545: [search] Binary java method model elements returned by SearchEngine have unresolved parameter types
5765
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=119545"
5789
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=119545"
5766
 */
5790
 */
Lines 6184-6189 Link Here
6184
		"" // expected no result as parameters annotations are not stored in class file
6208
		"" // expected no result as parameters annotations are not stored in class file
6185
	);
6209
	);
6186
}
6210
}
6211
6212
/**
6213
 * Bug 124489: [search] correct results are missing in java search
6214
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124489"
6215
 */
6216
public void testBug124489() throws CoreException {
6217
	workingCopies = new ICompilationUnit[2];
6218
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Foo.java",
6219
		"public class Foo<T> {}"
6220
	);
6221
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/Bar.java",
6222
		"public class Bar {\n" + 
6223
		"    Foo<String> f = new Foo<String>();\n" + 
6224
		"    Foo f2 = new Foo();\n" + 
6225
		"}"
6226
	);
6227
	IType type = workingCopies[0].getType("Foo");
6228
	this.resultCollector.showRule = true;
6229
	new SearchEngine(workingCopies).search(
6230
		SearchPattern.createPattern(type, REFERENCES),
6231
		new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
6232
		getJavaSearchScopeBugs(),
6233
		this.resultCollector,
6234
		null
6235
	);
6236
	assertSearchResults(
6237
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" + 
6238
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" + 
6239
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH\n" + 
6240
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH"
6241
	);
6242
}
6243
6187
/**
6244
/**
6188
 * @test Bug 124645: [search] for implementors does not find subclasses of binary classes
6245
 * @test Bug 124645: [search] for implementors does not find subclasses of binary classes
6189
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124645"
6246
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124645"

Return to bug 124489