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 142044
Collapse All | Expand All

(-)search/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.java (-1 / +1 lines)
Lines 15-21 Link Here
15
import org.eclipse.jdt.core.search.SearchPattern;
15
import org.eclipse.jdt.core.search.SearchPattern;
16
import org.eclipse.jdt.internal.core.util.Util;
16
import org.eclipse.jdt.internal.core.util.Util;
17
17
18
	public class TypeReferencePattern extends AndPattern {
18
	public class TypeReferencePattern extends IntersectingPattern {
19
	
19
	
20
	protected char[] qualification;
20
	protected char[] qualification;
21
	protected char[] simpleName;
21
	protected char[] simpleName;
(-)search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java (+2 lines)
Lines 84-89 Link Here
84
			return new MethodLocator((MethodPattern) pattern);
84
			return new MethodLocator((MethodPattern) pattern);
85
		case IIndexConstants.OR_PATTERN :
85
		case IIndexConstants.OR_PATTERN :
86
			return new OrLocator((OrPattern) pattern);
86
			return new OrLocator((OrPattern) pattern);
87
		case IIndexConstants.AND_PATTERN :
88
			return new AndLocator((AndPattern) pattern);
87
		case IIndexConstants.LOCAL_VAR_PATTERN :
89
		case IIndexConstants.LOCAL_VAR_PATTERN :
88
			return new LocalVariableLocator((LocalVariablePattern) pattern);
90
			return new LocalVariableLocator((LocalVariablePattern) pattern);
89
		case IIndexConstants.TYPE_PARAM_PATTERN:
91
		case IIndexConstants.TYPE_PARAM_PATTERN:
(-)search/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java (-1 / +1 lines)
Lines 13-19 Link Here
13
import org.eclipse.jdt.core.compiler.CharOperation;
13
import org.eclipse.jdt.core.compiler.CharOperation;
14
import org.eclipse.jdt.core.search.SearchPattern;
14
import org.eclipse.jdt.core.search.SearchPattern;
15
15
16
public class PackageReferencePattern extends AndPattern {
16
public class PackageReferencePattern extends IntersectingPattern {
17
17
18
protected char[] pkgName;
18
protected char[] pkgName;
19
19
(-)search/org/eclipse/jdt/internal/core/search/matching/AndPattern.java (-65 / +59 lines)
Lines 10-83 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.jdt.internal.core.search.matching;
11
package org.eclipse.jdt.internal.core.search.matching;
12
12
13
import java.io.IOException;
13
import org.eclipse.jdt.core.search.SearchPattern;
14
14
15
import org.eclipse.core.runtime.IProgressMonitor;
15
public class AndPattern extends IntersectingPattern {
16
import org.eclipse.core.runtime.OperationCanceledException;
16
protected SearchPattern[] patterns;
17
import org.eclipse.jdt.core.search.*;
17
int current;
18
import org.eclipse.jdt.internal.compiler.util.SimpleSet;
18
19
import org.eclipse.jdt.internal.core.index.*;
19
private static int combinedMatchRule(int matchRule, int matchRule2) {
20
import org.eclipse.jdt.internal.core.search.IndexQueryRequestor;
20
	int combined = matchRule & matchRule2;
21
21
	int compatibility = combined & MATCH_COMPATIBILITY_MASK;
22
/**
22
	if (compatibility == 0) {
23
 * Query the index multiple times and do an 'and' on the results.
23
		if ((matchRule & MATCH_COMPATIBILITY_MASK) == R_FULL_MATCH) {
24
 */
24
			compatibility = matchRule2;
25
public abstract class AndPattern extends JavaSearchPattern { // TODO should rename IntersectingPattern, and make AndPattern a true subclass
25
		} else if ((matchRule2 & MATCH_COMPATIBILITY_MASK) == R_FULL_MATCH) {
26
	
26
			compatibility = matchRule;
27
public AndPattern(int patternKind, int matchRule) {
27
		} else {
28
	super(patternKind, matchRule);
28
			compatibility = Math.min(matchRule & MATCH_COMPATIBILITY_MASK, matchRule2 & MATCH_COMPATIBILITY_MASK);
29
}
29
		}
30
public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor progressMonitor) throws IOException {
31
	if (progressMonitor != null && progressMonitor.isCanceled()) throw new OperationCanceledException();
32
33
	this.resetQuery();
34
	SimpleSet intersectedNames = null;
35
	try {
36
		index.startQuery();
37
		do {
38
			SearchPattern pattern = ((InternalSearchPattern) this).currentPattern();
39
			EntryResult[] entries = ((InternalSearchPattern)pattern).queryIn(index);
40
			if (entries == null) return;
41
42
			SearchPattern decodedResult = pattern.getBlankPattern();
43
			SimpleSet newIntersectedNames = new SimpleSet(3);
44
			for (int i = 0, l = entries.length; i < l; i++) {
45
				if (progressMonitor != null && progressMonitor.isCanceled()) throw new OperationCanceledException();
46
47
				EntryResult entry = entries[i];
48
				decodedResult.decodeIndexKey(entry.getWord());
49
				if (pattern.matchesDecodedKey(decodedResult)) {
50
					String[] names = entry.getDocumentNames(index);
51
					if (intersectedNames != null) {
52
						for (int j = 0, n = names.length; j < n; j++)
53
							if (intersectedNames.includes(names[j]))
54
								newIntersectedNames.add(names[j]);
55
					} else {
56
						for (int j = 0, n = names.length; j < n; j++)
57
							newIntersectedNames.add(names[j]);
58
					}
59
				}
60
			}
61
62
			if (newIntersectedNames.elementSize == 0) return;
63
			intersectedNames = newIntersectedNames;
64
		} while (this.hasNextQuery());
65
	} finally {
66
		index.stopQuery();
67
	}
30
	}
31
	return (combined & (R_EXACT_MATCH | R_PREFIX_MATCH | R_PATTERN_MATCH | R_REGEXP_MATCH))
32
		| (combined & R_CASE_SENSITIVE)
33
		| compatibility
34
		| (combined & R_CAMELCASE_MATCH);
35
}
36
37
public AndPattern(SearchPattern leftPattern, SearchPattern rightPattern) {
38
	super(AND_PATTERN, combinedMatchRule(leftPattern.getMatchRule(), rightPattern.getMatchRule()));
39
	((InternalSearchPattern) this).mustResolve = ((InternalSearchPattern) leftPattern).mustResolve || ((InternalSearchPattern) rightPattern).mustResolve;
40
41
	SearchPattern[] leftPatterns = leftPattern instanceof AndPattern ? ((AndPattern) leftPattern).patterns : null;
42
	SearchPattern[] rightPatterns = rightPattern instanceof AndPattern ? ((AndPattern) rightPattern).patterns : null;
43
	int leftSize = leftPatterns == null ? 1 : leftPatterns.length;
44
	int rightSize = rightPatterns == null ? 1 : rightPatterns.length;
45
	this.patterns = new SearchPattern[leftSize + rightSize];
46
47
	if (leftPatterns == null)
48
		this.patterns[0] = leftPattern;
49
	else
50
		System.arraycopy(leftPatterns, 0, this.patterns, 0, leftSize);
51
	if (rightPatterns == null)
52
		this.patterns[leftSize] = rightPattern;
53
	else
54
		System.arraycopy(rightPatterns, 0, this.patterns, leftSize, rightSize);
68
55
69
	String containerPath = index.containerPath;
56
	// Store erasure match
70
	Object[] names = intersectedNames.values;
57
	matchCompatibility = getMatchRule() & MATCH_COMPATIBILITY_MASK;
71
	for (int i = 0, l = names.length; i < l; i++)
58
72
		if (names[i] != null)
59
	this.current = 0;
73
			((InternalSearchPattern) this).acceptMatch((String) names[i], containerPath, null/*no pattern*/, requestor, participant, scope); // AndPatterns cannot provide the decoded result
74
}
60
}
75
/**
61
76
 * Returns whether another query must be done.
62
/* (non-Javadoc)
77
 */
63
 * @see org.eclipse.jdt.internal.core.search.matching.InternalSearchPattern#currentPattern()
78
protected abstract boolean hasNextQuery();
79
/**
80
 * Resets the query and prepares this pattern to be queried.
81
 */
64
 */
82
protected abstract void resetQuery();
65
SearchPattern currentPattern() {
66
	return this.patterns[this.current++];
67
}
68
69
protected boolean hasNextQuery() {
70
	return this.current < (this.patterns.length-1);
71
}
72
73
protected void resetQuery() {
74
	this.current = 0;
75
}
76
83
}
77
}
(-)search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java (-20 / +8 lines)
Lines 299-323 Link Here
299
	return null;
299
	return null;
300
}
300
}
301
301
302
public static SearchPattern createAndPattern(final SearchPattern leftPattern, final SearchPattern rightPattern) {
303
	return new AndPattern(0/*no kind*/, 0/*no rule*/) {
304
		SearchPattern current = leftPattern;
305
		public SearchPattern currentPattern() {
306
			return this.current;
307
		}
308
		protected boolean hasNextQuery() {
309
			if (this.current == leftPattern) {
310
				this.current = rightPattern;
311
				return true;
312
			}
313
			return false; 
314
		}
315
		protected void resetQuery() {
316
			this.current = leftPattern;
317
		}
318
	};
319
}
320
321
/**
302
/**
322
 * Query a given index for matching entries. Assumes the sender has opened the index and will close when finished.
303
 * Query a given index for matching entries. Assumes the sender has opened the index and will close when finished.
323
 */
304
 */
Lines 344-350 Link Here
344
		
325
		
345
	this.pattern = pattern;
326
	this.pattern = pattern;
346
	this.patternLocator = PatternLocator.patternLocator(this.pattern);
327
	this.patternLocator = PatternLocator.patternLocator(this.pattern);
347
	this.matchContainer = this.patternLocator.matchContainer();
328
	this.matchContainer = this.patternLocator == null ? 0 : this.patternLocator.matchContainer();
348
	this.requestor = requestor;
329
	this.requestor = requestor;
349
	this.scope = scope;
330
	this.scope = scope;
350
	this.progressMonitor = progressMonitor;
331
	this.progressMonitor = progressMonitor;
Lines 1084-1089 Link Here
1084
 * Locate the matches in the given files and report them using the search requestor. 
1065
 * Locate the matches in the given files and report them using the search requestor. 
1085
 */
1066
 */
1086
public void locateMatches(SearchDocument[] searchDocuments) throws CoreException {
1067
public void locateMatches(SearchDocument[] searchDocuments) throws CoreException {
1068
	if (this.patternLocator == null) return;
1087
	int docsLength = searchDocuments.length;
1069
	int docsLength = searchDocuments.length;
1088
	if (BasicSearchEngine.VERBOSE) {
1070
	if (BasicSearchEngine.VERBOSE) {
1089
		System.out.println("Locating matches in documents ["); //$NON-NLS-1$
1071
		System.out.println("Locating matches in documents ["); //$NON-NLS-1$
Lines 1609-1614 Link Here
1609
}
1591
}
1610
1592
1611
protected void report(SearchMatch match) throws CoreException {
1593
protected void report(SearchMatch match) throws CoreException {
1594
	if (match == null) {
1595
		if (BasicSearchEngine.VERBOSE) {
1596
			System.out.println("Cannot report a null match!!!"); //$NON-NLS-1$
1597
		}
1598
		return;
1599
	}
1612
	long start = -1;
1600
	long start = -1;
1613
	if (BasicSearchEngine.VERBOSE) {
1601
	if (BasicSearchEngine.VERBOSE) {
1614
		start = System.currentTimeMillis();
1602
		start = System.currentTimeMillis();
(-)search/org/eclipse/jdt/internal/core/search/matching/OrLocator.java (-2 / +38 lines)
Lines 15-29 Link Here
15
import org.eclipse.jdt.core.search.SearchMatch;
15
import org.eclipse.jdt.core.search.SearchMatch;
16
import org.eclipse.jdt.core.search.SearchPattern;
16
import org.eclipse.jdt.core.search.SearchPattern;
17
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
17
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
18
import org.eclipse.jdt.internal.compiler.ast.Annotation;
18
import org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
19
import org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
19
import org.eclipse.jdt.internal.compiler.ast.Expression;
20
import org.eclipse.jdt.internal.compiler.ast.Expression;
20
import org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
21
import org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
21
import org.eclipse.jdt.internal.compiler.ast.ImportReference;
22
import org.eclipse.jdt.internal.compiler.ast.ImportReference;
22
import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
23
import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
24
import org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
23
import org.eclipse.jdt.internal.compiler.ast.MessageSend;
25
import org.eclipse.jdt.internal.compiler.ast.MessageSend;
24
import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
26
import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
25
import org.eclipse.jdt.internal.compiler.ast.Reference;
27
import org.eclipse.jdt.internal.compiler.ast.Reference;
26
import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
28
import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
29
import org.eclipse.jdt.internal.compiler.ast.TypeParameter;
27
import org.eclipse.jdt.internal.compiler.ast.TypeReference;
30
import org.eclipse.jdt.internal.compiler.ast.TypeReference;
28
import org.eclipse.jdt.internal.compiler.lookup.Binding;
31
import org.eclipse.jdt.internal.compiler.lookup.Binding;
29
import org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
32
import org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
Lines 47-52 Link Here
47
	for (int i = 0, length = this.patternLocators.length; i < length; i++)
50
	for (int i = 0, length = this.patternLocators.length; i < length; i++)
48
		this.patternLocators[i].initializePolymorphicSearch(locator);
51
		this.patternLocators[i].initializePolymorphicSearch(locator);
49
}
52
}
53
public int match(Annotation node, MatchingNodeSet nodeSet) {
54
	int level = IMPOSSIBLE_MATCH;
55
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
56
		int newLevel = this.patternLocators[i].match(node, nodeSet);
57
		if (newLevel > level) {
58
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
59
			level = newLevel;
60
		}
61
	}
62
	return level;
63
}
50
public int match(ASTNode node, MatchingNodeSet nodeSet) {
64
public int match(ASTNode node, MatchingNodeSet nodeSet) {
51
	int level = IMPOSSIBLE_MATCH;
65
	int level = IMPOSSIBLE_MATCH;
52
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
66
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
Lines 113-118 Link Here
113
	}
127
	}
114
	return level;
128
	return level;
115
}
129
}
130
public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
131
	int level = IMPOSSIBLE_MATCH;
132
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
133
		int newLevel = this.patternLocators[i].match(node, nodeSet);
134
		if (newLevel > level) {
135
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
136
			level = newLevel;
137
		}
138
	}
139
	return level;
140
}
116
public int match(MessageSend node, MatchingNodeSet nodeSet) {
141
public int match(MessageSend node, MatchingNodeSet nodeSet) {
117
	int level = IMPOSSIBLE_MATCH;
142
	int level = IMPOSSIBLE_MATCH;
118
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
143
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
Lines 146-151 Link Here
146
	}
171
	}
147
	return level;
172
	return level;
148
}
173
}
174
public int match(TypeParameter node, MatchingNodeSet nodeSet) {
175
	int level = IMPOSSIBLE_MATCH;
176
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
177
		int newLevel = this.patternLocators[i].match(node, nodeSet);
178
		if (newLevel > level) {
179
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
180
			level = newLevel;
181
		}
182
	}
183
	return level;
184
}
149
public int match(TypeReference node, MatchingNodeSet nodeSet) {
185
public int match(TypeReference node, MatchingNodeSet nodeSet) {
150
	int level = IMPOSSIBLE_MATCH;
186
	int level = IMPOSSIBLE_MATCH;
151
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
187
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
Lines 164-170 Link Here
164
	return result;
200
	return result;
165
}
201
}
166
protected void matchLevelAndReportImportRef(ImportReference importRef, Binding binding, MatchLocator locator) throws CoreException {
202
protected void matchLevelAndReportImportRef(ImportReference importRef, Binding binding, MatchLocator locator) throws CoreException {
167
	
203
168
	// for static import, binding can be a field binding or a member type binding
204
	// for static import, binding can be a field binding or a member type binding
169
	// verify that in this case binding is static and use declaring class for fields
205
	// verify that in this case binding is static and use declaring class for fields
170
	Binding refBinding = binding;
206
	Binding refBinding = binding;
Lines 182-188 Link Here
182
			if (!memberBinding.isStatic()) return;
218
			if (!memberBinding.isStatic()) return;
183
		}
219
		}
184
	}
220
	}
185
	
221
186
	// Look for closest pattern
222
	// Look for closest pattern
187
	PatternLocator closestPattern = null;
223
	PatternLocator closestPattern = null;
188
	int level = IMPOSSIBLE_MATCH;
224
	int level = IMPOSSIBLE_MATCH;
(-)search/org/eclipse/jdt/core/search/SearchPattern.java (-1 / +2 lines)
Lines 432-440 Link Here
432
 * @param leftPattern the left pattern
432
 * @param leftPattern the left pattern
433
 * @param rightPattern the right pattern
433
 * @param rightPattern the right pattern
434
 * @return an "and" pattern
434
 * @return an "and" pattern
435
 * @deprecated This functionality is not fully supported yet. This might be done in a further version...
435
 */
436
 */
436
public static SearchPattern createAndPattern(SearchPattern leftPattern, SearchPattern rightPattern) {
437
public static SearchPattern createAndPattern(SearchPattern leftPattern, SearchPattern rightPattern) {
437
	return MatchLocator.createAndPattern(leftPattern, rightPattern);
438
	return new AndPattern(leftPattern, rightPattern);
438
}
439
}
439
440
440
/**
441
/**
(-)search/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.java (+1 lines)
Lines 58-61 Link Here
58
	int OR_PATTERN = 0x0100;
58
	int OR_PATTERN = 0x0100;
59
	int LOCAL_VAR_PATTERN = 0x0200;
59
	int LOCAL_VAR_PATTERN = 0x0200;
60
	int TYPE_PARAM_PATTERN = 0x0400;
60
	int TYPE_PARAM_PATTERN = 0x0400;
61
	int AND_PATTERN = 0x0800;
61
}
62
}
(-)search/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java (+83 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2006 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.jdt.internal.core.search.matching;
12
13
import java.io.IOException;
14
15
import org.eclipse.core.runtime.IProgressMonitor;
16
import org.eclipse.core.runtime.OperationCanceledException;
17
import org.eclipse.jdt.core.search.*;
18
import org.eclipse.jdt.internal.compiler.util.SimpleSet;
19
import org.eclipse.jdt.internal.core.index.*;
20
import org.eclipse.jdt.internal.core.search.IndexQueryRequestor;
21
22
/**
23
 * Query the index multiple times and do an 'and' on the results.
24
 */
25
public abstract class IntersectingPattern extends JavaSearchPattern {
26
27
public IntersectingPattern(int patternKind, int matchRule) {
28
	super(patternKind, matchRule);
29
}
30
public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor progressMonitor) throws IOException {
31
	if (progressMonitor != null && progressMonitor.isCanceled()) throw new OperationCanceledException();
32
33
	this.resetQuery();
34
	SimpleSet intersectedNames = null;
35
	try {
36
		index.startQuery();
37
		do {
38
			SearchPattern pattern = ((InternalSearchPattern) this).currentPattern();
39
			EntryResult[] entries = ((InternalSearchPattern)pattern).queryIn(index);
40
			if (entries == null) return;
41
42
			SearchPattern decodedResult = pattern.getBlankPattern();
43
			SimpleSet newIntersectedNames = new SimpleSet(3);
44
			for (int i = 0, l = entries.length; i < l; i++) {
45
				if (progressMonitor != null && progressMonitor.isCanceled()) throw new OperationCanceledException();
46
47
				EntryResult entry = entries[i];
48
				decodedResult.decodeIndexKey(entry.getWord());
49
				if (pattern.matchesDecodedKey(decodedResult)) {
50
					String[] names = entry.getDocumentNames(index);
51
					if (intersectedNames != null) {
52
						for (int j = 0, n = names.length; j < n; j++)
53
							if (intersectedNames.includes(names[j]))
54
								newIntersectedNames.add(names[j]);
55
					} else {
56
						for (int j = 0, n = names.length; j < n; j++)
57
							newIntersectedNames.add(names[j]);
58
					}
59
				}
60
			}
61
62
			if (newIntersectedNames.elementSize == 0) return;
63
			intersectedNames = newIntersectedNames;
64
		} while (this.hasNextQuery());
65
	} finally {
66
		index.stopQuery();
67
	}
68
69
	String containerPath = index.containerPath;
70
	Object[] names = intersectedNames.values;
71
	for (int i = 0, l = names.length; i < l; i++)
72
		if (names[i] != null)
73
			((InternalSearchPattern) this).acceptMatch((String) names[i], containerPath, null/*no pattern*/, requestor, participant, scope); // AndPatterns cannot provide the decoded result
74
}
75
/**
76
 * Returns whether another query must be done.
77
 */
78
protected abstract boolean hasNextQuery();
79
/**
80
 * Resets the query and prepares this pattern to be queried.
81
 */
82
protected abstract void resetQuery();
83
}
(-)search/org/eclipse/jdt/internal/core/search/matching/AndLocator.java (+255 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2006 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.jdt.internal.core.search.matching;
12
13
import org.eclipse.core.runtime.CoreException;
14
import org.eclipse.jdt.core.IJavaElement;
15
import org.eclipse.jdt.core.search.SearchPattern;
16
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
17
import org.eclipse.jdt.internal.compiler.ast.Annotation;
18
import org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
19
import org.eclipse.jdt.internal.compiler.ast.Expression;
20
import org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
21
import org.eclipse.jdt.internal.compiler.ast.ImportReference;
22
import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
23
import org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
24
import org.eclipse.jdt.internal.compiler.ast.MessageSend;
25
import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
26
import org.eclipse.jdt.internal.compiler.ast.Reference;
27
import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
28
import org.eclipse.jdt.internal.compiler.ast.TypeParameter;
29
import org.eclipse.jdt.internal.compiler.ast.TypeReference;
30
import org.eclipse.jdt.internal.compiler.lookup.Binding;
31
32
public class AndLocator extends PatternLocator {
33
34
final PatternLocator[] patternLocators;
35
final int[] levels;
36
37
public AndLocator(AndPattern pattern) {
38
	super(pattern);
39
40
	SearchPattern[] patterns = pattern.patterns;
41
	PatternLocator[] locators = new PatternLocator[patterns.length];
42
	this.levels = new int[patterns.length];
43
	for (int i=0, l=patterns.length; i<l; i++) {
44
		locators[i] = PatternLocator.patternLocator(patterns[i]);
45
		this.levels[i] = IMPOSSIBLE_MATCH;
46
	}
47
	this.patternLocators = locators;
48
}
49
public void initializePolymorphicSearch(MatchLocator locator) {
50
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
51
		this.patternLocators[i].initializePolymorphicSearch(locator);
52
	}
53
}
54
public int match(Annotation node, MatchingNodeSet nodeSet) {
55
	int level = IMPOSSIBLE_MATCH;
56
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
57
		int newLevel = this.patternLocators[i].match(node, nodeSet);
58
		if (newLevel > level) {
59
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
60
			level = newLevel;
61
		}
62
	}
63
	return level;
64
}
65
public int match(ASTNode node, MatchingNodeSet nodeSet) {
66
	int level = IMPOSSIBLE_MATCH;
67
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
68
		int newLevel = this.patternLocators[i].match(node, nodeSet);
69
		if (newLevel > level) {
70
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
71
			level = newLevel;
72
		}
73
	}
74
	return level;
75
}
76
public int match(ConstructorDeclaration node, MatchingNodeSet nodeSet) {
77
	int level = IMPOSSIBLE_MATCH;
78
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
79
		int newLevel = this.patternLocators[i].match(node, nodeSet);
80
		if (newLevel > level) {
81
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
82
			level = newLevel;
83
		}
84
	}
85
	return level;
86
}
87
public int match(Expression node, MatchingNodeSet nodeSet) {
88
	int level = IMPOSSIBLE_MATCH;
89
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
90
		int newLevel = this.patternLocators[i].match(node, nodeSet);
91
		if (newLevel > level) {
92
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
93
			level = newLevel;
94
		}
95
	}
96
	return level;
97
}
98
public int match(FieldDeclaration node, MatchingNodeSet nodeSet) {
99
	int level = IMPOSSIBLE_MATCH;
100
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
101
		int newLevel = this.patternLocators[i].match(node, nodeSet);
102
		if (newLevel > level) {
103
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
104
			level = newLevel;
105
		}
106
	}
107
	return level;
108
}
109
public int match(LocalDeclaration node, MatchingNodeSet nodeSet) {
110
	int level = IMPOSSIBLE_MATCH;
111
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
112
		int newLevel = this.patternLocators[i].match(node, nodeSet);
113
		if (newLevel > level) {
114
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
115
			level = newLevel;
116
		}
117
	}
118
	return level;
119
}
120
public int match(MethodDeclaration node, MatchingNodeSet nodeSet) {
121
	int level = IMPOSSIBLE_MATCH;
122
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
123
		int newLevel = this.patternLocators[i].match(node, nodeSet);
124
		if (newLevel > level) {
125
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
126
			level = newLevel;
127
		}
128
	}
129
	return level;
130
}
131
public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
132
	int level = IMPOSSIBLE_MATCH;
133
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
134
		int newLevel = this.patternLocators[i].match(node, nodeSet);
135
		if (newLevel > level) {
136
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
137
			level = newLevel;
138
		}
139
	}
140
	return level;
141
}
142
public int match(MessageSend node, MatchingNodeSet nodeSet) {
143
	int level = IMPOSSIBLE_MATCH;
144
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
145
		int newLevel = this.patternLocators[i].match(node, nodeSet);
146
		if (newLevel > level) {
147
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
148
			level = newLevel;
149
		}
150
	}
151
	return level;
152
}
153
public int match(Reference node, MatchingNodeSet nodeSet) {
154
	int level = IMPOSSIBLE_MATCH;
155
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
156
		int newLevel = this.patternLocators[i].match(node, nodeSet);
157
		if (newLevel > level) {
158
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
159
			level = newLevel;
160
		}
161
	}
162
	return level;
163
}
164
public int match(TypeDeclaration node, MatchingNodeSet nodeSet) {
165
	int level = IMPOSSIBLE_MATCH;
166
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
167
		int newLevel = this.patternLocators[i].match(node, nodeSet);
168
		if (newLevel > level) {
169
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
170
			level = newLevel;
171
		}
172
	}
173
	return level;
174
}
175
public int match(TypeParameter node, MatchingNodeSet nodeSet) {
176
	int level = IMPOSSIBLE_MATCH;
177
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
178
		int newLevel = this.patternLocators[i].match(node, nodeSet);
179
		if (newLevel > level) {
180
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
181
			level = newLevel;
182
		}
183
	}
184
	return level;
185
}
186
public int match(TypeReference node, MatchingNodeSet nodeSet) {
187
	int level = IMPOSSIBLE_MATCH;
188
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
189
		int newLevel = this.patternLocators[i].match(node, nodeSet);
190
		if (newLevel > level) {
191
			if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
192
			level = newLevel;
193
		}
194
	}
195
	return level;
196
}
197
protected int matchContainer() {
198
	int result = ALL_CONTAINER;
199
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
200
		result &= this.patternLocators[i].matchContainer();
201
	}
202
	return result;
203
}
204
protected void matchReportImportRef(ImportReference importRef, Binding binding, IJavaElement element, int accuracy, MatchLocator locator) throws CoreException {
205
	PatternLocator weakestPattern = null;
206
	int level = IMPOSSIBLE_MATCH;
207
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
208
		int newLevel = this.patternLocators[i].matchLevel(importRef);
209
		if (newLevel == IMPOSSIBLE_MATCH) return;
210
		if (weakestPattern == null || newLevel < level) {
211
			weakestPattern = this.patternLocators[i];
212
			level = newLevel;
213
		}
214
	}
215
	weakestPattern.matchReportImportRef(importRef, binding, element, accuracy, locator);
216
}
217
protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
218
	PatternLocator weakestPattern = null;
219
	int level = IMPOSSIBLE_MATCH;
220
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
221
		if (this.patternLocators[i].referenceType() == 0) return; // impossible match
222
		int newLevel = this.patternLocators[i].resolveLevel(reference);
223
		if (newLevel == IMPOSSIBLE_MATCH) return;
224
		if (weakestPattern == null || newLevel < level) {
225
			weakestPattern = this.patternLocators[i];
226
			level = newLevel;
227
		}
228
	}
229
	weakestPattern.matchReportReference(reference, element, elementBinding, accuracy, locator);
230
}
231
public int resolveLevel(ASTNode node) {
232
	int level = ACCURATE_MATCH;
233
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
234
		int newLevel = this.patternLocators[i].resolveLevel(node);
235
		if (newLevel == IMPOSSIBLE_MATCH) return IMPOSSIBLE_MATCH;
236
		this.levels[i] = newLevel;
237
		if (newLevel < level) {
238
			level = newLevel; // want to answer the weaker match
239
		}
240
	}
241
	return level;
242
}
243
public int resolveLevel(Binding binding) {
244
	int level = ACCURATE_MATCH;
245
	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
246
		int newLevel = this.patternLocators[i].resolveLevel(binding);
247
		if (newLevel == IMPOSSIBLE_MATCH) return IMPOSSIBLE_MATCH;
248
		this.levels[i] = newLevel;
249
		if (newLevel < level) {
250
			level = newLevel; // want to answer the weaker match
251
		}
252
	}
253
	return level;
254
}
255
}
(-)src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java (-2266 / +2336 lines)
Lines 31-36 Link Here
31
import org.eclipse.jdt.internal.core.index.Index;
31
import org.eclipse.jdt.internal.core.index.Index;
32
import org.eclipse.jdt.internal.core.search.AbstractSearchScope;
32
import org.eclipse.jdt.internal.core.search.AbstractSearchScope;
33
import org.eclipse.jdt.internal.core.search.indexing.IIndexConstants;
33
import org.eclipse.jdt.internal.core.search.indexing.IIndexConstants;
34
import org.eclipse.jdt.internal.core.search.matching.AndPattern;
34
import org.eclipse.jdt.internal.core.search.indexing.IndexManager;
35
import org.eclipse.jdt.internal.core.search.indexing.IndexManager;
35
import org.eclipse.jdt.internal.core.search.matching.MatchLocator;
36
import org.eclipse.jdt.internal.core.search.matching.MatchLocator;
36
import org.eclipse.jdt.internal.core.search.matching.PatternLocator;
37
import org.eclipse.jdt.internal.core.search.matching.PatternLocator;
Lines 41-47 Link Here
41
 */
42
 */
42
public class JavaSearchBugsTests extends AbstractJavaSearchTests implements IJavaSearchConstants {
43
public class JavaSearchBugsTests extends AbstractJavaSearchTests implements IJavaSearchConstants {
43
	private final static int UI_DECLARATIONS = DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE;
44
	private final static int UI_DECLARATIONS = DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE;
44
	
45
45
public JavaSearchBugsTests(String name) {
46
public JavaSearchBugsTests(String name) {
46
	super(name);
47
	super(name);
47
	this.endChar = "";
48
	this.endChar = "";
Lines 145-163 Link Here
145
	workingCopies = new ICompilationUnit[1];
146
	workingCopies = new ICompilationUnit[1];
146
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b41018/A.java",
147
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b41018/A.java",
147
		"package b41018;\n" +
148
		"package b41018;\n" +
148
		"public class A {\n" + 
149
		"public class A {\n" +
149
		"	protected void anotherMethod() {\n" + 
150
		"	protected void anotherMethod() {\n" +
150
		"		methodA(null);\n" + 
151
		"		methodA(null);\n" +
151
		"	}\n" + 
152
		"	}\n" +
152
		"	private Object methodA(ClassB.InnerInterface arg3) {\n" + 
153
		"	private Object methodA(ClassB.InnerInterface arg3) {\n" +
153
		"		return null;\n" + 
154
		"		return null;\n" +
154
		"	}\n" + 
155
		"	}\n" +
155
		"}\n" + 
156
		"}\n" +
156
		"class ClassB implements InterfaceB {\n" + 
157
		"class ClassB implements InterfaceB {\n" +
157
		"}\n" + 
158
		"}\n" +
158
		"interface InterfaceB {\n" + 
159
		"interface InterfaceB {\n" +
159
		"	interface InnerInterface {\n" + 
160
		"	interface InnerInterface {\n" +
160
		"	}\n" + 
161
		"	}\n" +
161
		"}\n"
162
		"}\n"
162
		);
163
		);
163
	IType type = workingCopies[0].getType("A");
164
	IType type = workingCopies[0].getType("A");
Lines 175-192 Link Here
175
public void testBug70827() throws CoreException {
176
public void testBug70827() throws CoreException {
176
	workingCopies = new ICompilationUnit[1];
177
	workingCopies = new ICompilationUnit[1];
177
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b70827/A.java",
178
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b70827/A.java",
178
		"package b70827;\n" + 
179
		"package b70827;\n" +
179
		"class A {\n" + 
180
		"class A {\n" +
180
		"	private void privateMethod() {\n" + 
181
		"	private void privateMethod() {\n" +
181
		"	}\n" + 
182
		"	}\n" +
182
		"}\n" + 
183
		"}\n" +
183
		"class Second extends A {\n" + 
184
		"class Second extends A {\n" +
184
		"	void call() {\n" + 
185
		"	void call() {\n" +
185
		"		int i= privateMethod();\n" + 
186
		"		int i= privateMethod();\n" +
186
		"	}\n" + 
187
		"	}\n" +
187
		"	int privateMethod() {\n" + 
188
		"	int privateMethod() {\n" +
188
		"		return 1;\n" + 
189
		"		return 1;\n" +
189
		"	}\n" + 
190
		"	}\n" +
190
		"}\n"
191
		"}\n"
191
		);
192
		);
192
	IType type = workingCopies[0].getType("A");
193
	IType type = workingCopies[0].getType("A");
Lines 212-225 Link Here
212
	};
213
	};
213
	workingCopies = new ICompilationUnit[1];
214
	workingCopies = new ICompilationUnit[1];
214
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b71279/AA.java",
215
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b71279/AA.java",
215
		"package b71279;\n" + 
216
		"package b71279;\n" +
216
		"public class AA {\n" + 
217
		"public class AA {\n" +
217
		"	Unknown ref;\n" + 
218
		"	Unknown ref;\n" +
218
		"}\n"
219
		"}\n"
219
		);
220
		);
220
	new SearchEngine(workingCopies).searchDeclarationsOfReferencedTypes(workingCopies[0], result, null);
221
	new SearchEngine(workingCopies).searchDeclarationsOfReferencedTypes(workingCopies[0], result, null);
221
	assertSearchResults(
222
	assertSearchResults(
222
		"Starting search...\n" + 
223
		"Starting search...\n" +
223
		"Done searching.",
224
		"Done searching.",
224
		result);
225
		result);
225
}
226
}
Lines 232-267 Link Here
232
	workingCopies = new ICompilationUnit[4];
233
	workingCopies = new ICompilationUnit[4];
233
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
234
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
234
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b72866/A.java",
235
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b72866/A.java",
235
		"package b72866;\n" + 
236
		"package b72866;\n" +
236
		"public abstract class A {\n" + 
237
		"public abstract class A {\n" +
237
		"	public abstract void foo(V v);\n" + 
238
		"	public abstract void foo(V v);\n" +
238
		"}\n",
239
		"}\n",
239
		owner
240
		owner
240
	);
241
	);
241
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b72866/SX.java",
242
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b72866/SX.java",
242
		"package b72866;\n" + 
243
		"package b72866;\n" +
243
		"public class SX extends A {\n" + 
244
		"public class SX extends A {\n" +
244
		"	public void foo(V v) {\n" + 
245
		"	public void foo(V v) {\n" +
245
		"	    v.bar(this);\n" + 
246
		"	    v.bar(this);\n" +
246
		"	}\n" + 
247
		"	}\n" +
247
		"}\n"	,
248
		"}\n"	,
248
		owner
249
		owner
249
	);
250
	);
250
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b72866/V.java",
251
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b72866/V.java",
251
		"package b72866;\n" + 
252
		"package b72866;\n" +
252
		"public class V {\n" + 
253
		"public class V {\n" +
253
		"	void bar(A a) {}\n" + 
254
		"	void bar(A a) {}\n" +
254
		"	void bar(X x) {}\n" + 
255
		"	void bar(X x) {}\n" +
255
		"	void bar(SX s) {}\n" + 
256
		"	void bar(SX s) {}\n" +
256
		"}\n"	,
257
		"}\n"	,
257
		owner
258
		owner
258
	);
259
	);
259
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b72866/X.java",
260
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b72866/X.java",
260
		"package b72866;\n" + 
261
		"package b72866;\n" +
261
		"public class X extends A {\n" + 
262
		"public class X extends A {\n" +
262
		"	public void foo(V v) {\n" + 
263
		"	public void foo(V v) {\n" +
263
		"	    v.bar(this);\n" + 
264
		"	    v.bar(this);\n" +
264
		"	}\n" + 
265
		"	}\n" +
265
		"}\n"	,
266
		"}\n"	,
266
		owner
267
		owner
267
	);
268
	);
Lines 280-324 Link Here
280
public void testBug73112a() throws CoreException {
281
public void testBug73112a() throws CoreException {
281
	workingCopies = new ICompilationUnit[1];
282
	workingCopies = new ICompilationUnit[1];
282
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73112/A.java",
283
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73112/A.java",
283
		"package b73112;\n" + 
284
		"package b73112;\n" +
284
		"public class A {\n" + 
285
		"public class A {\n" +
285
		"    int fieldA73112a = 1, fieldA73112b = new Integer(2).intValue(), fieldA73112c = fieldA73112a + fieldA73112b;\n" + 
286
		"    int fieldA73112a = 1, fieldA73112b = new Integer(2).intValue(), fieldA73112c = fieldA73112a + fieldA73112b;\n" +
286
		"    int fieldA73112d;\n" + 
287
		"    int fieldA73112d;\n" +
287
		"    \n" + 
288
		"    \n" +
288
		"    public void method(){}\n" + 
289
		"    public void method(){}\n" +
289
		"}\n");
290
		"}\n");
290
	// search field references to first multiple field
291
	// search field references to first multiple field
291
	search("fieldA73112*", FIELD, ALL_OCCURRENCES);
292
	search("fieldA73112*", FIELD, ALL_OCCURRENCES);
292
	assertSearchResults(
293
	assertSearchResults(
293
		"src/b73112/A.java b73112.A.fieldA73112a [fieldA73112a] EXACT_MATCH\n" + 
294
		"src/b73112/A.java b73112.A.fieldA73112a [fieldA73112a] EXACT_MATCH\n" +
294
		"src/b73112/A.java b73112.A.fieldA73112b [fieldA73112b] EXACT_MATCH\n" + 
295
		"src/b73112/A.java b73112.A.fieldA73112b [fieldA73112b] EXACT_MATCH\n" +
295
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112c] EXACT_MATCH\n" + 
296
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112c] EXACT_MATCH\n" +
296
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112a] EXACT_MATCH\n" + 
297
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112a] EXACT_MATCH\n" +
297
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112b] EXACT_MATCH\n" + 
298
		"src/b73112/A.java b73112.A.fieldA73112c [fieldA73112b] EXACT_MATCH\n" +
298
		"src/b73112/A.java b73112.A.fieldA73112d [fieldA73112d] EXACT_MATCH"
299
		"src/b73112/A.java b73112.A.fieldA73112d [fieldA73112d] EXACT_MATCH"
299
	);
300
	);
300
}
301
}
301
public void testBug73112b() throws CoreException {
302
public void testBug73112b() throws CoreException {
302
	workingCopies = new ICompilationUnit[1];
303
	workingCopies = new ICompilationUnit[1];
303
	workingCopies[0] = super.getWorkingCopy("/JavaSearchBugs/src/b73112/B.java",
304
	workingCopies[0] = super.getWorkingCopy("/JavaSearchBugs/src/b73112/B.java",
304
		"package b73112;\n" + 
305
		"package b73112;\n" +
305
		"public class B {\n" + 
306
		"public class B {\n" +
306
		"    int fieldB73112a, fieldB73112b = 10;\n" + 
307
		"    int fieldB73112a, fieldB73112b = 10;\n" +
307
		"    int fieldB73112c = fieldB73112a + fieldB73112b, fieldB73112d = fieldB73112c + fieldB73112a, fieldB73112e;\n" + 
308
		"    int fieldB73112c = fieldB73112a + fieldB73112b, fieldB73112d = fieldB73112c + fieldB73112a, fieldB73112e;\n" +
308
		"    \n" + 
309
		"    \n" +
309
		"    public void method(){}\n" + 
310
		"    public void method(){}\n" +
310
		"}\n");
311
		"}\n");
311
	// search field references to first multiple field
312
	// search field references to first multiple field
312
	search("fieldB73112*", FIELD, ALL_OCCURRENCES);
313
	search("fieldB73112*", FIELD, ALL_OCCURRENCES);
313
	assertSearchResults(
314
	assertSearchResults(
314
		"src/b73112/B.java b73112.B.fieldB73112a [fieldB73112a] EXACT_MATCH\n" + 
315
		"src/b73112/B.java b73112.B.fieldB73112a [fieldB73112a] EXACT_MATCH\n" +
315
		"src/b73112/B.java b73112.B.fieldB73112b [fieldB73112b] EXACT_MATCH\n" + 
316
		"src/b73112/B.java b73112.B.fieldB73112b [fieldB73112b] EXACT_MATCH\n" +
316
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112c] EXACT_MATCH\n" + 
317
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112c] EXACT_MATCH\n" +
317
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112a] EXACT_MATCH\n" + 
318
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112a] EXACT_MATCH\n" +
318
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112b] EXACT_MATCH\n" + 
319
		"src/b73112/B.java b73112.B.fieldB73112c [fieldB73112b] EXACT_MATCH\n" +
319
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112d] EXACT_MATCH\n" + 
320
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112d] EXACT_MATCH\n" +
320
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112c] EXACT_MATCH\n" + 
321
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112c] EXACT_MATCH\n" +
321
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112a] EXACT_MATCH\n" + 
322
		"src/b73112/B.java b73112.B.fieldB73112d [fieldB73112a] EXACT_MATCH\n" +
322
		"src/b73112/B.java b73112.B.fieldB73112e [fieldB73112e] EXACT_MATCH"
323
		"src/b73112/B.java b73112.B.fieldB73112e [fieldB73112e] EXACT_MATCH"
323
	);
324
	);
324
}
325
}
Lines 331-376 Link Here
331
	workingCopies = new ICompilationUnit[6];
332
	workingCopies = new ICompilationUnit[6];
332
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
333
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
333
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336/A.java",
334
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336/A.java",
334
		"package b73336;\n" + 
335
		"package b73336;\n" +
335
		"public class A {}\n",
336
		"public class A {}\n",
336
		owner
337
		owner
337
	);
338
	);
338
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336/AA.java",
339
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336/AA.java",
339
		"package b73336;\n" + 
340
		"package b73336;\n" +
340
		"public class AA extends A {}\n",
341
		"public class AA extends A {}\n",
341
		owner
342
		owner
342
	);
343
	);
343
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336/B.java",
344
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336/B.java",
344
		"package b73336;\n" + 
345
		"package b73336;\n" +
345
		"public class B extends X<A, A> {\n" + 
346
		"public class B extends X<A, A> {\n" +
346
		"	<T> void foo(T t) {}\n" + 
347
		"	<T> void foo(T t) {}\n" +
347
		"}\n",
348
		"}\n",
348
		owner
349
		owner
349
	);
350
	);
350
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336/C.java",
351
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336/C.java",
351
		"package b73336;\n" + 
352
		"package b73336;\n" +
352
		"public class C implements I<A> {\n" + 
353
		"public class C implements I<A> {\n" +
353
		"	public void foo() {\n" + 
354
		"	public void foo() {\n" +
354
		"		B b = new B();\n" + 
355
		"		B b = new B();\n" +
355
		"		b.<A>foo(new A());\n" + 
356
		"		b.<A>foo(new A());\n" +
356
		"	}\n" + 
357
		"	}\n" +
357
		"}\n",
358
		"}\n",
358
		owner
359
		owner
359
	);
360
	);
360
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b73336/I.java",
361
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b73336/I.java",
361
		"package b73336;\n" + 
362
		"package b73336;\n" +
362
		"public interface I<T>  {\n" + 
363
		"public interface I<T>  {\n" +
363
		"	public void foo();\n" + 
364
		"	public void foo();\n" +
364
		"}\n",
365
		"}\n",
365
		owner
366
		owner
366
	);
367
	);
367
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b73336/X.java",
368
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b73336/X.java",
368
		"package b73336;\n" + 
369
		"package b73336;\n" +
369
		"public class X<T, U> {\n" + 
370
		"public class X<T, U> {\n" +
370
		"	<V> void foo(V v) {}\n" + 
371
		"	<V> void foo(V v) {}\n" +
371
		"	class Member<T> {\n" + 
372
		"	class Member<T> {\n" +
372
		"		void foo() {}\n" + 
373
		"		void foo() {}\n" +
373
		"	}\n" + 
374
		"	}\n" +
374
		"}\n",
375
		"}\n",
375
		owner
376
		owner
376
	);
377
	);
Lines 378-388 Link Here
378
	IType type = workingCopies[0].getType("A");
379
	IType type = workingCopies[0].getType("A");
379
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
380
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
380
	assertSearchResults(
381
	assertSearchResults(
381
		"src/b73336/AA.java b73336.AA [A] EXACT_MATCH\n" + 
382
		"src/b73336/AA.java b73336.AA [A] EXACT_MATCH\n" +
382
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" + 
383
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" +
383
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" + 
384
		"src/b73336/B.java b73336.B [A] EXACT_MATCH\n" +
384
		"src/b73336/C.java b73336.C [A] EXACT_MATCH\n" + 
385
		"src/b73336/C.java b73336.C [A] EXACT_MATCH\n" +
385
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH\n" + 
386
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH\n" +
386
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH"
387
		"src/b73336/C.java void b73336.C.foo() [A] EXACT_MATCH"
387
	);
388
	);
388
}
389
}
Lines 390-421 Link Here
390
	workingCopies = new ICompilationUnit[4];
391
	workingCopies = new ICompilationUnit[4];
391
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
392
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
392
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336b/A.java",
393
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336b/A.java",
393
		"package b73336b;\n" + 
394
		"package b73336b;\n" +
394
		"public class A {}\n",
395
		"public class A {}\n",
395
		owner
396
		owner
396
	);
397
	);
397
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336b/B.java",
398
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336b/B.java",
398
		"package b73336b;\n" + 
399
		"package b73336b;\n" +
399
		"public class B extends X<A, A> {\n" + 
400
		"public class B extends X<A, A> {\n" +
400
		"}\n",
401
		"}\n",
401
		owner
402
		owner
402
	);
403
	);
403
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336b/C.java",
404
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336b/C.java",
404
		"package b73336b;\n" + 
405
		"package b73336b;\n" +
405
		"public class C extends X<A, A>.Member<A> {\n" + 
406
		"public class C extends X<A, A>.Member<A> {\n" +
406
		"	public C() {\n" + 
407
		"	public C() {\n" +
407
		"		new X<A, A>().super();\n" + 
408
		"		new X<A, A>().super();\n" +
408
		"	}\n" + 
409
		"	}\n" +
409
		"}\n",
410
		"}\n",
410
		owner
411
		owner
411
	);
412
	);
412
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336b/X.java",
413
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336b/X.java",
413
		"package b73336b;\n" + 
414
		"package b73336b;\n" +
414
		"public class X<T, U> {\n" + 
415
		"public class X<T, U> {\n" +
415
		"	<V> void foo(V v) {}\n" + 
416
		"	<V> void foo(V v) {}\n" +
416
		"	class Member<T> {\n" + 
417
		"	class Member<T> {\n" +
417
		"		void foo() {}\n" + 
418
		"		void foo() {}\n" +
418
		"	}\n" + 
419
		"	}\n" +
419
		"}\n",
420
		"}\n",
420
		owner
421
		owner
421
	);
422
	);
Lines 424-435 Link Here
424
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336b", false));
425
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336b", false));
425
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
426
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
426
	assertSearchResults(
427
	assertSearchResults(
427
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" + 
428
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" +
428
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" + 
429
		"src/b73336b/B.java b73336b.B [A] EXACT_MATCH\n" +
429
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" + 
430
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" +
430
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" + 
431
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" +
431
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" + 
432
		"src/b73336b/C.java b73336b.C [A] EXACT_MATCH\n" +
432
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH\n" + 
433
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH\n" +
433
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH"
434
		"src/b73336b/C.java b73336b.C() [A] EXACT_MATCH"
434
	);
435
	);
435
}
436
}
Lines 438-466 Link Here
438
	workingCopies = new ICompilationUnit[4];
439
	workingCopies = new ICompilationUnit[4];
439
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
440
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
440
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336c/A.java",
441
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73336c/A.java",
441
		"package b73336c;\n" + 
442
		"package b73336c;\n" +
442
		"public class A {}\n",
443
		"public class A {}\n",
443
		owner
444
		owner
444
	);
445
	);
445
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336c/B.java",
446
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73336c/B.java",
446
		"package b73336c;\n" + 
447
		"package b73336c;\n" +
447
		"public class B extends X<A, A> {\n" + 
448
		"public class B extends X<A, A> {\n" +
448
		"}\n",
449
		"}\n",
449
		owner
450
		owner
450
	);
451
	);
451
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336c/C.java",
452
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b73336c/C.java",
452
		"package b73336c;\n" + 
453
		"package b73336c;\n" +
453
		"public class C implements X<A, A>.Interface<A>  {\n" + 
454
		"public class C implements X<A, A>.Interface<A>  {\n" +
454
		"	void bar() {}\n" + 
455
		"	void bar() {}\n" +
455
		"}\n",
456
		"}\n",
456
		owner
457
		owner
457
	);
458
	);
458
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336c/X.java",
459
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b73336c/X.java",
459
		"package b73336c;\n" + 
460
		"package b73336c;\n" +
460
		"public class X<T, U> {\n" + 
461
		"public class X<T, U> {\n" +
461
		"	interface Interface<V> {\n" + 
462
		"	interface Interface<V> {\n" +
462
		"		void bar();\n" + 
463
		"		void bar();\n" +
463
		"	}\n" + 
464
		"	}\n" +
464
		"}\n",
465
		"}\n",
465
		owner
466
		owner
466
	);
467
	);
Lines 469-478 Link Here
469
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336c", false));
470
//	search(type, REFERENCES, getJavaSearchScopeBugs("b73336c", false));
470
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
471
	search(type, REFERENCES); //, getJavaSearchScopeBugs("b73336", false));
471
	assertSearchResults(
472
	assertSearchResults(
472
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" + 
473
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" +
473
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" + 
474
		"src/b73336c/B.java b73336c.B [A] EXACT_MATCH\n" +
474
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" + 
475
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" +
475
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" + 
476
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH\n" +
476
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH"
477
		"src/b73336c/C.java b73336c.C [A] EXACT_MATCH"
477
	);
478
	);
478
}
479
}
Lines 485-502 Link Here
485
	workingCopies = new ICompilationUnit[2];
486
	workingCopies = new ICompilationUnit[2];
486
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
487
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
487
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73696/C.java",
488
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b73696/C.java",
488
		"package b73696;\n" + 
489
		"package b73696;\n" +
489
		"public class C implements  I {\n" + 
490
		"public class C implements  I {\n" +
490
		"}",
491
		"}",
491
		owner
492
		owner
492
	);
493
	);
493
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73696/I.java",
494
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b73696/I.java",
494
		"package b73696;\n" + 
495
		"package b73696;\n" +
495
		"public interface I {}\n",
496
		"public interface I {}\n",
496
		owner
497
		owner
497
	);
498
	);
498
	IJavaSearchScope scope = SearchEngine.createJavaSearchScope(workingCopies);
499
	IJavaSearchScope scope = SearchEngine.createJavaSearchScope(workingCopies);
499
	
500
500
	// Interface declaration
501
	// Interface declaration
501
	TypeDeclarationPattern pattern = new TypeDeclarationPattern(
502
	TypeDeclarationPattern pattern = new TypeDeclarationPattern(
502
		null,
503
		null,
Lines 526-532 Link Here
526
		resultCollector,
527
		resultCollector,
527
		null);
528
		null);
528
	assertSearchResults(
529
	assertSearchResults(
529
		"src/b73696/I.java b73696.I [I] EXACT_MATCH\n" + 
530
		"src/b73696/I.java b73696.I [I] EXACT_MATCH\n" +
530
		"src/b73696/C.java b73696.C [C] EXACT_MATCH"
531
		"src/b73696/C.java b73696.C [C] EXACT_MATCH"
531
	);
532
	);
532
}
533
}
Lines 539-568 Link Here
539
	workingCopies = new ICompilationUnit[3];
540
	workingCopies = new ICompilationUnit[3];
540
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
541
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
541
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b74776/A.java",
542
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b74776/A.java",
542
		"package b74776;\n" + 
543
		"package b74776;\n" +
543
		"public class A {\n" + 
544
		"public class A {\n" +
544
		"	/**\n" + 
545
		"	/**\n" +
545
		"	 * @deprecated Use {@link #foo(IRegion)} instead\n" + 
546
		"	 * @deprecated Use {@link #foo(IRegion)} instead\n" +
546
		"	 * @param r\n" + 
547
		"	 * @param r\n" +
547
		"	 */\n" + 
548
		"	 */\n" +
548
		"	void foo(Region r) {\n" + 
549
		"	void foo(Region r) {\n" +
549
		"		foo((IRegion)r);\n" + 
550
		"		foo((IRegion)r);\n" +
550
		"	}\n" + 
551
		"	}\n" +
551
		"	void foo(IRegion r) {\n" + 
552
		"	void foo(IRegion r) {\n" +
552
		"	}\n" + 
553
		"	}\n" +
553
		"}\n",
554
		"}\n",
554
		owner
555
		owner
555
	);
556
	);
556
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b74776/IRegion.java",
557
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b74776/IRegion.java",
557
		"package b74776;\n" + 
558
		"package b74776;\n" +
558
		"public interface IRegion {\n" + 
559
		"public interface IRegion {\n" +
559
		"}\n",
560
		"}\n",
560
		owner
561
		owner
561
	);
562
	);
562
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b74776/Region.java",
563
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b74776/Region.java",
563
		"package b74776;\n" + 
564
		"package b74776;\n" +
564
		"public class Region implements IRegion {\n" + 
565
		"public class Region implements IRegion {\n" +
565
		"\n" + 
566
		"\n" +
566
		"}\n",
567
		"}\n",
567
		owner
568
		owner
568
	);
569
	);
Lines 595-617 Link Here
595
private void setUpBug77093() throws CoreException {
596
private void setUpBug77093() throws CoreException {
596
	workingCopies = new ICompilationUnit[1];
597
	workingCopies = new ICompilationUnit[1];
597
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77093/X.java",
598
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77093/X.java",
598
		"package b77093;\n" + 
599
		"package b77093;\n" +
599
		"public class X {\n" + 
600
		"public class X {\n" +
600
		"	class Z {\n" + 
601
		"	class Z {\n" +
601
		"	}\n" + 
602
		"	}\n" +
602
		"	Z[][] z_arrays;\n" + 
603
		"	Z[][] z_arrays;\n" +
603
		"	X() {\n" + 
604
		"	X() {\n" +
604
		"		this(new Z[10][]);\n" + 
605
		"		this(new Z[10][]);\n" +
605
		"	}\n" + 
606
		"	}\n" +
606
		"	X(Z[][] arrays) {\n" + 
607
		"	X(Z[][] arrays) {\n" +
607
		"		z_arrays = arrays;\n" + 
608
		"		z_arrays = arrays;\n" +
608
		"	}\n" + 
609
		"	}\n" +
609
		"	private void foo(Z[] args) {\n" + 
610
		"	private void foo(Z[] args) {\n" +
610
		"	}\n" + 
611
		"	}\n" +
611
		"	void bar() {\n" + 
612
		"	void bar() {\n" +
612
		"		for (int i=0; i<z_arrays.length; i++)\n" + 
613
		"		for (int i=0; i<z_arrays.length; i++)\n" +
613
		"			foo(z_arrays[i]);\n" + 
614
		"			foo(z_arrays[i]);\n" +
614
		"	}\n" + 
615
		"	}\n" +
615
		"}"
616
		"}"
616
	);
617
	);
617
}
618
}
Lines 634-641 Link Here
634
	search(field, ALL_OCCURRENCES);
635
	search(field, ALL_OCCURRENCES);
635
	assertSearchResults(
636
	assertSearchResults(
636
		"src/b77093/X.java b77093.X.z_arrays [z_arrays] EXACT_MATCH\n" +
637
		"src/b77093/X.java b77093.X.z_arrays [z_arrays] EXACT_MATCH\n" +
637
		"src/b77093/X.java b77093.X(Z[][]) [z_arrays] EXACT_MATCH\n" + 
638
		"src/b77093/X.java b77093.X(Z[][]) [z_arrays] EXACT_MATCH\n" +
638
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH\n" + 
639
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH\n" +
639
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH"
640
		"src/b77093/X.java void b77093.X.bar() [z_arrays] EXACT_MATCH"
640
	);
641
	);
641
}
642
}
Lines 656-668 Link Here
656
public void testBug77388() throws CoreException {
657
public void testBug77388() throws CoreException {
657
	workingCopies = new ICompilationUnit[1];
658
	workingCopies = new ICompilationUnit[1];
658
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77388/Test.java",
659
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b77388/Test.java",
659
		"package b77388;\n" + 
660
		"package b77388;\n" +
660
		"class Test {\n" + 
661
		"class Test {\n" +
661
		"	Test(int a, int b) {	}\n" + 
662
		"	Test(int a, int b) {	}\n" +
662
		"	void take(Test mc) { }\n" + 
663
		"	void take(Test mc) { }\n" +
663
		"	void run() {\n" + 
664
		"	void run() {\n" +
664
		"		take( new Test(1, 2) ); // space in \") )\" is in match\n" + 
665
		"		take( new Test(1, 2) ); // space in \") )\" is in match\n" +
665
		"	}\n" + 
666
		"	}\n" +
666
		"}");
667
		"}");
667
	IType type = workingCopies[0].getType("Test");
668
	IType type = workingCopies[0].getType("Test");
668
	IMethod method = type.getMethod("Test", new String[] {"I", "I"});
669
	IMethod method = type.getMethod("Test", new String[] {"I", "I"});
Lines 681-698 Link Here
681
	workingCopies = new ICompilationUnit[2];
682
	workingCopies = new ICompilationUnit[2];
682
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
683
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
683
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b78082/M.java",
684
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b78082/M.java",
684
		"package b78082;\n" + 
685
		"package b78082;\n" +
685
		"public class M {\n" + 
686
		"public class M {\n" +
686
		"	static int VAL=78082;\n" + 
687
		"	static int VAL=78082;\n" +
687
		"}\n",
688
		"}\n",
688
		owner
689
		owner
689
	);
690
	);
690
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b78082/XY.java",
691
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b78082/XY.java",
691
		"package b78082;\n" + 
692
		"package b78082;\n" +
692
		"import static b78082.M.VAL;\n" + 
693
		"import static b78082.M.VAL;\n" +
693
		"public class XY {\n" + 
694
		"public class XY {\n" +
694
		"	double val = VAL;\n" + 
695
		"	double val = VAL;\n" +
695
		"	double val2= b78082.M.VAL;\n" + 
696
		"	double val2= b78082.M.VAL;\n" +
696
		"}\n",
697
		"}\n",
697
		owner
698
		owner
698
	);
699
	);
Lines 701-709 Link Here
701
	IField field = type.getField("VAL");
702
	IField field = type.getField("VAL");
702
	search(field, ALL_OCCURRENCES);
703
	search(field, ALL_OCCURRENCES);
703
	assertSearchResults(
704
	assertSearchResults(
704
		"src/b78082/M.java b78082.M.VAL [VAL] EXACT_MATCH\n" + 
705
		"src/b78082/M.java b78082.M.VAL [VAL] EXACT_MATCH\n" +
705
		"src/b78082/XY.java [VAL] EXACT_MATCH\n" + 
706
		"src/b78082/XY.java [VAL] EXACT_MATCH\n" +
706
		"src/b78082/XY.java b78082.XY.val [VAL] EXACT_MATCH\n" + 
707
		"src/b78082/XY.java b78082.XY.val [VAL] EXACT_MATCH\n" +
707
		"src/b78082/XY.java b78082.XY.val2 [VAL] EXACT_MATCH"
708
		"src/b78082/XY.java b78082.XY.val2 [VAL] EXACT_MATCH"
708
	);
709
	);
709
}
710
}
Lines 715-743 Link Here
715
public void testBug79267() throws CoreException {
716
public void testBug79267() throws CoreException {
716
	workingCopies = new ICompilationUnit[1];
717
	workingCopies = new ICompilationUnit[1];
717
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79267/Test.java",
718
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79267/Test.java",
718
		"package b79267;\n" + 
719
		"package b79267;\n" +
719
		"public class Test {\n" + 
720
		"public class Test {\n" +
720
		"	private static final X<String, String> BEFORE	= new X<String, String>(4);\n" + 
721
		"	private static final X<String, String> BEFORE	= new X<String, String>(4);\n" +
721
		"\n" + 
722
		"\n" +
722
		"	static {\n" + 
723
		"	static {\n" +
723
		"		BEFORE.put(\"key1\",\"value1\");\n" + 
724
		"		BEFORE.put(\"key1\",\"value1\");\n" +
724
		"		BEFORE.put(\"key2\",\"value2\");\n" + 
725
		"		BEFORE.put(\"key2\",\"value2\");\n" +
725
		"	}\n" + 
726
		"	}\n" +
726
		"	\n" + 
727
		"	\n" +
727
		"	private static final X<Y, Object>	objectToPrimitiveMap	= new X<Y, Object>(8);\n" + 
728
		"	private static final X<Y, Object>	objectToPrimitiveMap	= new X<Y, Object>(8);\n" +
728
		"\n" + 
729
		"\n" +
729
		"	static {\n" + 
730
		"	static {\n" +
730
		"		objectToPrimitiveMap.put(new Y<Object>(new Object()), new Object());\n" + 
731
		"		objectToPrimitiveMap.put(new Y<Object>(new Object()), new Object());\n" +
731
		"	}\n" + 
732
		"	}\n" +
732
		"}\n" + 
733
		"}\n" +
733
		"\n" + 
734
		"\n" +
734
		"class X<T, U> {\n" + 
735
		"class X<T, U> {\n" +
735
		"	X(int x) {}\n" + 
736
		"	X(int x) {}\n" +
736
		"	void put(T t, U u) {}\n" + 
737
		"	void put(T t, U u) {}\n" +
737
		"}\n" + 
738
		"}\n" +
738
		"\n" + 
739
		"\n" +
739
		"class Y<T> {\n" + 
740
		"class Y<T> {\n" +
740
		"	Y(T t) {}\n" + 
741
		"	Y(T t) {}\n" +
741
		"}\n");
742
		"}\n");
742
	// search field references
743
	// search field references
743
	IType type = workingCopies[0].getType("Test");
744
	IType type = workingCopies[0].getType("Test");
Lines 746-753 Link Here
746
	field = type.getField("objectToPrimitiveMap");
747
	field = type.getField("objectToPrimitiveMap");
747
	search(field, REFERENCES);
748
	search(field, REFERENCES);
748
	assertSearchResults(
749
	assertSearchResults(
749
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" + 
750
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" +
750
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" + 
751
		"src/b79267/Test.java b79267.Test.static {} [BEFORE] EXACT_MATCH\n" +
751
		"src/b79267/Test.java b79267.Test.static {} [objectToPrimitiveMap] EXACT_MATCH"
752
		"src/b79267/Test.java b79267.Test.static {} [objectToPrimitiveMap] EXACT_MATCH"
752
	);
753
	);
753
}
754
}
Lines 759-773 Link Here
759
public void testBug79378() throws CoreException {
760
public void testBug79378() throws CoreException {
760
	workingCopies = new ICompilationUnit[1];
761
	workingCopies = new ICompilationUnit[1];
761
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
762
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
762
		"package b79378;\n" + 
763
		"package b79378;\n" +
763
		"public class Test {\n" + 
764
		"public class Test {\n" +
764
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" + 
765
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" +
765
		"	void foo79378(RuntimeException[] exceptions) {}\n" + 
766
		"	void foo79378(RuntimeException[] exceptions) {}\n" +
766
		"	void call() {\n" + 
767
		"	void call() {\n" +
767
		"		String s= null; \n" + 
768
		"		String s= null; \n" +
768
		"		Exception[] exceptions= null;\n" + 
769
		"		Exception[] exceptions= null;\n" +
769
		"		foo79378(s, exceptions);\n" + 
770
		"		foo79378(s, exceptions);\n" +
770
		"	}\n" + 
771
		"	}\n" +
771
		"}\n"
772
		"}\n"
772
	);
773
	);
773
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
774
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
Lines 781-795 Link Here
781
	resultCollector.showRule = true;
782
	resultCollector.showRule = true;
782
	workingCopies = new ICompilationUnit[1];
783
	workingCopies = new ICompilationUnit[1];
783
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
784
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79378/A.java",
784
		"package b79378;\n" + 
785
		"package b79378;\n" +
785
		"public class Test {\n" + 
786
		"public class Test {\n" +
786
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" + 
787
		"	void foo79378(String s, RuntimeException[] exceptions) {}\n" +
787
		"	void foo79378(RuntimeException[] exceptions) {}\n" + 
788
		"	void foo79378(RuntimeException[] exceptions) {}\n" +
788
		"	void call() {\n" + 
789
		"	void call() {\n" +
789
		"		String s= null; \n" + 
790
		"		String s= null; \n" +
790
		"		Exception[] exceptions= null;\n" + 
791
		"		Exception[] exceptions= null;\n" +
791
		"		foo79378(s, exceptions);\n" + 
792
		"		foo79378(s, exceptions);\n" +
792
		"	}\n" + 
793
		"	}\n" +
793
		"}\n"
794
		"}\n"
794
	);
795
	);
795
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
796
	IMethod[] methods = workingCopies[0].getType("Test").getMethods();
Lines 805-836 Link Here
805
public void testBug79803() throws CoreException {
806
public void testBug79803() throws CoreException {
806
	workingCopies = new ICompilationUnit[1];
807
	workingCopies = new ICompilationUnit[1];
807
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
808
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
808
		"package b79803;\n" + 
809
		"package b79803;\n" +
809
		"class A<A> {\n" + 
810
		"class A<A> {\n" +
810
		"    A a;\n" + 
811
		"    A a;\n" +
811
		"    b79803.A pa= new b79803.A();\n" + 
812
		"    b79803.A pa= new b79803.A();\n" +
812
		"}\n"	
813
		"}\n"
813
	);
814
	);
814
	IType type = workingCopies[0].getType("A");
815
	IType type = workingCopies[0].getType("A");
815
	search(type, REFERENCES, ERASURE_RULE);
816
	search(type, REFERENCES, ERASURE_RULE);
816
	assertSearchResults(
817
	assertSearchResults(
817
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH\n" + 
818
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH\n" +
818
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH"
819
		"src/b79803/A.java b79803.A.pa [b79803.A] EXACT_MATCH"
819
	);
820
	);
820
}
821
}
821
public void testBug79803string() throws CoreException {
822
public void testBug79803string() throws CoreException {
822
	workingCopies = new ICompilationUnit[1];
823
	workingCopies = new ICompilationUnit[1];
823
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
824
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79803/A.java",
824
		"package b79803;\n" + 
825
		"package b79803;\n" +
825
		"class A<A> {\n" + 
826
		"class A<A> {\n" +
826
		"    A a;\n" + 
827
		"    A a;\n" +
827
		"    b79803.A pa= new b79803.A();\n" + 
828
		"    b79803.A pa= new b79803.A();\n" +
828
		"}\n"	
829
		"}\n"
829
	);
830
	);
830
	search("A", TYPE, REFERENCES);
831
	search("A", TYPE, REFERENCES);
831
	assertSearchResults(
832
	assertSearchResults(
832
		"src/b79803/A.java b79803.A.a [A] EXACT_MATCH\n" + 
833
		"src/b79803/A.java b79803.A.a [A] EXACT_MATCH\n" +
833
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH\n" + 
834
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH\n" +
834
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH"
835
		"src/b79803/A.java b79803.A.pa [A] EXACT_MATCH"
835
	);
836
	);
836
}
837
}
Lines 843-859 Link Here
843
	workingCopies = new ICompilationUnit[2];
844
	workingCopies = new ICompilationUnit[2];
844
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
845
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
845
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
846
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
846
		"package b79860;\n" + 
847
		"package b79860;\n" +
847
		"public class X<T extends A> { }\n" + 
848
		"public class X<T extends A> { }\n" +
848
		"class A { }",
849
		"class A { }",
849
		owner
850
		owner
850
	);
851
	);
851
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
852
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
852
		"package b79860;\n" + 
853
		"package b79860;\n" +
853
		"public class Y<T extends B&I1&I2&I3> { }\n" + 
854
		"public class Y<T extends B&I1&I2&I3> { }\n" +
854
		"class B { }\n" + 
855
		"class B { }\n" +
855
		"interface I1 {}\n" + 
856
		"interface I1 {}\n" +
856
		"interface I2 {}\n" + 
857
		"interface I2 {}\n" +
857
		"interface I3 {}\n",
858
		"interface I3 {}\n",
858
		owner
859
		owner
859
	);
860
	);
Lines 867-890 Link Here
867
	workingCopies = new ICompilationUnit[2];
868
	workingCopies = new ICompilationUnit[2];
868
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
869
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
869
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
870
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79860/X.java",
870
		"package b79860;\n" + 
871
		"package b79860;\n" +
871
		"public class X<T extends A> { }\n" + 
872
		"public class X<T extends A> { }\n" +
872
		"class A { }",
873
		"class A { }",
873
		owner
874
		owner
874
	);
875
	);
875
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
876
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b79860/Y.java",
876
		"package b79860;\n" + 
877
		"package b79860;\n" +
877
		"public class Y<T extends B&I1&I2&I3> { }\n" + 
878
		"public class Y<T extends B&I1&I2&I3> { }\n" +
878
		"class B { }\n" + 
879
		"class B { }\n" +
879
		"interface I1 {}\n" + 
880
		"interface I1 {}\n" +
880
		"interface I2 {}\n" + 
881
		"interface I2 {}\n" +
881
		"interface I3 {}\n",
882
		"interface I3 {}\n",
882
		owner
883
		owner
883
	);
884
	);
884
	search("I?", TYPE, REFERENCES);
885
	search("I?", TYPE, REFERENCES);
885
	assertSearchResults(
886
	assertSearchResults(
886
		"src/b79860/Y.java b79860.Y [I1] EXACT_MATCH\n" + 
887
		"src/b79860/Y.java b79860.Y [I1] EXACT_MATCH\n" +
887
		"src/b79860/Y.java b79860.Y [I2] EXACT_MATCH\n" + 
888
		"src/b79860/Y.java b79860.Y [I2] EXACT_MATCH\n" +
888
		"src/b79860/Y.java b79860.Y [I3] EXACT_MATCH"
889
		"src/b79860/Y.java b79860.Y [I3] EXACT_MATCH"
889
	);
890
	);
890
}
891
}
Lines 896-909 Link Here
896
private void setUpBug79990() throws CoreException {
897
private void setUpBug79990() throws CoreException {
897
	workingCopies = new ICompilationUnit[1];
898
	workingCopies = new ICompilationUnit[1];
898
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
899
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
899
		"package b79990;\n" + 
900
		"package b79990;\n" +
900
		"class Test<T> {\n" + 
901
		"class Test<T> {\n" +
901
		"    public void first(Exception num) {}\n" + 
902
		"    public void first(Exception num) {}\n" +
902
		"    public void second(T t) {}\n" + 
903
		"    public void second(T t) {}\n" +
903
		"}\n" + 
904
		"}\n" +
904
		"class Sub extends Test<Exception> {\n" + 
905
		"class Sub extends Test<Exception> {\n" +
905
		"    public void first(Exception num) {}\n" + 
906
		"    public void first(Exception num) {}\n" +
906
		"    public void second(Exception t) {}\n" + 
907
		"    public void second(Exception t) {}\n" +
907
		"}\n"
908
		"}\n"
908
	);}
909
	);}
909
public void testBug79990() throws CoreException {
910
public void testBug79990() throws CoreException {
Lines 911-917 Link Here
911
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
912
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
912
	search(method, DECLARATIONS);
913
	search(method, DECLARATIONS);
913
	assertSearchResults(
914
	assertSearchResults(
914
		"src/b79990/Test.java void b79990.Test.first(Exception) [first] EXACT_MATCH\n" + 
915
		"src/b79990/Test.java void b79990.Test.first(Exception) [first] EXACT_MATCH\n" +
915
		"src/b79990/Test.java void b79990.Sub.first(Exception) [first] EXACT_MATCH"
916
		"src/b79990/Test.java void b79990.Sub.first(Exception) [first] EXACT_MATCH"
916
	);
917
	);
917
}
918
}
Lines 920-926 Link Here
920
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
921
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
921
	search(method, DECLARATIONS);
922
	search(method, DECLARATIONS);
922
	assertSearchResults(
923
	assertSearchResults(
923
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" + 
924
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" +
924
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
925
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
925
	);
926
	);
926
}
927
}
Lines 929-953 Link Here
929
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
930
	IMethod method = workingCopies[0].getType("Test").getMethods()[1];
930
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
931
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
931
	assertSearchResults(
932
	assertSearchResults(
932
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" + 
933
		"src/b79990/Test.java void b79990.Test.second(T) [second] EXACT_MATCH\n" +
933
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
934
		"src/b79990/Test.java void b79990.Sub.second(Exception) [second] EXACT_MATCH"
934
	);
935
	);
935
}
936
}
936
public void testBug79990d() throws CoreException {
937
public void testBug79990d() throws CoreException {
937
	workingCopies = new ICompilationUnit[1];
938
	workingCopies = new ICompilationUnit[1];
938
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
939
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b79990/Test.java",
939
		"package b79990;\n" + 
940
		"package b79990;\n" +
940
		"public class Test<T> {\n" + 
941
		"public class Test<T> {\n" +
941
		"	void methodT(T t) {}\n" + 
942
		"	void methodT(T t) {}\n" +
942
		"}\n" + 
943
		"}\n" +
943
		"class Sub<X> extends Test<X> {\n" + 
944
		"class Sub<X> extends Test<X> {\n" +
944
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" + 
945
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" +
945
		"}\n"
946
		"}\n"
946
	);
947
	);
947
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
948
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
948
	search(method, DECLARATIONS);
949
	search(method, DECLARATIONS);
949
	assertSearchResults(
950
	assertSearchResults(
950
		"src/b79990/Test.java void b79990.Test.methodT(T) [methodT] EXACT_MATCH\n" + 
951
		"src/b79990/Test.java void b79990.Test.methodT(T) [methodT] EXACT_MATCH\n" +
951
		"src/b79990/Test.java void b79990.Sub.methodT(X) [methodT] EXACT_MATCH"
952
		"src/b79990/Test.java void b79990.Sub.methodT(X) [methodT] EXACT_MATCH"
952
	);
953
	);
953
}
954
}
Lines 959-972 Link Here
959
public void testBug80084() throws CoreException, JavaModelException {
960
public void testBug80084() throws CoreException, JavaModelException {
960
	workingCopies = new ICompilationUnit[1];
961
	workingCopies = new ICompilationUnit[1];
961
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80084/Test.java",
962
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80084/Test.java",
962
		"package b80084;\n" + 
963
		"package b80084;\n" +
963
		"class List<T> {}\n" + 
964
		"class List<T> {}\n" +
964
		"public class Test {\n" + 
965
		"public class Test {\n" +
965
		"  void foo(List<Exception> le) {}\n" + 
966
		"  void foo(List<Exception> le) {}\n" +
966
		"  void bar() {\n" + 
967
		"  void bar() {\n" +
967
		"    List<Exception> le = new List<Exception>();\n" + 
968
		"    List<Exception> le = new List<Exception>();\n" +
968
		"    foo(le);\n" + 
969
		"    foo(le);\n" +
969
		"  }\n" + 
970
		"  }\n" +
970
		"}\n"
971
		"}\n"
971
		);
972
		);
972
	IType type = workingCopies[0].getType("Test");
973
	IType type = workingCopies[0].getType("Test");
Lines 984-1002 Link Here
984
private void setUpBug80194() throws CoreException, JavaModelException {
985
private void setUpBug80194() throws CoreException, JavaModelException {
985
	workingCopies = new ICompilationUnit[1];
986
	workingCopies = new ICompilationUnit[1];
986
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80194/Test.java",
987
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80194/Test.java",
987
		"package b80194;\n" + 
988
		"package b80194;\n" +
988
		"interface Map<K, V> {}\n" + 
989
		"interface Map<K, V> {}\n" +
989
		"class HashMap<K, V> implements Map {}\n" + 
990
		"class HashMap<K, V> implements Map {}\n" +
990
		"public class Test {\n" + 
991
		"public class Test {\n" +
991
		"	void callDoSomething() {\n" + 
992
		"	void callDoSomething() {\n" +
992
		"		final Map<String, Object> map = new HashMap<String, Object>();\n" + 
993
		"		final Map<String, Object> map = new HashMap<String, Object>();\n" +
993
		"		doSomething(map);\n" + 
994
		"		doSomething(map);\n" +
994
		"		doSomething(map, true);\n" + 
995
		"		doSomething(map, true);\n" +
995
		"		doSomething(true);\n" + 
996
		"		doSomething(true);\n" +
996
		"	}\n" + 
997
		"	}\n" +
997
		"	void doSomething(final Map<String, Object> map) {}\n" + 
998
		"	void doSomething(final Map<String, Object> map) {}\n" +
998
		"	void doSomething(final Map<String, Object> map, final boolean flag) {}\n" + 
999
		"	void doSomething(final Map<String, Object> map, final boolean flag) {}\n" +
999
		"	void doSomething(final boolean flag) {}\n" + 
1000
		"	void doSomething(final boolean flag) {}\n" +
1000
		"}\n"
1001
		"}\n"
1001
	);
1002
	);
1002
}
1003
}
Lines 1022-1029 Link Here
1022
	setUpBug80194();
1023
	setUpBug80194();
1023
	search("doSomething(boolean)", METHOD, ALL_OCCURRENCES);
1024
	search("doSomething(boolean)", METHOD, ALL_OCCURRENCES);
1024
	assertSearchResults(
1025
	assertSearchResults(
1025
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" + 
1026
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" +
1026
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" + 
1027
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" +
1027
		"src/b80194/Test.java void b80194.Test.doSomething(boolean) [doSomething] EXACT_MATCH"
1028
		"src/b80194/Test.java void b80194.Test.doSomething(boolean) [doSomething] EXACT_MATCH"
1028
	);
1029
	);
1029
}
1030
}
Lines 1031-1038 Link Here
1031
	setUpBug80194();
1032
	setUpBug80194();
1032
	search("doSomething(Map<String,Object>)", METHOD, ALL_OCCURRENCES);
1033
	search("doSomething(Map<String,Object>)", METHOD, ALL_OCCURRENCES);
1033
	assertSearchResults(
1034
	assertSearchResults(
1034
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" + 
1035
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map)] EXACT_MATCH\n" +
1035
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" + 
1036
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(true)] EXACT_MATCH\n" +
1036
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>) [doSomething] EXACT_MATCH"
1037
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>) [doSomething] EXACT_MATCH"
1037
	);
1038
	);
1038
}
1039
}
Lines 1040-1046 Link Here
1040
	setUpBug80194();
1041
	setUpBug80194();
1041
	search("doSomething(Map<String,Object>,boolean)", METHOD, ALL_OCCURRENCES);
1042
	search("doSomething(Map<String,Object>,boolean)", METHOD, ALL_OCCURRENCES);
1042
	assertSearchResults(
1043
	assertSearchResults(
1043
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map, true)] EXACT_MATCH\n" + 
1044
		"src/b80194/Test.java void b80194.Test.callDoSomething() [doSomething(map, true)] EXACT_MATCH\n" +
1044
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>, boolean) [doSomething] EXACT_MATCH"
1045
		"src/b80194/Test.java void b80194.Test.doSomething(Map<String,Object>, boolean) [doSomething] EXACT_MATCH"
1045
	);
1046
	);
1046
}
1047
}
Lines 1053-1068 Link Here
1053
	workingCopies = new ICompilationUnit[2];
1054
	workingCopies = new ICompilationUnit[2];
1054
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
1055
	WorkingCopyOwner owner = new WorkingCopyOwner() {};
1055
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80223/a/A.java",
1056
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80223/a/A.java",
1056
		"package b80223.a;\n" + 
1057
		"package b80223.a;\n" +
1057
		"public class A {\n" + 
1058
		"public class A {\n" +
1058
		"    void m() {}\n" + 
1059
		"    void m() {}\n" +
1059
		"}",
1060
		"}",
1060
		owner
1061
		owner
1061
	);
1062
	);
1062
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b80223/b/B.java",
1063
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b80223/b/B.java",
1063
		"package b80223.b;\n" + 
1064
		"package b80223.b;\n" +
1064
		"public class B extends b80223.a.A {\n" + 
1065
		"public class B extends b80223.a.A {\n" +
1065
		"    void m() {}\n" + 
1066
		"    void m() {}\n" +
1066
		"}",
1067
		"}",
1067
		owner
1068
		owner
1068
	);
1069
	);
Lines 1078-1084 Link Here
1078
/**
1079
/**
1079
 * Bug 80264: [search] Search for method declarations in workspace, disregarding declaring type
1080
 * Bug 80264: [search] Search for method declarations in workspace, disregarding declaring type
1080
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=80264"
1081
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=80264"
1081
 * 
1082
 *
1082
 * Following tests also verify
1083
 * Following tests also verify
1083
 * Bug 87778: [search] doesn't find all declarations of method with covariant return type
1084
 * Bug 87778: [search] doesn't find all declarations of method with covariant return type
1084
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=87778"
1085
 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=87778"
Lines 1087-1104 Link Here
1087
private void setUpBug80264_Methods() throws CoreException {
1088
private void setUpBug80264_Methods() throws CoreException {
1088
	workingCopies = new ICompilationUnit[1];
1089
	workingCopies = new ICompilationUnit[1];
1089
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Methods.java",
1090
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Methods.java",
1090
		"package b80264;\n" + 
1091
		"package b80264;\n" +
1091
		"class Methods {\n" + 
1092
		"class Methods {\n" +
1092
		"    Methods stable() { return null; }\n" + 
1093
		"    Methods stable() { return null; }\n" +
1093
		"    Methods covariant() { return null; }\n" + 
1094
		"    Methods covariant() { return null; }\n" +
1094
		"}\n" + 
1095
		"}\n" +
1095
		"class MethodsSub extends Methods {\n" + 
1096
		"class MethodsSub extends Methods {\n" +
1096
		"    Methods stable() { return null; }\n" + 
1097
		"    Methods stable() { return null; }\n" +
1097
		"    MethodsSub covariant() { return null; }\n" + 
1098
		"    MethodsSub covariant() { return null; }\n" +
1098
		"}\n" + 
1099
		"}\n" +
1099
		"class MethodsOther {\n" + 
1100
		"class MethodsOther {\n" +
1100
		"    Methods stable() { return null; }\n" + 
1101
		"    Methods stable() { return null; }\n" +
1101
		"    Methods covariant() { return null; }\n" + 
1102
		"    Methods covariant() { return null; }\n" +
1102
		"}\n"
1103
		"}\n"
1103
	);
1104
	);
1104
}
1105
}
Lines 1109-1117 Link Here
1109
	search(methods[0], DECLARATIONS);
1110
	search(methods[0], DECLARATIONS);
1110
	search(methods[1], DECLARATIONS);
1111
	search(methods[1], DECLARATIONS);
1111
	assertSearchResults(
1112
	assertSearchResults(
1112
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1113
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1113
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1114
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1114
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1115
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1115
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1116
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1116
	);
1117
	);
1117
}
1118
}
Lines 1122-1131 Link Here
1122
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1123
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1123
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1124
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1124
	assertSearchResults(
1125
	assertSearchResults(
1125
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1126
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1126
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1127
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1127
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" + 
1128
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" +
1128
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1129
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1129
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1130
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1130
	);
1131
	);
1131
}
1132
}
Lines 1136-1144 Link Here
1136
	search(methods[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1137
	search(methods[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1137
	search(methods[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1138
	search(methods[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1138
	assertSearchResults(
1139
	assertSearchResults(
1139
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1140
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1140
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1141
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1141
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1142
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1142
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1143
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH"
1143
	);
1144
	);
1144
}
1145
}
Lines 1149-1159 Link Here
1149
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1150
	search(methods[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1150
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1151
	search(methods[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1151
	assertSearchResults(
1152
	assertSearchResults(
1152
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" + 
1153
		"src/b80264/Methods.java Methods b80264.Methods.stable() [stable] EXACT_MATCH\n" +
1153
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" + 
1154
		"src/b80264/Methods.java Methods b80264.MethodsSub.stable() [stable] EXACT_MATCH\n" +
1154
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" + 
1155
		"src/b80264/Methods.java Methods b80264.MethodsOther.stable() [stable] EXACT_MATCH\n" +
1155
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" + 
1156
		"src/b80264/Methods.java Methods b80264.Methods.covariant() [covariant] EXACT_MATCH\n" +
1156
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH\n" + 
1157
		"src/b80264/Methods.java MethodsSub b80264.MethodsSub.covariant() [covariant] EXACT_MATCH\n" +
1157
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1158
		"src/b80264/Methods.java Methods b80264.MethodsOther.covariant() [covariant] EXACT_MATCH"
1158
	);
1159
	);
1159
}
1160
}
Lines 1161-1175 Link Here
1161
private void setUpBug80264_Classes() throws CoreException {
1162
private void setUpBug80264_Classes() throws CoreException {
1162
	workingCopies = new ICompilationUnit[1];
1163
	workingCopies = new ICompilationUnit[1];
1163
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Classes.java",
1164
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Classes.java",
1164
		"package b80264;\n" + 
1165
		"package b80264;\n" +
1165
		"class Classes {\n" + 
1166
		"class Classes {\n" +
1166
		"    class Inner {}\n" + 
1167
		"    class Inner {}\n" +
1167
		"}\n" + 
1168
		"}\n" +
1168
		"class ClassesSub extends Classes {\n" + 
1169
		"class ClassesSub extends Classes {\n" +
1169
		"    class Inner {}\n" + 
1170
		"    class Inner {}\n" +
1170
		"}\n" + 
1171
		"}\n" +
1171
		"class ClassesOther {\n" + 
1172
		"class ClassesOther {\n" +
1172
		"    class Inner {}\n" + 
1173
		"    class Inner {}\n" +
1173
		"}\n"
1174
		"}\n"
1174
	);
1175
	);
1175
}
1176
}
Lines 1186-1193 Link Here
1186
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1187
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1187
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE);
1188
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE);
1188
	assertSearchResults(
1189
	assertSearchResults(
1189
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" + 
1190
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" +
1190
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" + 
1191
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" +
1191
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1192
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1192
	);
1193
	);
1193
}
1194
}
Lines 1204-1211 Link Here
1204
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1205
	IType type = workingCopies[0].getType("Classes").getType("Inner");
1205
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1206
	search(type, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1206
	assertSearchResults(
1207
	assertSearchResults(
1207
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" + 
1208
		"src/b80264/Classes.java b80264.Classes$Inner [Inner] EXACT_MATCH\n" +
1208
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" + 
1209
		"src/b80264/Classes.java b80264.ClassesSub$Inner [Inner] EXACT_MATCH\n" +
1209
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1210
		"src/b80264/Classes.java b80264.ClassesOther$Inner [Inner] EXACT_MATCH"
1210
	);
1211
	);
1211
}
1212
}
Lines 1213-1230 Link Here
1213
private void setUpBug80264_Fields() throws CoreException {
1214
private void setUpBug80264_Fields() throws CoreException {
1214
	workingCopies = new ICompilationUnit[1];
1215
	workingCopies = new ICompilationUnit[1];
1215
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Fields.java",
1216
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80264/Fields.java",
1216
		"package b80264;\n" + 
1217
		"package b80264;\n" +
1217
		"class Fields {\n" + 
1218
		"class Fields {\n" +
1218
		"    Fields field1;\n" + 
1219
		"    Fields field1;\n" +
1219
		"    Fields field2;\n" + 
1220
		"    Fields field2;\n" +
1220
		"}\n" + 
1221
		"}\n" +
1221
		"class FieldsSub extends Fields {\n" + 
1222
		"class FieldsSub extends Fields {\n" +
1222
		"    Fields field1;\n" + 
1223
		"    Fields field1;\n" +
1223
		"    FieldsSub field2;\n" + 
1224
		"    FieldsSub field2;\n" +
1224
		"}\n" + 
1225
		"}\n" +
1225
		"class FieldsOther {\n" + 
1226
		"class FieldsOther {\n" +
1226
		"    Fields field1;\n" + 
1227
		"    Fields field1;\n" +
1227
		"    Fields field2;\n" + 
1228
		"    Fields field2;\n" +
1228
		"}\n"
1229
		"}\n"
1229
	);
1230
	);
1230
}
1231
}
Lines 1235-1241 Link Here
1235
	search(fields[0], DECLARATIONS);
1236
	search(fields[0], DECLARATIONS);
1236
	search(fields[1], DECLARATIONS);
1237
	search(fields[1], DECLARATIONS);
1237
	assertSearchResults(
1238
	assertSearchResults(
1238
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1239
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1239
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1240
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1240
	);
1241
	);
1241
}
1242
}
Lines 1246-1255 Link Here
1246
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1247
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE);
1247
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1248
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE);
1248
	assertSearchResults(
1249
	assertSearchResults(
1249
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1250
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1250
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" + 
1251
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" +
1251
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" + 
1252
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" +
1252
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" + 
1253
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" +
1253
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1254
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1254
	);
1255
	);
1255
}
1256
}
Lines 1260-1266 Link Here
1260
	search(fields[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1261
	search(fields[0], DECLARATIONS|IGNORE_RETURN_TYPE);
1261
	search(fields[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1262
	search(fields[1], DECLARATIONS|IGNORE_RETURN_TYPE);
1262
	assertSearchResults(
1263
	assertSearchResults(
1263
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1264
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1264
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1265
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH"
1265
	);
1266
	);
1266
}
1267
}
Lines 1271-1281 Link Here
1271
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1272
	search(fields[0], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1272
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1273
	search(fields[1], DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
1273
	assertSearchResults(
1274
	assertSearchResults(
1274
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" + 
1275
		"src/b80264/Fields.java b80264.Fields.field1 [field1] EXACT_MATCH\n" +
1275
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" + 
1276
		"src/b80264/Fields.java b80264.FieldsSub.field1 [field1] EXACT_MATCH\n" +
1276
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" + 
1277
		"src/b80264/Fields.java b80264.FieldsOther.field1 [field1] EXACT_MATCH\n" +
1277
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" + 
1278
		"src/b80264/Fields.java b80264.Fields.field2 [field2] EXACT_MATCH\n" +
1278
		"src/b80264/Fields.java b80264.FieldsSub.field2 [field2] EXACT_MATCH\n" + 
1279
		"src/b80264/Fields.java b80264.FieldsSub.field2 [field2] EXACT_MATCH\n" +
1279
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1280
		"src/b80264/Fields.java b80264.FieldsOther.field2 [field2] EXACT_MATCH"
1280
	);
1281
	);
1281
}
1282
}
Lines 1287-1306 Link Here
1287
public void testBug80890() throws CoreException, JavaModelException {
1288
public void testBug80890() throws CoreException, JavaModelException {
1288
	workingCopies = new ICompilationUnit[1];
1289
	workingCopies = new ICompilationUnit[1];
1289
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80890/A.java",
1290
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b80890/A.java",
1290
		"package b80890;\n" + 
1291
		"package b80890;\n" +
1291
		"public class A {\n" + 
1292
		"public class A {\n" +
1292
		"	protected void foo(Exception e) {}\n" + 
1293
		"	protected void foo(Exception e) {}\n" +
1293
		"	protected void foo(String s) {}\n" + 
1294
		"	protected void foo(String s) {}\n" +
1294
		"}\n" + 
1295
		"}\n" +
1295
		"class B1 extends A {\n" + 
1296
		"class B1 extends A {\n" +
1296
		"	public void bar1() {\n" + 
1297
		"	public void bar1() {\n" +
1297
		"		foo(null);\n" + 
1298
		"		foo(null);\n" +
1298
		"	}\n" + 
1299
		"	}\n" +
1299
		"}\n" + 
1300
		"}\n" +
1300
		"class B2 extends A {\n" + 
1301
		"class B2 extends A {\n" +
1301
		"	public void bar2() {\n" + 
1302
		"	public void bar2() {\n" +
1302
		"		foo(null);\n" + 
1303
		"		foo(null);\n" +
1303
		"	}\n" + 
1304
		"	}\n" +
1304
		"}\n"
1305
		"}\n"
1305
		);
1306
		);
1306
	// search for first and second method should both return 2 inaccurate matches
1307
	// search for first and second method should both return 2 inaccurate matches
Lines 1310-1318 Link Here
1310
	method = type.getMethods()[1];
1311
	method = type.getMethods()[1];
1311
	search(method, REFERENCES);
1312
	search(method, REFERENCES);
1312
	assertSearchResults(
1313
	assertSearchResults(
1313
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" + 
1314
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" +
1314
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH\n" + 
1315
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH\n" +
1315
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" + 
1316
		"src/b80890/A.java void b80890.B1.bar1() [foo(null)] POTENTIAL_MATCH\n" +
1316
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH"
1317
		"src/b80890/A.java void b80890.B2.bar2() [foo(null)] POTENTIAL_MATCH"
1317
	);
1318
	);
1318
}
1319
}
Lines 1337-1354 Link Here
1337
public void testBug81084a() throws CoreException, JavaModelException {
1338
public void testBug81084a() throws CoreException, JavaModelException {
1338
	workingCopies = new ICompilationUnit[1];
1339
	workingCopies = new ICompilationUnit[1];
1339
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1340
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1340
		"package b81084a;\n" + 
1341
		"package b81084a;\n" +
1341
		"class List<E> {}\n" + 
1342
		"class List<E> {}\n" +
1342
		"public class Test {\n" + 
1343
		"public class Test {\n" +
1343
		"	class Element{}\n" + 
1344
		"	class Element{}\n" +
1344
		"	static class Inner {\n" + 
1345
		"	static class Inner {\n" +
1345
		"		private final List<Element> fList1;\n" + 
1346
		"		private final List<Element> fList1;\n" +
1346
		"		private final List<Test.Element> fList2;\n" + 
1347
		"		private final List<Test.Element> fList2;\n" +
1347
		"		public Inner(List<Element> list) {\n" + 
1348
		"		public Inner(List<Element> list) {\n" +
1348
		"			fList1 = list;\n" + 
1349
		"			fList1 = list;\n" +
1349
		"			fList2 = list;\n" + 
1350
		"			fList2 = list;\n" +
1350
		"		}\n" + 
1351
		"		}\n" +
1351
		"	}\n" + 
1352
		"	}\n" +
1352
		"}\n"
1353
		"}\n"
1353
	);
1354
	);
1354
	IType type = workingCopies[0].getType("Test").getType("Inner");
1355
	IType type = workingCopies[0].getType("Test").getType("Inner");
Lines 1357-1405 Link Here
1357
	IField field2 = type.getField("fList2");
1358
	IField field2 = type.getField("fList2");
1358
	search(field2, REFERENCES);
1359
	search(field2, REFERENCES);
1359
	assertSearchResults(
1360
	assertSearchResults(
1360
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" + 
1361
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" +
1361
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1362
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1362
	);
1363
	);
1363
}
1364
}
1364
public void testBug81084string() throws CoreException, JavaModelException {
1365
public void testBug81084string() throws CoreException, JavaModelException {
1365
	workingCopies = new ICompilationUnit[1];
1366
	workingCopies = new ICompilationUnit[1];
1366
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1367
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084a/Test.java",
1367
		"package b81084a;\n" + 
1368
		"package b81084a;\n" +
1368
		"class List<E> {}\n" + 
1369
		"class List<E> {}\n" +
1369
		"public class Test {\n" + 
1370
		"public class Test {\n" +
1370
		"	class Element{}\n" + 
1371
		"	class Element{}\n" +
1371
		"	static class Inner {\n" + 
1372
		"	static class Inner {\n" +
1372
		"		private final List<Element> fList1;\n" + 
1373
		"		private final List<Element> fList1;\n" +
1373
		"		private final List<Test.Element> fList2;\n" + 
1374
		"		private final List<Test.Element> fList2;\n" +
1374
		"		public Inner(List<Element> list) {\n" + 
1375
		"		public Inner(List<Element> list) {\n" +
1375
		"			fList1 = list;\n" + 
1376
		"			fList1 = list;\n" +
1376
		"			fList2 = list;\n" + 
1377
		"			fList2 = list;\n" +
1377
		"		}\n" + 
1378
		"		}\n" +
1378
		"	}\n" + 
1379
		"	}\n" +
1379
		"}\n"
1380
		"}\n"
1380
	);
1381
	);
1381
	search("fList1", FIELD, REFERENCES);
1382
	search("fList1", FIELD, REFERENCES);
1382
	search("fList2", FIELD, REFERENCES);
1383
	search("fList2", FIELD, REFERENCES);
1383
	assertSearchResults(
1384
	assertSearchResults(
1384
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" + 
1385
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList1] EXACT_MATCH\n" +
1385
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1386
		"src/b81084a/Test.java b81084a.Test$Inner(List<Element>) [fList2] EXACT_MATCH"
1386
	);
1387
	);
1387
}
1388
}
1388
public void testBug81084b() throws CoreException, JavaModelException {
1389
public void testBug81084b() throws CoreException, JavaModelException {
1389
	workingCopies = new ICompilationUnit[1];
1390
	workingCopies = new ICompilationUnit[1];
1390
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084b/Test.java",
1391
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b81084b/Test.java",
1391
		"package b81084b;\n" + 
1392
		"package b81084b;\n" +
1392
		"class List<E> {}\n" + 
1393
		"class List<E> {}\n" +
1393
		"public class Test {\n" + 
1394
		"public class Test {\n" +
1394
		"	class Element{}\n" + 
1395
		"	class Element{}\n" +
1395
		"	static class Inner {\n" + 
1396
		"	static class Inner {\n" +
1396
		"		private final List<? extends Element> fListb1;\n" + 
1397
		"		private final List<? extends Element> fListb1;\n" +
1397
		"		private final List<? extends Test.Element> fListb2;\n" + 
1398
		"		private final List<? extends Test.Element> fListb2;\n" +
1398
		"		public Inner(List<Element> list) {\n" + 
1399
		"		public Inner(List<Element> list) {\n" +
1399
		"			fListb1 = list;\n" + 
1400
		"			fListb1 = list;\n" +
1400
		"			fListb2 = list;\n" + 
1401
		"			fListb2 = list;\n" +
1401
		"		}\n" + 
1402
		"		}\n" +
1402
		"	}\n" + 
1403
		"	}\n" +
1403
		"}\n"
1404
		"}\n"
1404
		);
1405
		);
1405
	// search element patterns
1406
	// search element patterns
Lines 1409-1415 Link Here
1409
	IField field2 = type.getField("fListb2");
1410
	IField field2 = type.getField("fListb2");
1410
	search(field2, REFERENCES);
1411
	search(field2, REFERENCES);
1411
	assertSearchResults(
1412
	assertSearchResults(
1412
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb1] EXACT_MATCH\n" + 
1413
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb1] EXACT_MATCH\n" +
1413
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb2] EXACT_MATCH"
1414
		"src/b81084b/Test.java b81084b.Test$Inner(List<Element>) [fListb2] EXACT_MATCH"
1414
	);
1415
	);
1415
}
1416
}
Lines 1436-1457 Link Here
1436
	workingCopies = new ICompilationUnit[1];
1437
	workingCopies = new ICompilationUnit[1];
1437
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/m/Test.java",
1438
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/m/Test.java",
1438
		"package b82088.m;\n" +
1439
		"package b82088.m;\n" +
1439
		"/**\n" + 
1440
		"/**\n" +
1440
		" * @see #setA(A)\n" + 
1441
		" * @see #setA(A)\n" +
1441
		" */\n" + 
1442
		" */\n" +
1442
		"public class Test {\n" + 
1443
		"public class Test {\n" +
1443
		"	A a;\n" + 
1444
		"	A a;\n" +
1444
		"	public void setA(A a) {\n" + 
1445
		"	public void setA(A a) {\n" +
1445
		"		this.a = a;\n" + 
1446
		"		this.a = a;\n" +
1446
		"	}\n" + 
1447
		"	}\n" +
1447
		"}\n" + 
1448
		"}\n" +
1448
		"class A {}\n"
1449
		"class A {}\n"
1449
		);
1450
		);
1450
	IType type = workingCopies[0].getType("A");
1451
	IType type = workingCopies[0].getType("A");
1451
	search(type, REFERENCES);
1452
	search(type, REFERENCES);
1452
	assertSearchResults(
1453
	assertSearchResults(
1453
		"src/b82088/m/Test.java b82088.m.Test [A] EXACT_MATCH\n" + 
1454
		"src/b82088/m/Test.java b82088.m.Test [A] EXACT_MATCH\n" +
1454
		"src/b82088/m/Test.java b82088.m.Test.a [A] EXACT_MATCH\n" + 
1455
		"src/b82088/m/Test.java b82088.m.Test.a [A] EXACT_MATCH\n" +
1455
		"src/b82088/m/Test.java void b82088.m.Test.setA(A) [A] EXACT_MATCH"
1456
		"src/b82088/m/Test.java void b82088.m.Test.setA(A) [A] EXACT_MATCH"
1456
	);
1457
	);
1457
}
1458
}
Lines 1459-1480 Link Here
1459
	workingCopies = new ICompilationUnit[1];
1460
	workingCopies = new ICompilationUnit[1];
1460
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/c/Test.java",
1461
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82088/c/Test.java",
1461
		"package b82088.c;\n" +
1462
		"package b82088.c;\n" +
1462
		"/**\n" + 
1463
		"/**\n" +
1463
		" * @see #Test(A)\n" + 
1464
		" * @see #Test(A)\n" +
1464
		" */\n" + 
1465
		" */\n" +
1465
		"public class Test {\n" + 
1466
		"public class Test {\n" +
1466
		"	A a;\n" + 
1467
		"	A a;\n" +
1467
		"	Test(A a) {\n" + 
1468
		"	Test(A a) {\n" +
1468
		"		this.a = a;\n" + 
1469
		"		this.a = a;\n" +
1469
		"	}\n" + 
1470
		"	}\n" +
1470
		"}\n" + 
1471
		"}\n" +
1471
		"class A {}\n"
1472
		"class A {}\n"
1472
		);
1473
		);
1473
	IType type = workingCopies[0].getType("A");
1474
	IType type = workingCopies[0].getType("A");
1474
	search(type, REFERENCES);
1475
	search(type, REFERENCES);
1475
	assertSearchResults(
1476
	assertSearchResults(
1476
		"src/b82088/c/Test.java b82088.c.Test [A] EXACT_MATCH\n" + 
1477
		"src/b82088/c/Test.java b82088.c.Test [A] EXACT_MATCH\n" +
1477
		"src/b82088/c/Test.java b82088.c.Test.a [A] EXACT_MATCH\n" + 
1478
		"src/b82088/c/Test.java b82088.c.Test.a [A] EXACT_MATCH\n" +
1478
		"src/b82088/c/Test.java b82088.c.Test(A) [A] EXACT_MATCH"
1479
		"src/b82088/c/Test.java b82088.c.Test(A) [A] EXACT_MATCH"
1479
	);
1480
	);
1480
}
1481
}
Lines 1486-1495 Link Here
1486
private void setUpBug82208() throws CoreException {
1487
private void setUpBug82208() throws CoreException {
1487
	workingCopies = new ICompilationUnit[1];
1488
	workingCopies = new ICompilationUnit[1];
1488
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82208/Test.java",
1489
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82208/Test.java",
1489
		"package b82208;\n" + 
1490
		"package b82208;\n" +
1490
		"interface B82208_I {}\n" + 
1491
		"interface B82208_I {}\n" +
1491
		"enum B82208_E {}\n" + 
1492
		"enum B82208_E {}\n" +
1492
		"@interface B82208_A {}\n" + 
1493
		"@interface B82208_A {}\n" +
1493
		"public class B82208 {}\n"
1494
		"public class B82208 {}\n"
1494
	);
1495
	);
1495
}
1496
}
Lines 1498-1506 Link Here
1498
	setUpBug82208();
1499
	setUpBug82208();
1499
	search("B82208*", TYPE, ALL_OCCURRENCES);
1500
	search("B82208*", TYPE, ALL_OCCURRENCES);
1500
	assertSearchResults(
1501
	assertSearchResults(
1501
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" + 
1502
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" +
1502
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" + 
1503
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" +
1503
		"src/b82208/Test.java b82208.B82208_A [B82208_A] EXACT_MATCH\n" + 
1504
		"src/b82208/Test.java b82208.B82208_A [B82208_A] EXACT_MATCH\n" +
1504
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1505
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1505
	);
1506
	);
1506
}
1507
}
Lines 1541-1547 Link Here
1541
	setUpBug82208();
1542
	setUpBug82208();
1542
	search("B82208*", CLASS_AND_INTERFACE, ALL_OCCURRENCES);
1543
	search("B82208*", CLASS_AND_INTERFACE, ALL_OCCURRENCES);
1543
	assertSearchResults(
1544
	assertSearchResults(
1544
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" + 
1545
		"src/b82208/Test.java b82208.B82208_I [B82208_I] EXACT_MATCH\n" +
1545
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1546
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1546
	);
1547
	);
1547
}
1548
}
Lines 1550-1556 Link Here
1550
	setUpBug82208();
1551
	setUpBug82208();
1551
	search("B82208*", CLASS_AND_ENUM, ALL_OCCURRENCES);
1552
	search("B82208*", CLASS_AND_ENUM, ALL_OCCURRENCES);
1552
	assertSearchResults(
1553
	assertSearchResults(
1553
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" + 
1554
		"src/b82208/Test.java b82208.B82208_E [B82208_E] EXACT_MATCH\n" +
1554
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1555
		"src/b82208/Test.java b82208.B82208 [B82208] EXACT_MATCH"
1555
	);
1556
	);
1556
}
1557
}
Lines 1563-1589 Link Here
1563
	resultCollector.showRule = true;
1564
	resultCollector.showRule = true;
1564
	workingCopies = new ICompilationUnit[1];
1565
	workingCopies = new ICompilationUnit[1];
1565
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82673/Test.java",
1566
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b82673/Test.java",
1566
		"package b82673;\n" + 
1567
		"package b82673;\n" +
1567
		"public class Test {\n" + 
1568
		"public class Test {\n" +
1568
		"    void test1() {\n" + 
1569
		"    void test1() {\n" +
1569
		"        class Dummy {};\n" + 
1570
		"        class Dummy {};\n" +
1570
		"        Dummy d = new Dummy();\n" + 
1571
		"        Dummy d = new Dummy();\n" +
1571
		"		new X();\n" + 
1572
		"		new X();\n" +
1572
		"    }\n" + 
1573
		"    }\n" +
1573
		"    \n" + 
1574
		"    \n" +
1574
		"    void test2() {\n" + 
1575
		"    void test2() {\n" +
1575
		"        class Dummy {};\n" + 
1576
		"        class Dummy {};\n" +
1576
		"        Dummy d = new Dummy();\n" + 
1577
		"        Dummy d = new Dummy();\n" +
1577
		"		new Y();\n" + 
1578
		"		new Y();\n" +
1578
		"    }\n" + 
1579
		"    }\n" +
1579
		"}\n" + 
1580
		"}\n" +
1580
		"class X {}\n" + 
1581
		"class X {}\n" +
1581
		"class Y {}\n"
1582
		"class Y {}\n"
1582
	);
1583
	);
1583
	IType type = selectType(workingCopies[0], "Test").getMethod("test1", new String[0]).getType("Dummy", 1);
1584
	IType type = selectType(workingCopies[0], "Test").getMethod("test1", new String[0]).getType("Dummy", 1);
1584
	search(type, REFERENCES);
1585
	search(type, REFERENCES);
1585
	assertSearchResults(
1586
	assertSearchResults(
1586
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH\n" + 
1587
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH\n" +
1587
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH"
1588
		"src/b82673/Test.java void b82673.Test.test1() [Dummy] EXACT_MATCH"
1588
	);
1589
	);
1589
}
1590
}
Lines 1596-1621 Link Here
1596
	resultCollector.showRule = true;
1597
	resultCollector.showRule = true;
1597
	workingCopies = new ICompilationUnit[1];
1598
	workingCopies = new ICompilationUnit[1];
1598
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83012/Test.java",
1599
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83012/Test.java",
1599
		"package b83012;\n" + 
1600
		"package b83012;\n" +
1600
		"@interface A {\n" + 
1601
		"@interface A {\n" +
1601
		"    String value() default \"\";\n" + 
1602
		"    String value() default \"\";\n" +
1602
		"}\n" + 
1603
		"}\n" +
1603
		"@interface Main {\n" + 
1604
		"@interface Main {\n" +
1604
		"	A first() default @A(\"Void\");\n" + 
1605
		"	A first() default @A(\"Void\");\n" +
1605
		"	A second();\n" + 
1606
		"	A second();\n" +
1606
		"}\n" + 
1607
		"}\n" +
1607
		"\n" + 
1608
		"\n" +
1608
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" + 
1609
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" +
1609
		"public class Test {\n" + 
1610
		"public class Test {\n" +
1610
		"}\n"
1611
		"}\n"
1611
	);
1612
	);
1612
	IType type = selectType(workingCopies[0], "A");
1613
	IType type = selectType(workingCopies[0], "A");
1613
	search(type, REFERENCES);
1614
	search(type, REFERENCES);
1614
	assertSearchResults(
1615
	assertSearchResults(
1615
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" + 
1616
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" +
1616
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" + 
1617
		"src/b83012/Test.java A b83012.Main.first() [A] EXACT_MATCH\n" +
1617
		"src/b83012/Test.java A b83012.Main.second() [A] EXACT_MATCH\n" + 
1618
		"src/b83012/Test.java A b83012.Main.second() [A] EXACT_MATCH\n" +
1618
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH\n" + 
1619
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH\n" +
1619
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH"
1620
		"src/b83012/Test.java b83012.Test [A] EXACT_MATCH"
1620
	);
1621
	);
1621
}
1622
}
Lines 1628-1665 Link Here
1628
	resultCollector.showRule = true;
1629
	resultCollector.showRule = true;
1629
	workingCopies = new ICompilationUnit[1];
1630
	workingCopies = new ICompilationUnit[1];
1630
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1631
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1631
		"package b83230;\n" + 
1632
		"package b83230;\n" +
1632
		"@interface Author {\n" + 
1633
		"@interface Author {\n" +
1633
		"	String[] authorName() default \"FREDERIC\";\n" + 
1634
		"	String[] authorName() default \"FREDERIC\";\n" +
1634
		"	int[] age();\n" + 
1635
		"	int[] age();\n" +
1635
		"	int ageMin = 20;\n" + 
1636
		"	int ageMin = 20;\n" +
1636
		"	@interface Surname {}\n" + 
1637
		"	@interface Surname {}\n" +
1637
		"	class Address {\n" + 
1638
		"	class Address {\n" +
1638
		"		String city;\n" + 
1639
		"		String city;\n" +
1639
		"		public void foo(Object obj) {}\n" + 
1640
		"		public void foo(Object obj) {}\n" +
1640
		"	}\n" + 
1641
		"	}\n" +
1641
		"}\n" +
1642
		"}\n" +
1642
		"\n" +
1643
		"\n" +
1643
		"@Author(authorName=\"FREDERIC\", age=41)\n" + 
1644
		"@Author(authorName=\"FREDERIC\", age=41)\n" +
1644
		"public class Test {\n" + 
1645
		"public class Test {\n" +
1645
		"	@Author(authorName={\"FREDERIC\", \"JEROME\"}, age={41, 35} )\n" + 
1646
		"	@Author(authorName={\"FREDERIC\", \"JEROME\"}, age={41, 35} )\n" +
1646
		"	Test() {}\n" + 
1647
		"	Test() {}\n" +
1647
		"	@Author(authorName=\"PHILIPPE\", age=37)\n" + 
1648
		"	@Author(authorName=\"PHILIPPE\", age=37)\n" +
1648
		"	void foo() {\n" + 
1649
		"	void foo() {\n" +
1649
		"		@Author(authorName=\"FREDERIC\", age=41)\n" + 
1650
		"		@Author(authorName=\"FREDERIC\", age=41)\n" +
1650
		"		final Object obj = new Object() {};\n" + 
1651
		"		final Object obj = new Object() {};\n" +
1651
		"		@Author(authorName=\"FREDERIC\", age=41)\n" + 
1652
		"		@Author(authorName=\"FREDERIC\", age=41)\n" +
1652
		"		class Local {\n" + 
1653
		"		class Local {\n" +
1653
		"			@Author(authorName=\"FREDERIC\", age=41)\n" + 
1654
		"			@Author(authorName=\"FREDERIC\", age=41)\n" +
1654
		"			String foo() {\n" + 
1655
		"			String foo() {\n" +
1655
		"				Author.Address address = new Author.Address();\n" + 
1656
		"				Author.Address address = new Author.Address();\n" +
1656
		"				address.foo(obj);\n" + 
1657
		"				address.foo(obj);\n" +
1657
		"				return address.city;\n" + 
1658
		"				return address.city;\n" +
1658
		"			}\n" + 
1659
		"			}\n" +
1659
		"		}\n" + 
1660
		"		}\n" +
1660
		"	}\n" + 
1661
		"	}\n" +
1661
		"	@Author(authorName=\"DAVID\", age=28)\n" + 
1662
		"	@Author(authorName=\"DAVID\", age=28)\n" +
1662
		"	int min = Author.ageMin;\n" + 
1663
		"	int min = Author.ageMin;\n" +
1663
		"}\n"
1664
		"}\n"
1664
	);
1665
	);
1665
}
1666
}
Lines 1669-1680 Link Here
1669
	IMethod method = selectMethod(workingCopies[0], "authorName");
1670
	IMethod method = selectMethod(workingCopies[0], "authorName");
1670
	search(method, REFERENCES);
1671
	search(method, REFERENCES);
1671
	assertSearchResults(
1672
	assertSearchResults(
1672
		"src/b83230/Test.java b83230.Test [authorName] EXACT_MATCH\n" + 
1673
		"src/b83230/Test.java b83230.Test [authorName] EXACT_MATCH\n" +
1673
		"src/b83230/Test.java b83230.Test.min [authorName] EXACT_MATCH\n" + 
1674
		"src/b83230/Test.java b83230.Test.min [authorName] EXACT_MATCH\n" +
1674
		"src/b83230/Test.java b83230.Test() [authorName] EXACT_MATCH\n" + 
1675
		"src/b83230/Test.java b83230.Test() [authorName] EXACT_MATCH\n" +
1675
		"src/b83230/Test.java void b83230.Test.foo():Local#1 [authorName] EXACT_MATCH\n" + 
1676
		"src/b83230/Test.java void b83230.Test.foo():Local#1 [authorName] EXACT_MATCH\n" +
1676
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [authorName] EXACT_MATCH\n" + 
1677
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [authorName] EXACT_MATCH\n" +
1677
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH\n" + 
1678
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH\n" +
1678
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH"
1679
		"src/b83230/Test.java void b83230.Test.foo() [authorName] EXACT_MATCH"
1679
	);
1680
	);
1680
}
1681
}
Lines 1693-1699 Link Here
1693
	IType type = selectType(workingCopies[0], "Address");
1694
	IType type = selectType(workingCopies[0], "Address");
1694
	search(type, REFERENCES);
1695
	search(type, REFERENCES);
1695
	assertSearchResults(
1696
	assertSearchResults(
1696
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH\n" + 
1697
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH\n" +
1697
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH"
1698
		"src/b83230/Test.java String void b83230.Test.foo():Local#1.foo() [Author.Address] EXACT_MATCH"
1698
	);
1699
	);
1699
}
1700
}
Lines 1728-1751 Link Here
1728
	resultCollector.showRule = true;
1729
	resultCollector.showRule = true;
1729
	workingCopies = new ICompilationUnit[1];
1730
	workingCopies = new ICompilationUnit[1];
1730
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1731
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1731
		"package b83230;\n" + 
1732
		"package b83230;\n" +
1732
		"@interface Annot {\n" + 
1733
		"@interface Annot {\n" +
1733
		"	int value();\n" +
1734
		"	int value();\n" +
1734
		"}\n" +
1735
		"}\n" +
1735
		"@Annot(41)\n" + 
1736
		"@Annot(41)\n" +
1736
		"public class Test {\n" + 
1737
		"public class Test {\n" +
1737
		"	@Annot(10)\n" + 
1738
		"	@Annot(10)\n" +
1738
		"	public void foo() {}\n" + 
1739
		"	public void foo() {}\n" +
1739
		"	@Annot(21)\n" + 
1740
		"	@Annot(21)\n" +
1740
		"	int bar;\n" + 
1741
		"	int bar;\n" +
1741
		"}\n"
1742
		"}\n"
1742
	);
1743
	);
1743
	IType type = selectType(workingCopies[0], "Annot");
1744
	IType type = selectType(workingCopies[0], "Annot");
1744
	IMethod method = type.getMethod("value", new String[0]);
1745
	IMethod method = type.getMethod("value", new String[0]);
1745
	search(method, REFERENCES);
1746
	search(method, REFERENCES);
1746
	assertSearchResults(
1747
	assertSearchResults(
1747
		"src/b83230/Test.java b83230.Test [41] EXACT_MATCH\n" + 
1748
		"src/b83230/Test.java b83230.Test [41] EXACT_MATCH\n" +
1748
		"src/b83230/Test.java b83230.Test.bar [21] EXACT_MATCH\n" + 
1749
		"src/b83230/Test.java b83230.Test.bar [21] EXACT_MATCH\n" +
1749
		"src/b83230/Test.java void b83230.Test.foo() [10] EXACT_MATCH"
1750
		"src/b83230/Test.java void b83230.Test.foo() [10] EXACT_MATCH"
1750
	);
1751
	);
1751
}
1752
}
Lines 1753-1777 Link Here
1753
	resultCollector.showRule = true;
1754
	resultCollector.showRule = true;
1754
	workingCopies = new ICompilationUnit[1];
1755
	workingCopies = new ICompilationUnit[1];
1755
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1756
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83230/Test.java",
1756
		"package b83230;\n" + 
1757
		"package b83230;\n" +
1757
		"@interface A {\n" + 
1758
		"@interface A {\n" +
1758
		"    String value() default \"\";\n" + 
1759
		"    String value() default \"\";\n" +
1759
		"}\n" + 
1760
		"}\n" +
1760
		"@interface Main {\n" + 
1761
		"@interface Main {\n" +
1761
		"	A first() default @A(\"Void\");\n" + 
1762
		"	A first() default @A(\"Void\");\n" +
1762
		"	A second();\n" + 
1763
		"	A second();\n" +
1763
		"}\n" + 
1764
		"}\n" +
1764
		"\n" + 
1765
		"\n" +
1765
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" + 
1766
		"@Main(first=@A(\"\"), second=@A(\"2\"))\n" +
1766
		"public class Test {\n" + 
1767
		"public class Test {\n" +
1767
		"}\n"
1768
		"}\n"
1768
	);
1769
	);
1769
	IType type = selectType(workingCopies[0], "A");
1770
	IType type = selectType(workingCopies[0], "A");
1770
	IMethod method = type.getMethod("value", new String[0]);
1771
	IMethod method = type.getMethod("value", new String[0]);
1771
	search(method, REFERENCES);
1772
	search(method, REFERENCES);
1772
	assertSearchResults(
1773
	assertSearchResults(
1773
		"src/b83230/Test.java A b83230.Main.first() [\"Void\"] EXACT_MATCH\n" + 
1774
		"src/b83230/Test.java A b83230.Main.first() [\"Void\"] EXACT_MATCH\n" +
1774
		"src/b83230/Test.java b83230.Test [\"\"] EXACT_MATCH\n" + 
1775
		"src/b83230/Test.java b83230.Test [\"\"] EXACT_MATCH\n" +
1775
		"src/b83230/Test.java b83230.Test [\"2\"] EXACT_MATCH"
1776
		"src/b83230/Test.java b83230.Test [\"2\"] EXACT_MATCH"
1776
	);
1777
	);
1777
}
1778
}
Lines 1784-1804 Link Here
1784
	resultCollector.showRule = true;
1785
	resultCollector.showRule = true;
1785
	workingCopies = new ICompilationUnit[1];
1786
	workingCopies = new ICompilationUnit[1];
1786
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Test.java",
1787
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Test.java",
1787
		"package b83304;\n" + 
1788
		"package b83304;\n" +
1788
		"public class Test {\n" + 
1789
		"public class Test {\n" +
1789
		"	void foo() {\n" + 
1790
		"	void foo() {\n" +
1790
		"		Class<? extends Throwable> l1= null;\n" + 
1791
		"		Class<? extends Throwable> l1= null;\n" +
1791
		"		Class<Exception> l2= null;\n" + 
1792
		"		Class<Exception> l2= null;\n" +
1792
		"		\n" + 
1793
		"		\n" +
1793
		"		Class<String> string_Class;\n" + 
1794
		"		Class<String> string_Class;\n" +
1794
		"	}\n" + 
1795
		"	}\n" +
1795
		"}\n"
1796
		"}\n"
1796
		);
1797
		);
1797
	IType type = selectType(workingCopies[0], "Class", 3);
1798
	IType type = selectType(workingCopies[0], "Class", 3);
1798
	search(type, REFERENCES, ERASURE_RULE, getJavaSearchWorkingCopiesScope());
1799
	search(type, REFERENCES, ERASURE_RULE, getJavaSearchWorkingCopiesScope());
1799
	assertSearchResults(
1800
	assertSearchResults(
1800
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" + 
1801
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" +
1801
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" + 
1802
		"src/b83304/Test.java void b83304.Test.foo() [Class] ERASURE_MATCH\n" +
1802
		"src/b83304/Test.java void b83304.Test.foo() [Class] EXACT_MATCH"
1803
		"src/b83304/Test.java void b83304.Test.foo() [Class] EXACT_MATCH"
1803
	);
1804
	);
1804
}
1805
}
Lines 1806-1820 Link Here
1806
	resultCollector.showRule = true;
1807
	resultCollector.showRule = true;
1807
	workingCopies = new ICompilationUnit[1];
1808
	workingCopies = new ICompilationUnit[1];
1808
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Types.java",
1809
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Types.java",
1809
		"package b83304;\n" + 
1810
		"package b83304;\n" +
1810
		"import g1.t.s.def.Generic;\n" + 
1811
		"import g1.t.s.def.Generic;\n" +
1811
		"public class Types {\n" + 
1812
		"public class Types {\n" +
1812
		"	public Generic gen;\n" + 
1813
		"	public Generic gen;\n" +
1813
		"	public Generic<Object> gen_obj;\n" + 
1814
		"	public Generic<Object> gen_obj;\n" +
1814
		"	public Generic<Exception> gen_exc;\n" + 
1815
		"	public Generic<Exception> gen_exc;\n" +
1815
		"	public Generic<?> gen_wld;\n" + 
1816
		"	public Generic<?> gen_wld;\n" +
1816
		"	public Generic<? extends Throwable> gen_thr;\n" + 
1817
		"	public Generic<? extends Throwable> gen_thr;\n" +
1817
		"	public Generic<? super RuntimeException> gen_run;\n" + 
1818
		"	public Generic<? super RuntimeException> gen_run;\n" +
1818
		"}\n"
1819
		"}\n"
1819
	);
1820
	);
1820
}
1821
}
Lines 1824-1836 Link Here
1824
	IType type = selectType(workingCopies[0], "Generic", 4);
1825
	IType type = selectType(workingCopies[0], "Generic", 4);
1825
	search(type, REFERENCES, ERASURE_RULE);
1826
	search(type, REFERENCES, ERASURE_RULE);
1826
	assertSearchResults(
1827
	assertSearchResults(
1827
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" + 
1828
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" +
1828
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" + 
1829
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" +
1829
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" + 
1830
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" +
1830
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EXACT_MATCH\n" + 
1831
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EXACT_MATCH\n" +
1831
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" + 
1832
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" +
1832
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] EQUIVALENT_MATCH\n" + 
1833
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] EQUIVALENT_MATCH\n" +
1833
		"src/b83304/Types.java b83304.Types.gen_run [Generic] EQUIVALENT_MATCH\n" + 
1834
		"src/b83304/Types.java b83304.Types.gen_run [Generic] EQUIVALENT_MATCH\n" +
1834
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1835
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1835
	);
1836
	);
1836
}
1837
}
Lines 1840-1852 Link Here
1840
	IType type = getClassFile("JavaSearchBugs", "lib/JavaSearch15.jar", "g1.t.s.def", "Generic.class").getType();
1841
	IType type = getClassFile("JavaSearchBugs", "lib/JavaSearch15.jar", "g1.t.s.def", "Generic.class").getType();
1841
	search(type, REFERENCES, ERASURE_RULE);
1842
	search(type, REFERENCES, ERASURE_RULE);
1842
	assertSearchResults(
1843
	assertSearchResults(
1843
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" + 
1844
		"src/b83304/Types.java [g1.t.s.def.Generic] EQUIVALENT_RAW_MATCH\n" +
1844
		"src/b83304/Types.java b83304.Types.gen [Generic] ERASURE_RAW_MATCH\n" + 
1845
		"src/b83304/Types.java b83304.Types.gen [Generic] ERASURE_RAW_MATCH\n" +
1845
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" + 
1846
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] ERASURE_MATCH\n" +
1846
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] ERASURE_MATCH\n" + 
1847
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] ERASURE_MATCH\n" +
1847
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] ERASURE_MATCH\n" + 
1848
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] ERASURE_MATCH\n" +
1848
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" + 
1849
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" +
1849
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" + 
1850
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" +
1850
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() EXACT_MATCH"
1851
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() EXACT_MATCH"
1851
	);
1852
	);
1852
}
1853
}
Lines 1855-1867 Link Here
1855
	setUpBug83304_TypeParameterizedElementPattern();
1856
	setUpBug83304_TypeParameterizedElementPattern();
1856
	search("Generic<? super Exception>", TYPE, REFERENCES, ERASURE_RULE);
1857
	search("Generic<? super Exception>", TYPE, REFERENCES, ERASURE_RULE);
1857
	assertSearchResults(
1858
	assertSearchResults(
1858
		"src/b83304/Types.java [Generic] EQUIVALENT_RAW_MATCH\n" + 
1859
		"src/b83304/Types.java [Generic] EQUIVALENT_RAW_MATCH\n" +
1859
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" + 
1860
		"src/b83304/Types.java b83304.Types.gen [Generic] EQUIVALENT_RAW_MATCH\n" +
1860
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] EQUIVALENT_MATCH\n" + 
1861
		"src/b83304/Types.java b83304.Types.gen_obj [Generic] EQUIVALENT_MATCH\n" +
1861
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EQUIVALENT_MATCH\n" + 
1862
		"src/b83304/Types.java b83304.Types.gen_exc [Generic] EQUIVALENT_MATCH\n" +
1862
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" + 
1863
		"src/b83304/Types.java b83304.Types.gen_wld [Generic] EQUIVALENT_MATCH\n" +
1863
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" + 
1864
		"src/b83304/Types.java b83304.Types.gen_thr [Generic] ERASURE_MATCH\n" +
1864
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" + 
1865
		"src/b83304/Types.java b83304.Types.gen_run [Generic] ERASURE_MATCH\n" +
1865
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1866
		"lib/JavaSearch15.jar g1.t.s.def.Generic<T> g1.t.s.def.Generic.foo() ERASURE_MATCH"
1866
	);
1867
	);
1867
}
1868
}
Lines 1869-1884 Link Here
1869
	resultCollector.showRule = true;
1870
	resultCollector.showRule = true;
1870
	workingCopies = new ICompilationUnit[1];
1871
	workingCopies = new ICompilationUnit[1];
1871
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Methods.java",
1872
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Methods.java",
1872
		"package b83304;\n" + 
1873
		"package b83304;\n" +
1873
		"import g5.m.def.Single;\n" + 
1874
		"import g5.m.def.Single;\n" +
1874
		"public class Methods {\n" + 
1875
		"public class Methods {\n" +
1875
		"	void test() {\n" + 
1876
		"	void test() {\n" +
1876
		"		Single<Exception> gs = new Single<Exception>();\n" + 
1877
		"		Single<Exception> gs = new Single<Exception>();\n" +
1877
		"		Exception exc = new Exception();\n" + 
1878
		"		Exception exc = new Exception();\n" +
1878
		"		gs.<Throwable>generic(exc);\n" + 
1879
		"		gs.<Throwable>generic(exc);\n" +
1879
		"		gs.<Exception>generic(exc);\n" + 
1880
		"		gs.<Exception>generic(exc);\n" +
1880
		"		gs.<String>generic(\"\");\n" + 
1881
		"		gs.<String>generic(\"\");\n" +
1881
		"	}\n" + 
1882
		"	}\n" +
1882
		"}\n"
1883
		"}\n"
1883
	);
1884
	);
1884
}
1885
}
Lines 1888-1895 Link Here
1888
	IMethod method = selectMethod(workingCopies[0], "generic", 2);
1889
	IMethod method = selectMethod(workingCopies[0], "generic", 2);
1889
	search(method, REFERENCES, ERASURE_RULE);
1890
	search(method, REFERENCES, ERASURE_RULE);
1890
	assertSearchResults(
1891
	assertSearchResults(
1891
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1892
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1892
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" + 
1893
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" +
1893
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1894
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1894
	);
1895
	);
1895
}
1896
}
Lines 1900-1907 Link Here
1900
	IMethod method = type.getMethod("generic", new String[] { "TU;" });
1901
	IMethod method = type.getMethod("generic", new String[] { "TU;" });
1901
	search(method, REFERENCES, ERASURE_RULE);
1902
	search(method, REFERENCES, ERASURE_RULE);
1902
	assertSearchResults(
1903
	assertSearchResults(
1903
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1904
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1904
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1905
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1905
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1906
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1906
	);
1907
	);
1907
}
1908
}
Lines 1910-1917 Link Here
1910
	setUpBug83304_MethodParameterizedElementPattern();
1911
	setUpBug83304_MethodParameterizedElementPattern();
1911
	search("<Exception>generic", METHOD, REFERENCES, ERASURE_RULE);
1912
	search("<Exception>generic", METHOD, REFERENCES, ERASURE_RULE);
1912
	assertSearchResults(
1913
	assertSearchResults(
1913
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" + 
1914
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] ERASURE_MATCH\n" +
1914
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" + 
1915
		"src/b83304/Methods.java void b83304.Methods.test() [generic(exc)] EXACT_MATCH\n" +
1915
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1916
		"src/b83304/Methods.java void b83304.Methods.test() [generic(\"\")] ERASURE_MATCH"
1916
	);
1917
	);
1917
}
1918
}
Lines 1919-1933 Link Here
1919
	resultCollector.showRule = true;
1920
	resultCollector.showRule = true;
1920
	workingCopies = new ICompilationUnit[1];
1921
	workingCopies = new ICompilationUnit[1];
1921
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Constructors.java",
1922
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83304/Constructors.java",
1922
		"package b83304;\n" + 
1923
		"package b83304;\n" +
1923
		"import g5.c.def.Single;\n" + 
1924
		"import g5.c.def.Single;\n" +
1924
		"public class Constructors {\n" + 
1925
		"public class Constructors {\n" +
1925
		"	void test() {\n" + 
1926
		"	void test() {\n" +
1926
		"		Exception exc= new Exception();\n" + 
1927
		"		Exception exc= new Exception();\n" +
1927
		"		new <Throwable>Single<String>(\"\", exc);\n" + 
1928
		"		new <Throwable>Single<String>(\"\", exc);\n" +
1928
		"		new <Exception>Single<String>(\"\", exc);\n" + 
1929
		"		new <Exception>Single<String>(\"\", exc);\n" +
1929
		"		new <String>Single<String>(\"\", \"\");\n" + 
1930
		"		new <String>Single<String>(\"\", \"\");\n" +
1930
		"	}\n" + 
1931
		"	}\n" +
1931
		"}\n"
1932
		"}\n"
1932
	);
1933
	);
1933
}
1934
}
Lines 1937-1944 Link Here
1937
	IMethod method = selectMethod(workingCopies[0], "Single", 3);
1938
	IMethod method = selectMethod(workingCopies[0], "Single", 3);
1938
	search(method, REFERENCES, ERASURE_RULE);
1939
	search(method, REFERENCES, ERASURE_RULE);
1939
	assertSearchResults(
1940
	assertSearchResults(
1940
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1941
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1941
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" + 
1942
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" +
1942
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1943
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1943
	);
1944
	);
1944
}
1945
}
Lines 1949-1956 Link Here
1949
	IMethod method = type.getMethod("Single", new String[] { "TT;", "TU;" });
1950
	IMethod method = type.getMethod("Single", new String[] { "TT;", "TU;" });
1950
	search(method, REFERENCES, ERASURE_RULE);
1951
	search(method, REFERENCES, ERASURE_RULE);
1951
	assertSearchResults(
1952
	assertSearchResults(
1952
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1953
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1953
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1954
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1954
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1955
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH"
1955
	);
1956
	);
1956
}
1957
}
Lines 1959-1968 Link Here
1959
	setUpBug83304_ConstructorGenericElementPattern();
1960
	setUpBug83304_ConstructorGenericElementPattern();
1960
	search("<Exception>Single", CONSTRUCTOR, REFERENCES, ERASURE_RULE);
1961
	search("<Exception>Single", CONSTRUCTOR, REFERENCES, ERASURE_RULE);
1961
	assertSearchResults(
1962
	assertSearchResults(
1962
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" + 
1963
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Throwable>Single<String>(\"\", exc)] ERASURE_MATCH\n" +
1963
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" + 
1964
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <Exception>Single<String>(\"\", exc)] EXACT_MATCH\n" +
1964
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH\n" + 
1965
		"src/b83304/Constructors.java void b83304.Constructors.test() [new <String>Single<String>(\"\", \"\")] ERASURE_MATCH\n" +
1965
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.returnParamType() ERASURE_MATCH\n" + 
1966
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.returnParamType() ERASURE_MATCH\n" +
1966
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.complete(U, g5.m.def.Single<T>) ERASURE_MATCH"
1967
		"lib/JavaSearch15.jar g5.m.def.Single<T> g5.m.def.Single.complete(U, g5.m.def.Single<T>) ERASURE_MATCH"
1967
	);
1968
	);
1968
}
1969
}
Lines 1974-2001 Link Here
1974
private void setUpBug83804_Type() throws CoreException {
1975
private void setUpBug83804_Type() throws CoreException {
1975
	workingCopies = new ICompilationUnit[2];
1976
	workingCopies = new ICompilationUnit[2];
1976
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83804/package-info.java",
1977
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83804/package-info.java",
1977
		"/**\n" + 
1978
		"/**\n" +
1978
		" * Valid javadoc.\n" + 
1979
		" * Valid javadoc.\n" +
1979
		" * @see Test\n" + 
1980
		" * @see Test\n" +
1980
		" * @see Unknown\n" + 
1981
		" * @see Unknown\n" +
1981
		" * @see Test#foo()\n" + 
1982
		" * @see Test#foo()\n" +
1982
		" * @see Test#unknown()\n" + 
1983
		" * @see Test#unknown()\n" +
1983
		" * @see Test#field\n" + 
1984
		" * @see Test#field\n" +
1984
		" * @see Test#unknown\n" + 
1985
		" * @see Test#unknown\n" +
1985
		" * @param unexpected\n" + 
1986
		" * @param unexpected\n" +
1986
		" * @throws unexpected\n" + 
1987
		" * @throws unexpected\n" +
1987
		" * @return unexpected \n" + 
1988
		" * @return unexpected \n" +
1988
		" */\n" + 
1989
		" */\n" +
1989
		"package b83804;\n"
1990
		"package b83804;\n"
1990
	);
1991
	);
1991
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b83804/Test.java",
1992
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b83804/Test.java",
1992
		"/**\n" + 
1993
		"/**\n" +
1993
		" * Invalid javadoc\n" + 
1994
		" * Invalid javadoc\n" +
1994
		" */\n" + 
1995
		" */\n" +
1995
		"package b83804;\n" + 
1996
		"package b83804;\n" +
1996
		"public class Test {\n" + 
1997
		"public class Test {\n" +
1997
		"	public int field;\n" + 
1998
		"	public int field;\n" +
1998
		"	public void foo() {}\n" + 
1999
		"	public void foo() {}\n" +
1999
		"}\n"
2000
		"}\n"
2000
	);
2001
	);
2001
}
2002
}
Lines 2005-2014 Link Here
2005
	IType type = workingCopies[1].getType("Test");
2006
	IType type = workingCopies[1].getType("Test");
2006
	search(type, REFERENCES);
2007
	search(type, REFERENCES);
2007
	assertSearchResults(
2008
	assertSearchResults(
2008
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2009
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2009
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2010
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2010
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2011
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2011
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" + 
2012
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC\n" +
2012
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC"
2013
		"src/b83804/package-info.java [Test] EXACT_MATCH INSIDE_JAVADOC"
2013
	);
2014
	);
2014
}
2015
}
Lines 2041-2056 Link Here
2041
	resultCollector.showRule = true;
2042
	resultCollector.showRule = true;
2042
	workingCopies = new ICompilationUnit[1];
2043
	workingCopies = new ICompilationUnit[1];
2043
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2044
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2044
		"package b83388;\n" + 
2045
		"package b83388;\n" +
2045
		"import b83388.*;\n" + 
2046
		"import b83388.*;\n" +
2046
		"public class R {}\n"
2047
		"public class R {}\n"
2047
	);
2048
	);
2048
	IImportDeclaration importDeclaration = workingCopies[0].getImport("pack");
2049
	IImportDeclaration importDeclaration = workingCopies[0].getImport("pack");
2049
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), importDeclaration);
2050
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), importDeclaration);
2050
	SearchPattern pattern = SearchPattern.createPattern(
2051
	SearchPattern pattern = SearchPattern.createPattern(
2051
		"pack", 
2052
		"pack",
2052
		PACKAGE,
2053
		PACKAGE,
2053
		DECLARATIONS, 
2054
		DECLARATIONS,
2054
		EXACT_RULE);
2055
		EXACT_RULE);
2055
	assertNotNull("Pattern should not be null", pattern);
2056
	assertNotNull("Pattern should not be null", pattern);
2056
	MatchLocator.setFocus(pattern, importDeclaration);
2057
	MatchLocator.setFocus(pattern, importDeclaration);
Lines 2069-2084 Link Here
2069
	resultCollector.showRule = true;
2070
	resultCollector.showRule = true;
2070
	workingCopies = new ICompilationUnit[1];
2071
	workingCopies = new ICompilationUnit[1];
2071
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2072
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83388/R.java",
2072
		"package b83388;\n" + 
2073
		"package b83388;\n" +
2073
		"import b83388.*;\n" + 
2074
		"import b83388.*;\n" +
2074
		"public class R {}\n"
2075
		"public class R {}\n"
2075
	);
2076
	);
2076
	IPackageDeclaration packageDeclaration = workingCopies[0].getPackageDeclaration("pack");
2077
	IPackageDeclaration packageDeclaration = workingCopies[0].getPackageDeclaration("pack");
2077
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), packageDeclaration);
2078
	assertNotNull("Cannot find \"pack\" import declaration for "+workingCopies[0].getElementName(), packageDeclaration);
2078
	SearchPattern pattern = SearchPattern.createPattern(
2079
	SearchPattern pattern = SearchPattern.createPattern(
2079
		"pack", 
2080
		"pack",
2080
		PACKAGE,
2081
		PACKAGE,
2081
		DECLARATIONS, 
2082
		DECLARATIONS,
2082
		EXACT_RULE);
2083
		EXACT_RULE);
2083
	assertNotNull("Pattern should not be null", pattern);
2084
	assertNotNull("Pattern should not be null", pattern);
2084
	MatchLocator.setFocus(pattern, packageDeclaration);
2085
	MatchLocator.setFocus(pattern, packageDeclaration);
Lines 2103-2125 Link Here
2103
	resultCollector.showInsideDoc = true;
2104
	resultCollector.showInsideDoc = true;
2104
	workingCopies = new ICompilationUnit[1];
2105
	workingCopies = new ICompilationUnit[1];
2105
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83693/A.java",
2106
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83693/A.java",
2106
		"package b83693;\n" + 
2107
		"package b83693;\n" +
2107
		"import static b83693.A.m;\n" + 
2108
		"import static b83693.A.m;\n" +
2108
		"/**\n" + 
2109
		"/**\n" +
2109
		" * @see A#m(int)\n" + 
2110
		" * @see A#m(int)\n" +
2110
		" */\n" + 
2111
		" */\n" +
2111
		"class A {\n" + 
2112
		"class A {\n" +
2112
		"    static void m(int i) {\n" + 
2113
		"    static void m(int i) {\n" +
2113
		"        b83693.A.m(i);\n" + 
2114
		"        b83693.A.m(i);\n" +
2114
		"    }\n" + 
2115
		"    }\n" +
2115
		"}"
2116
		"}"
2116
	);
2117
	);
2117
	IMethod[] methods = workingCopies[0].getType("A").getMethods();
2118
	IMethod[] methods = workingCopies[0].getType("A").getMethods();
2118
	assertEquals("Invalid number of methods", 1, methods.length);
2119
	assertEquals("Invalid number of methods", 1, methods.length);
2119
	search(methods[0], REFERENCES);
2120
	search(methods[0], REFERENCES);
2120
	assertSearchResults(
2121
	assertSearchResults(
2121
		"src/b83693/A.java [b83693.A.m] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2122
		"src/b83693/A.java [b83693.A.m] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2122
		"src/b83693/A.java b83693.A [m(int)] EXACT_MATCH INSIDE_JAVADOC\n" + 
2123
		"src/b83693/A.java b83693.A [m(int)] EXACT_MATCH INSIDE_JAVADOC\n" +
2123
		"src/b83693/A.java void b83693.A.m(int) [m(i)] EXACT_MATCH OUTSIDE_JAVADOC"
2124
		"src/b83693/A.java void b83693.A.m(int) [m(i)] EXACT_MATCH OUTSIDE_JAVADOC"
2124
	);
2125
	);
2125
}
2126
}
Lines 2127-2133 Link Here
2127
/**
2128
/**
2128
 * Bug 83716: [search] refs to 2-arg constructor on Action found unexpected matches
2129
 * Bug 83716: [search] refs to 2-arg constructor on Action found unexpected matches
2129
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=83716"
2130
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=83716"
2130
 * 
2131
 *
2131
 * Note that this test does verify that bug is really fixed, but only that it has no impact
2132
 * Note that this test does verify that bug is really fixed, but only that it has no impact
2132
 * on existing behavior. It was not really possible to put a test in this suite to verify that
2133
 * on existing behavior. It was not really possible to put a test in this suite to verify that
2133
 * bug is effectively fixed as it appears only to potential match found in plugin dependencies...
2134
 * bug is effectively fixed as it appears only to potential match found in plugin dependencies...
Lines 2135-2148 Link Here
2135
public void testBug83716() throws CoreException {
2136
public void testBug83716() throws CoreException {
2136
	workingCopies = new ICompilationUnit[1];
2137
	workingCopies = new ICompilationUnit[1];
2137
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83716/X.java",
2138
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b83716/X.java",
2138
		"package b83716;\n" + 
2139
		"package b83716;\n" +
2139
		"public class X {\n" + 
2140
		"public class X {\n" +
2140
		"	X() {}\n" + 
2141
		"	X() {}\n" +
2141
		"	X(int x) {}\n" + 
2142
		"	X(int x) {}\n" +
2142
		"}\n" + 
2143
		"}\n" +
2143
		"class Y extends X {\n" + 
2144
		"class Y extends X {\n" +
2144
		"	Y(int y) {\n" + 
2145
		"	Y(int y) {\n" +
2145
		"	}\n" + 
2146
		"	}\n" +
2146
		"}"
2147
		"}"
2147
	);
2148
	);
2148
	search("X", CONSTRUCTOR, REFERENCES);
2149
	search("X", CONSTRUCTOR, REFERENCES);
Lines 2159-2185 Link Here
2159
	resultCollector.showRule = true;
2160
	resultCollector.showRule = true;
2160
	workingCopies = new ICompilationUnit[2];
2161
	workingCopies = new ICompilationUnit[2];
2161
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84100/X.java",
2162
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84100/X.java",
2162
		"package b84100;\n" + 
2163
		"package b84100;\n" +
2163
		"public class X {\n" + 
2164
		"public class X {\n" +
2164
		"	void foo() {}\n" + 
2165
		"	void foo() {}\n" +
2165
		"	void foo(String s) {}\n" + 
2166
		"	void foo(String s) {}\n" +
2166
		"	void foo(String... xs) {}\n" + 
2167
		"	void foo(String... xs) {}\n" +
2167
		"	void foo(int x, String... xs) {}\n" + 
2168
		"	void foo(int x, String... xs) {}\n" +
2168
		"	void foo(String s, int x, String... xs) {}\n" + 
2169
		"	void foo(String s, int x, String... xs) {}\n" +
2169
		"}\n"
2170
		"}\n"
2170
		);
2171
		);
2171
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84100/Z.java",
2172
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84100/Z.java",
2172
		"package b84100;\n" + 
2173
		"package b84100;\n" +
2173
		"public class Z {\n" + 
2174
		"public class Z {\n" +
2174
		"	X x;\n" + 
2175
		"	X x;\n" +
2175
		"	void foo() {\n" + 
2176
		"	void foo() {\n" +
2176
		"		x.foo();\n" + 
2177
		"		x.foo();\n" +
2177
		"		x.foo(\"\");\n" + 
2178
		"		x.foo(\"\");\n" +
2178
		"		x.foo(\"\", \"\");\n" + 
2179
		"		x.foo(\"\", \"\");\n" +
2179
		"	 	x.foo(\"\", \"\", null);\n" + 
2180
		"	 	x.foo(\"\", \"\", null);\n" +
2180
		"		x.foo(3, \"\", \"\");\n" + 
2181
		"		x.foo(3, \"\", \"\");\n" +
2181
		"		x.foo(\"\", 3, \"\", \"\");\n" + 
2182
		"		x.foo(\"\", 3, \"\", \"\");\n" +
2182
		"	}\n" + 
2183
		"	}\n" +
2183
		"}\n"
2184
		"}\n"
2184
	);
2185
	);
2185
}
2186
}
Lines 2207-2213 Link Here
2207
	IMethod method = selectMethod(workingCopies[0], "foo", 3);
2208
	IMethod method = selectMethod(workingCopies[0], "foo", 3);
2208
	search(method, REFERENCES);
2209
	search(method, REFERENCES);
2209
	assertSearchResults(
2210
	assertSearchResults(
2210
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\")] EXACT_MATCH\n" + 
2211
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\")] EXACT_MATCH\n" +
2211
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\", null)] EXACT_MATCH"
2212
		"src/b84100/Z.java void b84100.Z.foo() [foo(\"\", \"\", null)] EXACT_MATCH"
2212
	);
2213
	);
2213
}
2214
}
Lines 2238-2256 Link Here
2238
	resultCollector.showRule = true;
2239
	resultCollector.showRule = true;
2239
	workingCopies = new ICompilationUnit[1];
2240
	workingCopies = new ICompilationUnit[1];
2240
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84121/Test.java",
2241
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84121/Test.java",
2241
		"package b84121;\n" + 
2242
		"package b84121;\n" +
2242
		"public class Test {\n" + 
2243
		"public class Test {\n" +
2243
		"	void foo(Test... t) {}\n" + 
2244
		"	void foo(Test... t) {}\n" +
2244
		"	void foo(int x, Test... t) {}\n" + 
2245
		"	void foo(int x, Test... t) {}\n" +
2245
		"	void foo(Test[] t1, Test... t2) {}\n" + 
2246
		"	void foo(Test[] t1, Test... t2) {}\n" +
2246
		"}\n"
2247
		"}\n"
2247
	);
2248
	);
2248
	IType type = workingCopies[0].getType("Test");
2249
	IType type = workingCopies[0].getType("Test");
2249
	search(type, REFERENCES);
2250
	search(type, REFERENCES);
2250
	assertSearchResults(
2251
	assertSearchResults(
2251
		"src/b84121/Test.java void b84121.Test.foo(Test ...) [Test] EXACT_MATCH\n" + 
2252
		"src/b84121/Test.java void b84121.Test.foo(Test ...) [Test] EXACT_MATCH\n" +
2252
		"src/b84121/Test.java void b84121.Test.foo(int, Test ...) [Test] EXACT_MATCH\n" + 
2253
		"src/b84121/Test.java void b84121.Test.foo(int, Test ...) [Test] EXACT_MATCH\n" +
2253
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH\n" + 
2254
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH\n" +
2254
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH"
2255
		"src/b84121/Test.java void b84121.Test.foo(Test[], Test ...) [Test] EXACT_MATCH"
2255
	);
2256
	);
2256
}
2257
}
Lines 2263-2287 Link Here
2263
	resultCollector.showRule = true;
2264
	resultCollector.showRule = true;
2264
	workingCopies = new ICompilationUnit[2];
2265
	workingCopies = new ICompilationUnit[2];
2265
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84724/X.java",
2266
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84724/X.java",
2266
		"package b84724;\n" + 
2267
		"package b84724;\n" +
2267
		"public class X {\n" + 
2268
		"public class X {\n" +
2268
		"	X(String s) {}\n" + 
2269
		"	X(String s) {}\n" +
2269
		"	X(String... v) {}\n" + 
2270
		"	X(String... v) {}\n" +
2270
		"	X(int x, String... v) {}\n" + 
2271
		"	X(int x, String... v) {}\n" +
2271
		"	X(String s, int x, String... v) {}\n" + 
2272
		"	X(String s, int x, String... v) {}\n" +
2272
		"}\n"
2273
		"}\n"
2273
		);
2274
		);
2274
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84724/Z.java",
2275
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84724/Z.java",
2275
		"package b84724;\n" + 
2276
		"package b84724;\n" +
2276
		"public class Z {\n" + 
2277
		"public class Z {\n" +
2277
		"	void foo() {\n" + 
2278
		"	void foo() {\n" +
2278
		"		new X();\n" + 
2279
		"		new X();\n" +
2279
		"		new X(\"\");\n" + 
2280
		"		new X(\"\");\n" +
2280
		"		new X(\"\", \"\");\n" + 
2281
		"		new X(\"\", \"\");\n" +
2281
		"		new X(\"\", \"\", null);\n" + 
2282
		"		new X(\"\", \"\", null);\n" +
2282
		"		new X(3, \"\", \"\");\n" + 
2283
		"		new X(3, \"\", \"\");\n" +
2283
		"		new X(\"\", 3, \"\", \"\");\n" + 
2284
		"		new X(\"\", 3, \"\", \"\");\n" +
2284
		"	}\n" + 
2285
		"	}\n" +
2285
		"}\n"
2286
		"}\n"
2286
	);
2287
	);
2287
}
2288
}
Lines 2300-2307 Link Here
2300
	IMethod method = selectMethod(workingCopies[0], "X", 3);
2301
	IMethod method = selectMethod(workingCopies[0], "X", 3);
2301
	search(method, REFERENCES);
2302
	search(method, REFERENCES);
2302
	assertSearchResults(
2303
	assertSearchResults(
2303
		"src/b84724/Z.java void b84724.Z.foo() [new X()] EXACT_MATCH\n" + 
2304
		"src/b84724/Z.java void b84724.Z.foo() [new X()] EXACT_MATCH\n" +
2304
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\")] EXACT_MATCH\n" + 
2305
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\")] EXACT_MATCH\n" +
2305
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\", null)] EXACT_MATCH"
2306
		"src/b84724/Z.java void b84724.Z.foo() [new X(\"\", \"\", null)] EXACT_MATCH"
2306
	);
2307
	);
2307
}
2308
}
Lines 2332-2357 Link Here
2332
	resultCollector.showRule = true;
2333
	resultCollector.showRule = true;
2333
	workingCopies = new ICompilationUnit[3];
2334
	workingCopies = new ICompilationUnit[3];
2334
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84727/A.java",
2335
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b84727/A.java",
2335
		"package b84727;\n" + 
2336
		"package b84727;\n" +
2336
		"public interface A {\n" + 
2337
		"public interface A {\n" +
2337
		"	Set<Set<Exception>> getXYZ(List<Set<Exception>> arg);\n" + 
2338
		"	Set<Set<Exception>> getXYZ(List<Set<Exception>> arg);\n" +
2338
		"	void getXYZ(String s);\n" + 
2339
		"	void getXYZ(String s);\n" +
2339
		"}\n"
2340
		"}\n"
2340
		);
2341
		);
2341
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84727/X.java",
2342
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b84727/X.java",
2342
		"package b84727;\n" + 
2343
		"package b84727;\n" +
2343
		"public class X {\n" + 
2344
		"public class X {\n" +
2344
		"	A a;\n" + 
2345
		"	A a;\n" +
2345
		"	void foo() {\n" + 
2346
		"	void foo() {\n" +
2346
		"		a.getXYZ(new ArrayList());\n" + 
2347
		"		a.getXYZ(new ArrayList());\n" +
2347
		"		a.getXYZ(\"\");\n" + 
2348
		"		a.getXYZ(\"\");\n" +
2348
		"	}\n" + 
2349
		"	}\n" +
2349
		"}\n"
2350
		"}\n"
2350
		);
2351
		);
2351
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b84727/List.java",
2352
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b84727/List.java",
2352
		"package b84727;\n" + 
2353
		"package b84727;\n" +
2353
		"public interface List<E> {}\n" + 
2354
		"public interface List<E> {}\n" +
2354
		"interface Set<E> {}\n" + 
2355
		"interface Set<E> {}\n" +
2355
		"class ArrayList<E> implements List<E> {}"
2356
		"class ArrayList<E> implements List<E> {}"
2356
	);
2357
	);
2357
}
2358
}
Lines 2384-2399 Link Here
2384
	resultCollector.showRule = true;
2385
	resultCollector.showRule = true;
2385
	workingCopies = new ICompilationUnit[1];
2386
	workingCopies = new ICompilationUnit[1];
2386
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b85810/Test.java",
2387
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b85810/Test.java",
2387
		"package b85810;\n" + 
2388
		"package b85810;\n" +
2388
		"public class Test<E> implements In<Test<E>> {\n" + 
2389
		"public class Test<E> implements In<Test<E>> {\n" +
2389
		"	E e;\n" + 
2390
		"	E e;\n" +
2390
		"}\n" +
2391
		"}\n" +
2391
		"interface In<T> {}\n"
2392
		"interface In<T> {}\n"
2392
		);
2393
		);
2393
	ITypeParameter param = selectTypeParameter(workingCopies[0], "E");
2394
	ITypeParameter param = selectTypeParameter(workingCopies[0], "E");
2394
	search(param, REFERENCES);
2395
	search(param, REFERENCES);
2395
	assertSearchResults(
2396
	assertSearchResults(
2396
		"src/b85810/Test.java b85810.Test [E] EXACT_MATCH\n" + 
2397
		"src/b85810/Test.java b85810.Test [E] EXACT_MATCH\n" +
2397
		"src/b85810/Test.java b85810.Test.e [E] EXACT_MATCH"
2398
		"src/b85810/Test.java b85810.Test.e [E] EXACT_MATCH"
2398
	);
2399
	);
2399
}
2400
}
Lines 2406-2430 Link Here
2406
	resultCollector.showRule = true;
2407
	resultCollector.showRule = true;
2407
	workingCopies = new ICompilationUnit[3];
2408
	workingCopies = new ICompilationUnit[3];
2408
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86596/aa/link/A.java",
2409
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86596/aa/link/A.java",
2409
		"package b86596.aa.link;\n" + 
2410
		"package b86596.aa.link;\n" +
2410
		"public interface A {}\n"
2411
		"public interface A {}\n"
2411
	);
2412
	);
2412
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86596/bb/Link.java",
2413
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86596/bb/Link.java",
2413
		"package b86596.bb;\n" + 
2414
		"package b86596.bb;\n" +
2414
		"public class Link{}\n"
2415
		"public class Link{}\n"
2415
	);
2416
	);
2416
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b86596/cc/X.java",
2417
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b86596/cc/X.java",
2417
		"package b86596.cc;\n" + 
2418
		"package b86596.cc;\n" +
2418
		"import b86596.aa.link.A;\n" + 
2419
		"import b86596.aa.link.A;\n" +
2419
		"import b86596.bb.Link;\n" + 
2420
		"import b86596.bb.Link;\n" +
2420
		"public class X {\n" + 
2421
		"public class X {\n" +
2421
		"	A a;\n" + 
2422
		"	A a;\n" +
2422
		"	Link l;\n" + 
2423
		"	Link l;\n" +
2423
		"}\n"
2424
		"}\n"
2424
	);
2425
	);
2425
	search("Link", TYPE, REFERENCES, SearchPattern.R_EXACT_MATCH);
2426
	search("Link", TYPE, REFERENCES, SearchPattern.R_EXACT_MATCH);
2426
	assertSearchResults(
2427
	assertSearchResults(
2427
		"src/b86596/cc/X.java [Link] EXACT_RAW_MATCH\n" + 
2428
		"src/b86596/cc/X.java [Link] EXACT_RAW_MATCH\n" +
2428
		"src/b86596/cc/X.java b86596.cc.X.l [Link] EXACT_MATCH"
2429
		"src/b86596/cc/X.java b86596.cc.X.l [Link] EXACT_MATCH"
2429
	);
2430
	);
2430
}
2431
}
Lines 2437-2461 Link Here
2437
	resultCollector.showRule = true;
2438
	resultCollector.showRule = true;
2438
	workingCopies = new ICompilationUnit[2];
2439
	workingCopies = new ICompilationUnit[2];
2439
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86642/A.java",
2440
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86642/A.java",
2440
		"package b86642;\n" + 
2441
		"package b86642;\n" +
2441
		"class A {\n" + 
2442
		"class A {\n" +
2442
		"	public void m() {}\n" + 
2443
		"	public void m() {}\n" +
2443
		"	protected void f(A a){}\n" + 
2444
		"	protected void f(A a){}\n" +
2444
		"}\n"
2445
		"}\n"
2445
	);
2446
	);
2446
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86642/B.java",
2447
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86642/B.java",
2447
		"package b86642;\n" + 
2448
		"package b86642;\n" +
2448
		"public class B extends A{\n" + 
2449
		"public class B extends A{\n" +
2449
		"	protected void f(A a){\n" + 
2450
		"	protected void f(A a){\n" +
2450
		"		a.m();\n" + 
2451
		"		a.m();\n" +
2451
		"	}\n" + 
2452
		"	}\n" +
2452
		"}\n"
2453
		"}\n"
2453
	);
2454
	);
2454
	IType type = workingCopies[0].getType("A");
2455
	IType type = workingCopies[0].getType("A");
2455
	search(type, REFERENCES);
2456
	search(type, REFERENCES);
2456
	assertSearchResults(
2457
	assertSearchResults(
2457
		"src/b86642/A.java void b86642.A.f(A) [A] EXACT_MATCH\n" + 
2458
		"src/b86642/A.java void b86642.A.f(A) [A] EXACT_MATCH\n" +
2458
		"src/b86642/B.java b86642.B [A] EXACT_MATCH\n" + 
2459
		"src/b86642/B.java b86642.B [A] EXACT_MATCH\n" +
2459
		"src/b86642/B.java void b86642.B.f(A) [A] EXACT_MATCH"
2460
		"src/b86642/B.java void b86642.B.f(A) [A] EXACT_MATCH"
2460
	);
2461
	);
2461
}
2462
}
Lines 2468-2474 Link Here
2468
	IMethod method = type.getMethod("m86293", new String[0]);
2469
	IMethod method = type.getMethod("m86293", new String[0]);
2469
	search(method, DECLARATIONS);
2470
	search(method, DECLARATIONS);
2470
	assertSearchResults(
2471
	assertSearchResults(
2471
		"lib/b86293.jar void <anonymous>.m86293() EXACT_MATCH\n" + 
2472
		"lib/b86293.jar void <anonymous>.m86293() EXACT_MATCH\n" +
2472
		"lib/b86293.jar void I86293.m86293() EXACT_MATCH"
2473
		"lib/b86293.jar void I86293.m86293() EXACT_MATCH"
2473
	);
2474
	);
2474
}
2475
}
Lines 2481-2497 Link Here
2481
	resultCollector.showInsideDoc = true;
2482
	resultCollector.showInsideDoc = true;
2482
	workingCopies = new ICompilationUnit[2];
2483
	workingCopies = new ICompilationUnit[2];
2483
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86380/package-info.java",
2484
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b86380/package-info.java",
2484
		"/**\n" + 
2485
		"/**\n" +
2485
		" * @see Annot#field\n" + 
2486
		" * @see Annot#field\n" +
2486
		" */\n" + 
2487
		" */\n" +
2487
		"@Annot(value=11)\n" + 
2488
		"@Annot(value=11)\n" +
2488
		"package b86380;\n"
2489
		"package b86380;\n"
2489
	);
2490
	);
2490
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86380/Test.java",
2491
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b86380/Test.java",
2491
		"package b86380;\n" + 
2492
		"package b86380;\n" +
2492
		"@Annot(12) public class Test {\n" + 
2493
		"@Annot(12) public class Test {\n" +
2493
		"	public int field = Annot.field;\n" + 
2494
		"	public int field = Annot.field;\n" +
2494
		"	public void foo() {}\n" + 
2495
		"	public void foo() {}\n" +
2495
		"}\n"
2496
		"}\n"
2496
	);
2497
	);
2497
}
2498
}
Lines 2502-2510 Link Here
2502
	IType type = unit.getType("Annot");
2503
	IType type = unit.getType("Annot");
2503
	search(type, REFERENCES);
2504
	search(type, REFERENCES);
2504
	assertSearchResults(
2505
	assertSearchResults(
2505
		"src/b86380/Test.java b86380.Test [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2506
		"src/b86380/Test.java b86380.Test [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2506
		"src/b86380/Test.java b86380.Test.field [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2507
		"src/b86380/Test.java b86380.Test.field [Annot] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2507
		"src/b86380/package-info.java [Annot] EXACT_MATCH INSIDE_JAVADOC\n" + 
2508
		"src/b86380/package-info.java [Annot] EXACT_MATCH INSIDE_JAVADOC\n" +
2508
		"src/b86380/package-info.java [Annot] EXACT_MATCH OUTSIDE_JAVADOC"
2509
		"src/b86380/package-info.java [Annot] EXACT_MATCH OUTSIDE_JAVADOC"
2509
	);
2510
	);
2510
}
2511
}
Lines 2516-2522 Link Here
2516
	assertEquals("Invalid number of methods", 1, methods.length);
2517
	assertEquals("Invalid number of methods", 1, methods.length);
2517
	search(methods[0], REFERENCES);
2518
	search(methods[0], REFERENCES);
2518
	assertSearchResults(
2519
	assertSearchResults(
2519
		"src/b86380/Test.java b86380.Test [12] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2520
		"src/b86380/Test.java b86380.Test [12] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2520
		"src/b86380/package-info.java [value] EXACT_MATCH OUTSIDE_JAVADOC"
2521
		"src/b86380/package-info.java [value] EXACT_MATCH OUTSIDE_JAVADOC"
2521
	);
2522
	);
2522
}
2523
}
Lines 2528-2534 Link Here
2528
	assertEquals("Invalid number of fields", 1, fields.length);
2529
	assertEquals("Invalid number of fields", 1, fields.length);
2529
	search(fields[0], REFERENCES);
2530
	search(fields[0], REFERENCES);
2530
	assertSearchResults(
2531
	assertSearchResults(
2531
		"src/b86380/Test.java b86380.Test.field [field] EXACT_MATCH OUTSIDE_JAVADOC\n" + 
2532
		"src/b86380/Test.java b86380.Test.field [field] EXACT_MATCH OUTSIDE_JAVADOC\n" +
2532
		"src/b86380/package-info.java [field] EXACT_MATCH INSIDE_JAVADOC"
2533
		"src/b86380/package-info.java [field] EXACT_MATCH INSIDE_JAVADOC"
2533
	);
2534
	);
2534
}
2535
}
Lines 2541-2573 Link Here
2541
	resultCollector.showRule = true;
2542
	resultCollector.showRule = true;
2542
	workingCopies = new ICompilationUnit[2];
2543
	workingCopies = new ICompilationUnit[2];
2543
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88174/Test.java",
2544
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88174/Test.java",
2544
		"package b88174;\n" + 
2545
		"package b88174;\n" +
2545
		"public enum Test {\n" + 
2546
		"public enum Test {\n" +
2546
		"  a {\n" + 
2547
		"  a {\n" +
2547
		"    int getTheValue() { // not found\n" + 
2548
		"    int getTheValue() { // not found\n" +
2548
		"      return 0;\n" + 
2549
		"      return 0;\n" +
2549
		"    }\n" + 
2550
		"    }\n" +
2550
		"  };\n" + 
2551
		"  };\n" +
2551
		"  abstract int getTheValue();\n" + 
2552
		"  abstract int getTheValue();\n" +
2552
		"}\n"
2553
		"}\n"
2553
	);
2554
	);
2554
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88174/X.java",
2555
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88174/X.java",
2555
		"package b88174;\n" + 
2556
		"package b88174;\n" +
2556
		"public class X {\n" + 
2557
		"public class X {\n" +
2557
		"  X x = new X() {\n" + 
2558
		"  X x = new X() {\n" +
2558
		"    int getTheValue() {\n" + 
2559
		"    int getTheValue() {\n" +
2559
		"      return 0;\n" + 
2560
		"      return 0;\n" +
2560
		"    }\n" + 
2561
		"    }\n" +
2561
		"  };\n" + 
2562
		"  };\n" +
2562
		"  int getTheValue() { return 0; }\n" + 
2563
		"  int getTheValue() { return 0; }\n" +
2563
		"}\n"
2564
		"}\n"
2564
	);
2565
	);
2565
	IMethod method = workingCopies[0].getType("Test").getMethod("getTheValue", new String[0]);
2566
	IMethod method = workingCopies[0].getType("Test").getMethod("getTheValue", new String[0]);
2566
	search(method, DECLARATIONS | IGNORE_DECLARING_TYPE);
2567
	search(method, DECLARATIONS | IGNORE_DECLARING_TYPE);
2567
	assertSearchResults(
2568
	assertSearchResults(
2568
		"src/b88174/Test.java int b88174.Test.a:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" + 
2569
		"src/b88174/Test.java int b88174.Test.a:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" +
2569
		"src/b88174/Test.java int b88174.Test.getTheValue() [getTheValue] EXACT_MATCH\n" + 
2570
		"src/b88174/Test.java int b88174.Test.getTheValue() [getTheValue] EXACT_MATCH\n" +
2570
		"src/b88174/X.java int b88174.X.x:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" + 
2571
		"src/b88174/X.java int b88174.X.x:<anonymous>#1.getTheValue() [getTheValue] EXACT_MATCH\n" +
2571
		"src/b88174/X.java int b88174.X.getTheValue() [getTheValue] EXACT_MATCH"
2572
		"src/b88174/X.java int b88174.X.getTheValue() [getTheValue] EXACT_MATCH"
2572
	);
2573
	);
2573
}
2574
}
Lines 2583-2589 Link Here
2583
	assertEquals("Wrong number of parameters", 1, parameters.length);
2584
	assertEquals("Wrong number of parameters", 1, parameters.length);
2584
	search(parameters[0], REFERENCES);
2585
	search(parameters[0], REFERENCES);
2585
	assertSearchResults(
2586
	assertSearchResults(
2586
		"lib/b87627.jar b87627.List EXACT_MATCH\n" + 
2587
		"lib/b87627.jar b87627.List EXACT_MATCH\n" +
2587
		"lib/b87627.jar boolean b87627.List.addAll(b87627.Collection<? extends E>) EXACT_MATCH"
2588
		"lib/b87627.jar boolean b87627.List.addAll(b87627.Collection<? extends E>) EXACT_MATCH"
2588
	);
2589
	);
2589
}
2590
}
Lines 2595-2622 Link Here
2595
public void testBug88300() throws CoreException {
2596
public void testBug88300() throws CoreException {
2596
	workingCopies = new ICompilationUnit[3];
2597
	workingCopies = new ICompilationUnit[3];
2597
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2598
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2598
		"package b88300;\n" + 
2599
		"package b88300;\n" +
2599
		"public class SubClass extends SuperClass {\n" + 
2600
		"public class SubClass extends SuperClass {\n" +
2600
		"	private void aMethod(String x) {\n" + 
2601
		"	private void aMethod(String x) {\n" +
2601
		"	}\n" + 
2602
		"	}\n" +
2602
		"	public void aMethod(Object x) {\n" + 
2603
		"	public void aMethod(Object x) {\n" +
2603
		"	}\n" + 
2604
		"	}\n" +
2604
		"}\n"
2605
		"}\n"
2605
	);
2606
	);
2606
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2607
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2607
		"package b88300;\n" + 
2608
		"package b88300;\n" +
2608
		"public class SuperClass {\n" + 
2609
		"public class SuperClass {\n" +
2609
		"    public void aMethod(Object x) {\n" + 
2610
		"    public void aMethod(Object x) {\n" +
2610
		"    }\n" + 
2611
		"    }\n" +
2611
		"}\n"
2612
		"}\n"
2612
		);
2613
		);
2613
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2614
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2614
		"package b88300;\n" + 
2615
		"package b88300;\n" +
2615
		"public class User {\n" + 
2616
		"public class User {\n" +
2616
		"    public void methodUsingSubClassMethod() {\n" + 
2617
		"    public void methodUsingSubClassMethod() {\n" +
2617
		"        SuperClass user = new SubClass();\n" + 
2618
		"        SuperClass user = new SubClass();\n" +
2618
		"        user.aMethod(new Object());\n" + 
2619
		"        user.aMethod(new Object());\n" +
2619
		"    }\n" + 
2620
		"    }\n" +
2620
		"}\n"
2621
		"}\n"
2621
	);
2622
	);
2622
	IType type = workingCopies[0].getType("SubClass");
2623
	IType type = workingCopies[0].getType("SubClass");
Lines 2628-2655 Link Here
2628
public void testBug88300b() throws CoreException {
2629
public void testBug88300b() throws CoreException {
2629
	workingCopies = new ICompilationUnit[3];
2630
	workingCopies = new ICompilationUnit[3];
2630
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2631
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/SubClass.java",
2631
		"package b88300;\n" + 
2632
		"package b88300;\n" +
2632
		"public class SubClass extends SuperClass {\n" + 
2633
		"public class SubClass extends SuperClass {\n" +
2633
		"	public void aMethod(Object x) {\n" + 
2634
		"	public void aMethod(Object x) {\n" +
2634
		"	}\n" + 
2635
		"	}\n" +
2635
		"	private void aMethod(String x) {\n" + 
2636
		"	private void aMethod(String x) {\n" +
2636
		"	}\n" + 
2637
		"	}\n" +
2637
		"}\n"
2638
		"}\n"
2638
	);
2639
	);
2639
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2640
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/SuperClass.java",
2640
		"package b88300;\n" + 
2641
		"package b88300;\n" +
2641
		"public class SuperClass {\n" + 
2642
		"public class SuperClass {\n" +
2642
		"    public void aMethod(Object x) {\n" + 
2643
		"    public void aMethod(Object x) {\n" +
2643
		"    }\n" + 
2644
		"    }\n" +
2644
		"}\n"
2645
		"}\n"
2645
		);
2646
		);
2646
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2647
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/User.java",
2647
		"package b88300;\n" + 
2648
		"package b88300;\n" +
2648
		"public class User {\n" + 
2649
		"public class User {\n" +
2649
		"    public void methodUsingSubClassMethod() {\n" + 
2650
		"    public void methodUsingSubClassMethod() {\n" +
2650
		"        SuperClass user = new SubClass();\n" + 
2651
		"        SuperClass user = new SubClass();\n" +
2651
		"        user.aMethod(new Object());\n" + 
2652
		"        user.aMethod(new Object());\n" +
2652
		"    }\n" + 
2653
		"    }\n" +
2653
		"}\n"
2654
		"}\n"
2654
	);
2655
	);
2655
	IType type = workingCopies[0].getType("SubClass");
2656
	IType type = workingCopies[0].getType("SubClass");
Lines 2661-2703 Link Here
2661
public void testBug88300c() throws CoreException {
2662
public void testBug88300c() throws CoreException {
2662
	workingCopies = new ICompilationUnit[3];
2663
	workingCopies = new ICompilationUnit[3];
2663
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/ConditionalFlowInfo.java",
2664
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/ConditionalFlowInfo.java",
2664
		"package b88300.not.fixed;\n" + 
2665
		"package b88300.not.fixed;\n" +
2665
		"public class ConditionalFlowInfo extends FlowInfo {\n" + 
2666
		"public class ConditionalFlowInfo extends FlowInfo {\n" +
2666
		"	public FlowInfo info;\n" + 
2667
		"	public FlowInfo info;\n" +
2667
		"	ConditionalFlowInfo(FlowInfo info){\n" + 
2668
		"	ConditionalFlowInfo(FlowInfo info){\n" +
2668
		"		this.info = info;\n" + 
2669
		"		this.info = info;\n" +
2669
		"	}\n" + 
2670
		"	}\n" +
2670
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" + 
2671
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" +
2671
		"		info.markAsDefinitelyNull(field);\n" + 
2672
		"		info.markAsDefinitelyNull(field);\n" +
2672
		"	}\n" + 
2673
		"	}\n" +
2673
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" + 
2674
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" +
2674
		"		info.markAsDefinitelyNull(local);\n" + 
2675
		"		info.markAsDefinitelyNull(local);\n" +
2675
		"	}\n" + 
2676
		"	}\n" +
2676
		"}\n"
2677
		"}\n"
2677
	);
2678
	);
2678
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/FlowInfo.java",
2679
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/FlowInfo.java",
2679
		"package b88300.not.fixed;\n" + 
2680
		"package b88300.not.fixed;\n" +
2680
		"\n" + 
2681
		"\n" +
2681
		"class FieldBinding {\n" + 
2682
		"class FieldBinding {\n" +
2682
		"	int id;\n" + 
2683
		"	int id;\n" +
2683
		"}\n" + 
2684
		"}\n" +
2684
		"class LocalVariableBinding extends FieldBinding {}\n" + 
2685
		"class LocalVariableBinding extends FieldBinding {}\n" +
2685
		"\n" + 
2686
		"\n" +
2686
		"public abstract class FlowInfo {\n" + 
2687
		"public abstract class FlowInfo {\n" +
2687
		"	abstract public void markAsDefinitelyNull(LocalVariableBinding local);\n" + 
2688
		"	abstract public void markAsDefinitelyNull(LocalVariableBinding local);\n" +
2688
		"	abstract public void markAsDefinitelyNull(FieldBinding field);\n" + 
2689
		"	abstract public void markAsDefinitelyNull(FieldBinding field);\n" +
2689
		"}\n"
2690
		"}\n"
2690
		);
2691
		);
2691
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/UnconditionalFlowInfo.java",
2692
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b88300/not/fixed/UnconditionalFlowInfo.java",
2692
		"package b88300.not.fixed;\n" + 
2693
		"package b88300.not.fixed;\n" +
2693
		"public class UnconditionalFlowInfo extends FlowInfo {\n" + 
2694
		"public class UnconditionalFlowInfo extends FlowInfo {\n" +
2694
		"	final private void markAsDefinitelyNull(int position) {}\n" + 
2695
		"	final private void markAsDefinitelyNull(int position) {}\n" +
2695
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" + 
2696
		"	public void markAsDefinitelyNull(FieldBinding field) {\n" +
2696
		"		markAsDefinitelyNull(field.id);\n" + 
2697
		"		markAsDefinitelyNull(field.id);\n" +
2697
		"	}\n" + 
2698
		"	}\n" +
2698
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" + 
2699
		"	public void markAsDefinitelyNull(LocalVariableBinding local) {\n" +
2699
		"		markAsDefinitelyNull(local.id + 1);\n" + 
2700
		"		markAsDefinitelyNull(local.id + 1);\n" +
2700
		"	}\n" + 
2701
		"	}\n" +
2701
		"}\n"
2702
		"}\n"
2702
		);
2703
		);
2703
	IType type = workingCopies[2].getType("UnconditionalFlowInfo");
2704
	IType type = workingCopies[2].getType("UnconditionalFlowInfo");
Lines 2714-2749 Link Here
2714
public void testBug89686() throws CoreException {
2715
public void testBug89686() throws CoreException {
2715
	workingCopies = new ICompilationUnit[1];
2716
	workingCopies = new ICompilationUnit[1];
2716
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2717
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2717
		"package b89686;\n" + 
2718
		"package b89686;\n" +
2718
		"public enum Color {\n" + 
2719
		"public enum Color {\n" +
2719
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" + 
2720
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" +
2720
		"    Color() {}\n" + 
2721
		"    Color() {}\n" +
2721
		"    Color(int i) {}\n" + 
2722
		"    Color(int i) {}\n" +
2722
		"}"
2723
		"}"
2723
	);
2724
	);
2724
	IType type = workingCopies[0].getType("Color");
2725
	IType type = workingCopies[0].getType("Color");
2725
	IMethod method = type.getMethod("Color", new String[0]);
2726
	IMethod method = type.getMethod("Color", new String[0]);
2726
	search(method, REFERENCES);
2727
	search(method, REFERENCES);
2727
	assertSearchResults(
2728
	assertSearchResults(
2728
		"src/b89686/A.java b89686.Color.RED [RED] EXACT_MATCH\n" + 
2729
		"src/b89686/A.java b89686.Color.RED [RED] EXACT_MATCH\n" +
2729
		"src/b89686/A.java b89686.Color.GREEN [GREEN()] EXACT_MATCH"
2730
		"src/b89686/A.java b89686.Color.GREEN [GREEN()] EXACT_MATCH"
2730
	);
2731
	);
2731
}
2732
}
2732
public void testBug89686b() throws CoreException {
2733
public void testBug89686b() throws CoreException {
2733
	workingCopies = new ICompilationUnit[1];
2734
	workingCopies = new ICompilationUnit[1];
2734
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2735
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b89686/A.java",
2735
		"package b89686;\n" + 
2736
		"package b89686;\n" +
2736
		"public enum Color {\n" + 
2737
		"public enum Color {\n" +
2737
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" + 
2738
		"    RED, GREEN(), BLUE(17), PINK((1+(1+1))) {/*anon*/};\n" +
2738
		"    Color() {}\n" + 
2739
		"    Color() {}\n" +
2739
		"    Color(int i) {}\n" + 
2740
		"    Color(int i) {}\n" +
2740
		"}"
2741
		"}"
2741
	);
2742
	);
2742
	IType type = workingCopies[0].getType("Color");
2743
	IType type = workingCopies[0].getType("Color");
2743
	IMethod method = type.getMethod("Color", new String[] { "I"} );
2744
	IMethod method = type.getMethod("Color", new String[] { "I"} );
2744
	search(method, REFERENCES);
2745
	search(method, REFERENCES);
2745
	assertSearchResults(
2746
	assertSearchResults(
2746
		"src/b89686/A.java b89686.Color.BLUE [BLUE(17)] EXACT_MATCH\n" + 
2747
		"src/b89686/A.java b89686.Color.BLUE [BLUE(17)] EXACT_MATCH\n" +
2747
		"src/b89686/A.java b89686.Color.PINK [PINK((1+(1+1)))] EXACT_MATCH"
2748
		"src/b89686/A.java b89686.Color.PINK [PINK((1+(1+1)))] EXACT_MATCH"
2748
	);
2749
	);
2749
}
2750
}
Lines 2757-2763 Link Here
2757
	IMethod method = classFile.getMethod("foo", new String[0]);
2758
	IMethod method = classFile.getMethod("foo", new String[0]);
2758
	search(method, ALL_OCCURRENCES);
2759
	search(method, ALL_OCCURRENCES);
2759
	assertSearchResults(
2760
	assertSearchResults(
2760
		"lib/b89848/Test.class void b89848.Test.foo() EXACT_MATCH\n" + 
2761
		"lib/b89848/Test.class void b89848.Test.foo() EXACT_MATCH\n" +
2761
		"lib/b89848/X.class void b89848.X.foo() EXACT_MATCH"
2762
		"lib/b89848/X.class void b89848.X.foo() EXACT_MATCH"
2762
	);
2763
	);
2763
}
2764
}
Lines 2770-2789 Link Here
2770
	workingCopies = new ICompilationUnit[3];
2771
	workingCopies = new ICompilationUnit[3];
2771
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90779/A.java",
2772
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90779/A.java",
2772
		"package b90779;\n" +
2773
		"package b90779;\n" +
2773
		"public class A {\n" + 
2774
		"public class A {\n" +
2774
		"	public A() {}\n" + 
2775
		"	public A() {}\n" +
2775
		"}\n"
2776
		"}\n"
2776
	);
2777
	);
2777
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b90779/B.java",
2778
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b90779/B.java",
2778
		"package b90779;\n" +
2779
		"package b90779;\n" +
2779
		"public class B {\n" + 
2780
		"public class B {\n" +
2780
		"	public B() {}\n" + 
2781
		"	public B() {}\n" +
2781
		"}\n"
2782
		"}\n"
2782
	);
2783
	);
2783
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b90779/C.java",
2784
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b90779/C.java",
2784
		"package b90779;\n" +
2785
		"package b90779;\n" +
2785
		"public class C {\n" + 
2786
		"public class C {\n" +
2786
		"	public C() {}\n" + 
2787
		"	public C() {}\n" +
2787
		"}\n"
2788
		"}\n"
2788
	);
2789
	);
2789
	IType type = workingCopies[0].getType("A");
2790
	IType type = workingCopies[0].getType("A");
Lines 2803-2817 Link Here
2803
	workingCopies = new ICompilationUnit[1];
2804
	workingCopies = new ICompilationUnit[1];
2804
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90915/X.java",
2805
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b90915/X.java",
2805
		"package b90915;\n" +
2806
		"package b90915;\n" +
2806
		"import g5.m.def.Single;\n" + 
2807
		"import g5.m.def.Single;\n" +
2807
		"public class X<T> {\n" + 
2808
		"public class X<T> {\n" +
2808
		"	void foo() {\n" + 
2809
		"	void foo() {\n" +
2809
		"		Single<String> single = new Single<String>() {\n" + 
2810
		"		Single<String> single = new Single<String>() {\n" +
2810
		"			public <U> String generic(U u) { return \"\"; }\n" + 
2811
		"			public <U> String generic(U u) { return \"\"; }\n" +
2811
		"			public void paramTypesArgs(Single<String> gs) {}\n" + 
2812
		"			public void paramTypesArgs(Single<String> gs) {}\n" +
2812
		"		};\n" + 
2813
		"		};\n" +
2813
		"		single.paramTypesArgs(null);\n" + 
2814
		"		single.paramTypesArgs(null);\n" +
2814
		"	}\n" + 
2815
		"	}\n" +
2815
		"}\n"
2816
		"}\n"
2816
	);
2817
	);
2817
	IType type = workingCopies[0].getType("X");
2818
	IType type = workingCopies[0].getType("X");
Lines 2834-2849 Link Here
2834
public void testBug91542() throws CoreException {
2835
public void testBug91542() throws CoreException {
2835
	workingCopies = new ICompilationUnit[1];
2836
	workingCopies = new ICompilationUnit[1];
2836
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91542/A.java",
2837
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91542/A.java",
2837
		"package b91542;\n" + 
2838
		"package b91542;\n" +
2838
		"\n" + 
2839
		"\n" +
2839
		"class A<T> {\n" + 
2840
		"class A<T> {\n" +
2840
		"	void a(A<T> a){}\n" + 
2841
		"	void a(A<T> a){}\n" +
2841
		"}\n" + 
2842
		"}\n" +
2842
		"\n" + 
2843
		"\n" +
2843
		"class B<T> extends A<T> {\n" + 
2844
		"class B<T> extends A<T> {\n" +
2844
		"	protected void foo() { \n" + 
2845
		"	protected void foo() { \n" +
2845
		"		a(this);\n" + 
2846
		"		a(this);\n" +
2846
		"	}\n" + 
2847
		"	}\n" +
2847
		"}"
2848
		"}"
2848
	);
2849
	);
2849
	IType type = workingCopies[0].getType("B");
2850
	IType type = workingCopies[0].getType("B");
Lines 2861-2900 Link Here
2861
public void testBug91078() throws CoreException {
2862
public void testBug91078() throws CoreException {
2862
	workingCopies = new ICompilationUnit[3];
2863
	workingCopies = new ICompilationUnit[3];
2863
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91078/test/Example.java",
2864
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b91078/test/Example.java",
2864
		"package b91078.test;\n" + 
2865
		"package b91078.test;\n" +
2865
		"import b91078.util.HashMap;\n" + 
2866
		"import b91078.util.HashMap;\n" +
2866
		"import b91078.util.Map;\n" + 
2867
		"import b91078.util.Map;\n" +
2867
		"public class Example {\n" + 
2868
		"public class Example {\n" +
2868
		"    public Map.Entry logAll(Object obj) {\n" + 
2869
		"    public Map.Entry logAll(Object obj) {\n" +
2869
		"    	if (obj instanceof b91078.util.HashMap) {\n" + 
2870
		"    	if (obj instanceof b91078.util.HashMap) {\n" +
2870
		"    		HashMap map = (HashMap) obj;\n" + 
2871
		"    		HashMap map = (HashMap) obj;\n" +
2871
		"            return map.entry;\n" + 
2872
		"            return map.entry;\n" +
2872
		"    	}\n" + 
2873
		"    	}\n" +
2873
		"    	if (obj instanceof b91078.util.HashMap.Entry) {\n" + 
2874
		"    	if (obj instanceof b91078.util.HashMap.Entry) {\n" +
2874
		"            Map.Entry entry = (Map.Entry) obj;\n" + 
2875
		"            Map.Entry entry = (Map.Entry) obj;\n" +
2875
		"            return entry;\n" + 
2876
		"            return entry;\n" +
2876
		"    	}\n" + 
2877
		"    	}\n" +
2877
		"    	return null;\n" + 
2878
		"    	return null;\n" +
2878
		"    }\n" + 
2879
		"    }\n" +
2879
		"}\n"
2880
		"}\n"
2880
	);
2881
	);
2881
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/HashMap.java",
2882
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/HashMap.java",
2882
		"package b91078.util;\n" + 
2883
		"package b91078.util;\n" +
2883
		"public class HashMap implements Map {\n" + 
2884
		"public class HashMap implements Map {\n" +
2884
		"	public Entry entry;\n" + 
2885
		"	public Entry entry;\n" +
2885
		"}\n"
2886
		"}\n"
2886
	);
2887
	);
2887
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/Map.java",
2888
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b91078/util/Map.java",
2888
		"package b91078.util;\n" + 
2889
		"package b91078.util;\n" +
2889
		"public interface Map {\n" + 
2890
		"public interface Map {\n" +
2890
		"	class Entry{}\n" + 
2891
		"	class Entry{}\n" +
2891
		"}\n"
2892
		"}\n"
2892
	);
2893
	);
2893
	search("*", PACKAGE, REFERENCES, getJavaSearchWorkingCopiesScope(workingCopies[0]));
2894
	search("*", PACKAGE, REFERENCES, getJavaSearchWorkingCopiesScope(workingCopies[0]));
2894
	assertSearchResults(
2895
	assertSearchResults(
2895
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" + 
2896
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" +
2896
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" + 
2897
		"src/b91078/test/Example.java [b91078.util] EXACT_MATCH\n" +
2897
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH\n" + 
2898
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH\n" +
2898
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH"
2899
		"src/b91078/test/Example.java Map.Entry b91078.test.Example.logAll(Object) [b91078.util] EXACT_MATCH"
2899
	);
2900
	);
2900
}
2901
}
Lines 2918-2935 Link Here
2918
	);
2919
	);
2919
	assertSearchResults(
2920
	assertSearchResults(
2920
		"Unexpected all type names",
2921
		"Unexpected all type names",
2921
		"java.lang.CharSequence\n" + 
2922
		"java.lang.CharSequence\n" +
2922
		"java.lang.Class\n" + 
2923
		"java.lang.Class\n" +
2923
		"java.lang.CloneNotSupportedException\n" + 
2924
		"java.lang.CloneNotSupportedException\n" +
2924
		"java.lang.Comparable\n" + 
2925
		"java.lang.Comparable\n" +
2925
		"java.lang.Enum\n" + 
2926
		"java.lang.Enum\n" +
2926
		"java.lang.Error\n" + 
2927
		"java.lang.Error\n" +
2927
		"java.lang.Exception\n" + 
2928
		"java.lang.Exception\n" +
2928
		"java.lang.IllegalMonitorStateException\n" + 
2929
		"java.lang.IllegalMonitorStateException\n" +
2929
		"java.lang.InterruptedException\n" + 
2930
		"java.lang.InterruptedException\n" +
2930
		"java.lang.Object\n" + 
2931
		"java.lang.Object\n" +
2931
		"java.lang.RuntimeException\n" + 
2932
		"java.lang.RuntimeException\n" +
2932
		"java.lang.String\n" + 
2933
		"java.lang.String\n" +
2933
		"java.lang.Throwable",
2934
		"java.lang.Throwable",
2934
		requestor);
2935
		requestor);
2935
}
2936
}
Lines 2948-2959 Link Here
2948
	);
2949
	);
2949
	assertSearchResults(
2950
	assertSearchResults(
2950
		"Unexpected all type names",
2951
		"Unexpected all type names",
2951
		"java.lang.CloneNotSupportedException\n" + 
2952
		"java.lang.CloneNotSupportedException\n" +
2952
		"java.lang.Exception\n" + 
2953
		"java.lang.Exception\n" +
2953
		"java.lang.IllegalMonitorStateException\n" + 
2954
		"java.lang.IllegalMonitorStateException\n" +
2954
		"java.lang.InterruptedException\n" + 
2955
		"java.lang.InterruptedException\n" +
2955
		"java.lang.RuntimeException\n" + 
2956
		"java.lang.RuntimeException\n" +
2956
		"java.lang.annotation.Annotation\n" + 
2957
		"java.lang.annotation.Annotation\n" +
2957
		"java.lang.annotation.Retention",
2958
		"java.lang.annotation.Retention",
2958
		requestor);
2959
		requestor);
2959
}
2960
}
Lines 2972-2987 Link Here
2972
	);
2973
	);
2973
	assertSearchResults(
2974
	assertSearchResults(
2974
		"Unexpected all type names",
2975
		"Unexpected all type names",
2975
		"Test$Inner\n" + 
2976
		"Test$Inner\n" +
2976
		"b123679.test.Test\n" + 
2977
		"b123679.test.Test\n" +
2977
		"b123679.test.Test$StaticClass\n" + 
2978
		"b123679.test.Test$StaticClass\n" +
2978
		"b123679.test.Test$StaticClass$Member\n" + 
2979
		"b123679.test.Test$StaticClass$Member\n" +
2979
		"b124645.test.A_124645\n" + 
2980
		"b124645.test.A_124645\n" +
2980
		"b124645.test.X_124645\n" + 
2981
		"b124645.test.X_124645\n" +
2981
		"b127628.Test127628$Member127628\n" + 
2982
		"b127628.Test127628$Member127628\n" +
2982
		"b95794.Test$Color\n" + 
2983
		"b95794.Test$Color\n" +
2983
		"pack.age.Test$Member\n" + 
2984
		"pack.age.Test$Member\n" +
2984
		"test.Test$StaticClass\n" + 
2985
		"test.Test$StaticClass\n" +
2985
		"test.Test$StaticClass$Member",
2986
		"test.Test$StaticClass$Member",
2986
		requestor);
2987
		requestor);
2987
}
2988
}
Lines 3000-3006 Link Here
3000
	);
3001
	);
3001
	assertSearchResults(
3002
	assertSearchResults(
3002
		"Unexpected all type names",
3003
		"Unexpected all type names",
3003
		"b124645.test.X_124645\n" + 
3004
		"b124645.test.X_124645\n" +
3004
		"b124645.xy.X_124645",
3005
		"b124645.xy.X_124645",
3005
		requestor);
3006
		requestor);
3006
}
3007
}
Lines 3013-3022 Link Here
3013
	resultCollector.showRule = true;
3014
	resultCollector.showRule = true;
3014
	workingCopies = new ICompilationUnit[1];
3015
	workingCopies = new ICompilationUnit[1];
3015
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b92944/Test.java",
3016
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b92944/Test.java",
3016
		"package b92944;\n" + 
3017
		"package b92944;\n" +
3017
		"interface B92944_I {}\n" + 
3018
		"interface B92944_I {}\n" +
3018
		"enum B92944_E {}\n" + 
3019
		"enum B92944_E {}\n" +
3019
		"@interface B92944_A {}\n" + 
3020
		"@interface B92944_A {}\n" +
3020
		"public class B92944 {}\n"
3021
		"public class B92944 {}\n"
3021
	);
3022
	);
3022
}
3023
}
Lines 3037-3045 Link Here
3037
	);
3038
	);
3038
	assertSearchResults(
3039
	assertSearchResults(
3039
		"Unexpected all type names",
3040
		"Unexpected all type names",
3040
		"b92944.B92944\n" + 
3041
		"b92944.B92944\n" +
3041
		"b92944.B92944_A\n" + 
3042
		"b92944.B92944_A\n" +
3042
		"b92944.B92944_E\n" + 
3043
		"b92944.B92944_E\n" +
3043
		"b92944.B92944_I",
3044
		"b92944.B92944_I",
3044
		requestor);
3045
		requestor);
3045
}
3046
}
Lines 3082-3088 Link Here
3082
	// Remove enum and annotation
3083
	// Remove enum and annotation
3083
	assertSearchResults(
3084
	assertSearchResults(
3084
		"Unexpected all type names",
3085
		"Unexpected all type names",
3085
		"b92944.B92944\n" + 
3086
		"b92944.B92944\n" +
3086
		"b92944.B92944_I",  // Annotation is an interface in java.lang
3087
		"b92944.B92944_I",  // Annotation is an interface in java.lang
3087
		requestor);
3088
		requestor);
3088
}
3089
}
Lines 3104-3110 Link Here
3104
	// Remove interface and annotation
3105
	// Remove interface and annotation
3105
	assertSearchResults(
3106
	assertSearchResults(
3106
		"Unexpected all type names",
3107
		"Unexpected all type names",
3107
		"b92944.B92944\n" + 
3108
		"b92944.B92944\n" +
3108
		"b92944.B92944_E",
3109
		"b92944.B92944_E",
3109
		requestor);
3110
		requestor);
3110
}
3111
}
Lines 3172-3178 Link Here
3172
/**
3173
/**
3173
 * Bug 93392: [1.5][search][annot] search for annotation elements does not seem to be implemented yet
3174
 * Bug 93392: [1.5][search][annot] search for annotation elements does not seem to be implemented yet
3174
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=93392"
3175
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=93392"
3175
 * 
3176
 *
3176
 * Note that this test valid also:
3177
 * Note that this test valid also:
3177
 * Bug 94062: [1.5][search][annot] search for annotation elements incorrect match range
3178
 * Bug 94062: [1.5][search][annot] search for annotation elements incorrect match range
3178
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=94062"
3179
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=94062"
Lines 3182-3205 Link Here
3182
	collector.showAccuracy = true;
3183
	collector.showAccuracy = true;
3183
	workingCopies = new ICompilationUnit[1];
3184
	workingCopies = new ICompilationUnit[1];
3184
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b93392/Test.java",
3185
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b93392/Test.java",
3185
		"package b93392;\n" + 
3186
		"package b93392;\n" +
3186
		"@interface Annot {\n" + 
3187
		"@interface Annot {\n" +
3187
		"	int value();\n" +
3188
		"	int value();\n" +
3188
		"}\n" +
3189
		"}\n" +
3189
		"@Annot(41)\n" + 
3190
		"@Annot(41)\n" +
3190
		"public class Test {\n" + 
3191
		"public class Test {\n" +
3191
		"	@Annot(21)\n" + 
3192
		"	@Annot(21)\n" +
3192
		"	int bar;\n" + 
3193
		"	int bar;\n" +
3193
		"	@Annot(10)\n" + 
3194
		"	@Annot(10)\n" +
3194
		"	public void foo() {}\n" + 
3195
		"	public void foo() {}\n" +
3195
		"}\n"
3196
		"}\n"
3196
	);
3197
	);
3197
	IType type = selectType(workingCopies[0], "Annot");
3198
	IType type = selectType(workingCopies[0], "Annot");
3198
	IMethod method = type.getMethod("value", new String[0]);
3199
	IMethod method = type.getMethod("value", new String[0]);
3199
	search(method, REFERENCES, getJavaSearchScopeBugs(), collector);
3200
	search(method, REFERENCES, getJavaSearchScopeBugs(), collector);
3200
	assertSearchResults(
3201
	assertSearchResults(
3201
		"src/b93392/Test.java b93392.Test [41] EXACT_MATCH\n" + 
3202
		"src/b93392/Test.java b93392.Test [41] EXACT_MATCH\n" +
3202
		"src/b93392/Test.java b93392.Test.bar [21] EXACT_MATCH\n" + 
3203
		"src/b93392/Test.java b93392.Test.bar [21] EXACT_MATCH\n" +
3203
		"src/b93392/Test.java void b93392.Test.foo() [10] EXACT_MATCH",
3204
		"src/b93392/Test.java void b93392.Test.foo() [10] EXACT_MATCH",
3204
		collector
3205
		collector
3205
	);
3206
	);
Lines 3228-3246 Link Here
3228
public void testBug94160() throws CoreException {
3229
public void testBug94160() throws CoreException {
3229
	workingCopies = new ICompilationUnit[1];
3230
	workingCopies = new ICompilationUnit[1];
3230
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94160/Test.java",
3231
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94160/Test.java",
3231
		"package b94160;\n" + 
3232
		"package b94160;\n" +
3232
		"public class Test {\n" + 
3233
		"public class Test {\n" +
3233
		"	<T> List<T> generateList(Class<T> clazz) {\n" + 
3234
		"	<T> List<T> generateList(Class<T> clazz) {\n" +
3234
		"		return new ArrayList<T>();\n" + 
3235
		"		return new ArrayList<T>();\n" +
3235
		"	}\n" + 
3236
		"	}\n" +
3236
		"}\n" + 
3237
		"}\n" +
3237
		"class CTest extends Test {\n" + 
3238
		"class CTest extends Test {\n" +
3238
		"	private List<String> myList = generateList(String.class);\n" + 
3239
		"	private List<String> myList = generateList(String.class);\n" +
3239
		"	CTest() {\n" + 
3240
		"	CTest() {\n" +
3240
		"		myList = new ArrayList<String>();\n" + 
3241
		"		myList = new ArrayList<String>();\n" +
3241
		"	}\n" + 
3242
		"	}\n" +
3242
		"}\n" + 
3243
		"}\n" +
3243
		"interface List<E> {}\n" + 
3244
		"interface List<E> {}\n" +
3244
		"class ArrayList<E> implements List<E> {}"
3245
		"class ArrayList<E> implements List<E> {}"
3245
	);
3246
	);
3246
	IType type = workingCopies[0].getType("CTest");
3247
	IType type = workingCopies[0].getType("CTest");
Lines 3258-3269 Link Here
3258
public void testBug94389() throws CoreException {
3259
public void testBug94389() throws CoreException {
3259
	workingCopies = new ICompilationUnit[1];
3260
	workingCopies = new ICompilationUnit[1];
3260
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94389/Test.java",
3261
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94389/Test.java",
3261
		"package b94389;\n" + 
3262
		"package b94389;\n" +
3262
		"public class Test {\n" + 
3263
		"public class Test {\n" +
3263
		"	public void foo() {}\n" + 
3264
		"	public void foo() {}\n" +
3264
		"	public void foo() {}\n" + 
3265
		"	public void foo() {}\n" +
3265
		"	public void foo() {}\n" + 
3266
		"	public void foo() {}\n" +
3266
		"	public void foo() {}\n" + 
3267
		"	public void foo() {}\n" +
3267
		"}\n"
3268
		"}\n"
3268
	);
3269
	);
3269
	IType type = workingCopies[0].getType("Test");
3270
	IType type = workingCopies[0].getType("Test");
Lines 3273-3290 Link Here
3273
	// Perform search on each duplicate method
3274
	// Perform search on each duplicate method
3274
	IJavaSearchScope scope = getJavaSearchScopeBugs();
3275
	IJavaSearchScope scope = getJavaSearchScopeBugs();
3275
	for (int m=0; m<methodsLength; m++) {
3276
	for (int m=0; m<methodsLength; m++) {
3276
		
3277
3277
		// Search method declaration
3278
		// Search method declaration
3278
		TestCollector collector = new TestCollector();
3279
		TestCollector collector = new TestCollector();
3279
		search(methods[m], DECLARATIONS, scope, collector);
3280
		search(methods[m], DECLARATIONS, scope, collector);
3280
		assertSearchResults(
3281
		assertSearchResults(
3281
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" + 
3282
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" +
3282
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" + 
3283
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" +
3283
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" + 
3284
			"src/b94389/Test.java void b94389.Test.foo() [foo]\n" +
3284
			"src/b94389/Test.java void b94389.Test.foo() [foo]",
3285
			"src/b94389/Test.java void b94389.Test.foo() [foo]",
3285
			collector
3286
			collector
3286
		);
3287
		);
3287
	
3288
3288
		// Verify that all matches have correct occurence count
3289
		// Verify that all matches have correct occurence count
3289
		int size = collector.matches.size();
3290
		int size = collector.matches.size();
3290
		for (int i=0; i<size; i++) {
3291
		for (int i=0; i<size; i++) {
Lines 3300-3314 Link Here
3300
public void testBug94718() throws CoreException {
3301
public void testBug94718() throws CoreException {
3301
	workingCopies = new ICompilationUnit[2];
3302
	workingCopies = new ICompilationUnit[2];
3302
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94718/SetUp.java",
3303
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b94718/SetUp.java",
3303
		"package b94718;\n" + 
3304
		"package b94718;\n" +
3304
		"public @interface SetUp {\n" + 
3305
		"public @interface SetUp {\n" +
3305
		"	String value() {}\n" + 
3306
		"	String value() {}\n" +
3306
		"}\n"
3307
		"}\n"
3307
	);
3308
	);
3308
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b94718/Test.java",
3309
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b94718/Test.java",
3309
		"package b94718;\n" + 
3310
		"package b94718;\n" +
3310
		"@SetUp(\"howdy\")\n" + 
3311
		"@SetUp(\"howdy\")\n" +
3311
		"public class Test {\n" + 
3312
		"public class Test {\n" +
3312
		"}\n"
3313
		"}\n"
3313
	);
3314
	);
3314
	IType type = workingCopies[1].getType("SetUp");
3315
	IType type = workingCopies[1].getType("SetUp");
Lines 3330-3336 Link Here
3330
	// search constructor second level member
3331
	// search constructor second level member
3331
	search(type.getMethods()[0], REFERENCES);
3332
	search(type.getMethods()[0], REFERENCES);
3332
	assertSearchResults(
3333
	assertSearchResults(
3333
		"lib/b95152.jar b95152.T1() EXACT_MATCH\n" + 
3334
		"lib/b95152.jar b95152.T1() EXACT_MATCH\n" +
3334
		"lib/b95152.jar b95152.T1() EXACT_MATCH"
3335
		"lib/b95152.jar b95152.T1() EXACT_MATCH"
3335
	);
3336
	);
3336
}
3337
}
Lines 3342-3348 Link Here
3342
	// search constructor second level member
3343
	// search constructor second level member
3343
	search(type.getMethods()[0], REFERENCES);
3344
	search(type.getMethods()[0], REFERENCES);
3344
	assertSearchResults(
3345
	assertSearchResults(
3345
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH\n" + 
3346
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH\n" +
3346
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH"
3347
		"lib/b95152.jar b95152.T2(int) EXACT_MATCH"
3347
	);
3348
	);
3348
}
3349
}
Lines 3354-3360 Link Here
3354
	// search constructor second level member
3355
	// search constructor second level member
3355
	search(type.getMethods()[0], REFERENCES);
3356
	search(type.getMethods()[0], REFERENCES);
3356
	assertSearchResults(
3357
	assertSearchResults(
3357
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH\n" + 
3358
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH\n" +
3358
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH"
3359
		"lib/b95152.jar b95152.T3(b95152.T3) EXACT_MATCH"
3359
	);
3360
	);
3360
}
3361
}
Lines 3366-3392 Link Here
3366
	// search constructor second level member
3367
	// search constructor second level member
3367
	search(type.getMethods()[0], REFERENCES);
3368
	search(type.getMethods()[0], REFERENCES);
3368
	assertSearchResults(
3369
	assertSearchResults(
3369
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH\n" + 
3370
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH\n" +
3370
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH"
3371
		"lib/b95152.jar b95152.T4(b95152.T4, java.lang.String) EXACT_MATCH"
3371
	);
3372
	);
3372
}
3373
}
3373
public void testBug95152_wc01() throws CoreException {
3374
public void testBug95152_wc01() throws CoreException {
3374
	workingCopies = new ICompilationUnit[1];
3375
	workingCopies = new ICompilationUnit[1];
3375
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3376
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3376
		"package b95152;\n" + 
3377
		"package b95152;\n" +
3377
		"public class T {\n" + 
3378
		"public class T {\n" +
3378
		"	T2 c2;\n" + 
3379
		"	T2 c2;\n" +
3379
		"	T2.T3 c3;\n" + 
3380
		"	T2.T3 c3;\n" +
3380
		"	T() {\n" + 
3381
		"	T() {\n" +
3381
		"		c2 = new T2();\n" + 
3382
		"		c2 = new T2();\n" +
3382
		"		c3 = c2.new T3();\n" + 
3383
		"		c3 = c2.new T3();\n" +
3383
		"	}\n" + 
3384
		"	}\n" +
3384
		"	class T2 {\n" + 
3385
		"	class T2 {\n" +
3385
		"		T2() {}\n" + 
3386
		"		T2() {}\n" +
3386
		"		class T3 {\n" + 
3387
		"		class T3 {\n" +
3387
		"			T3() {}\n" + 
3388
		"			T3() {}\n" +
3388
		"		}\n" + 
3389
		"		}\n" +
3389
		"	}\n" + 
3390
		"	}\n" +
3390
		"}\n"
3391
		"}\n"
3391
	);
3392
	);
3392
	// search constructor first level member
3393
	// search constructor first level member
Lines 3404-3423 Link Here
3404
public void testBug95152_wc02() throws CoreException {
3405
public void testBug95152_wc02() throws CoreException {
3405
	workingCopies = new ICompilationUnit[1];
3406
	workingCopies = new ICompilationUnit[1];
3406
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3407
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3407
		"package b95152;\n" + 
3408
		"package b95152;\n" +
3408
		"public class T {\n" + 
3409
		"public class T {\n" +
3409
		"	T2 c2;\n" + 
3410
		"	T2 c2;\n" +
3410
		"	T2.T3 c3;\n" + 
3411
		"	T2.T3 c3;\n" +
3411
		"	T(int c) {\n" + 
3412
		"	T(int c) {\n" +
3412
		"		c2 = new T2(c);\n" + 
3413
		"		c2 = new T2(c);\n" +
3413
		"		c3 = c2.new T3(c);\n" + 
3414
		"		c3 = c2.new T3(c);\n" +
3414
		"	}\n" + 
3415
		"	}\n" +
3415
		"	class T2 {\n" + 
3416
		"	class T2 {\n" +
3416
		"		T2(int x) {}\n" + 
3417
		"		T2(int x) {}\n" +
3417
		"		class T3 {\n" + 
3418
		"		class T3 {\n" +
3418
		"			T3(int x) {}\n" + 
3419
		"			T3(int x) {}\n" +
3419
		"		}\n" + 
3420
		"		}\n" +
3420
		"	}\n" + 
3421
		"	}\n" +
3421
		"}\n"
3422
		"}\n"
3422
	);
3423
	);
3423
	// search constructor first level member
3424
	// search constructor first level member
Lines 3435-3454 Link Here
3435
public void testBug95152_wc03() throws CoreException {
3436
public void testBug95152_wc03() throws CoreException {
3436
	workingCopies = new ICompilationUnit[1];
3437
	workingCopies = new ICompilationUnit[1];
3437
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3438
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3438
		"package b95152;\n" + 
3439
		"package b95152;\n" +
3439
		"public class T {\n" + 
3440
		"public class T {\n" +
3440
		"	T2 c2;\n" + 
3441
		"	T2 c2;\n" +
3441
		"	T2.T3 c3;\n" + 
3442
		"	T2.T3 c3;\n" +
3442
		"	T(T c) {\n" + 
3443
		"	T(T c) {\n" +
3443
		"		c2 = new T2(c);\n" + 
3444
		"		c2 = new T2(c);\n" +
3444
		"		c3 = c2.new T3(c2);\n" + 
3445
		"		c3 = c2.new T3(c2);\n" +
3445
		"	}\n" + 
3446
		"	}\n" +
3446
		"	class T2 {\n" + 
3447
		"	class T2 {\n" +
3447
		"		T2(T c) {}\n" + 
3448
		"		T2(T c) {}\n" +
3448
		"		class T3 {\n" + 
3449
		"		class T3 {\n" +
3449
		"			T3(T2 c) {}\n" + 
3450
		"			T3(T2 c) {}\n" +
3450
		"		}\n" + 
3451
		"		}\n" +
3451
		"	}\n" + 
3452
		"	}\n" +
3452
		"}\n"
3453
		"}\n"
3453
	);
3454
	);
3454
	// search constructor first level member
3455
	// search constructor first level member
Lines 3466-3485 Link Here
3466
public void testBug95152_wc04() throws CoreException {
3467
public void testBug95152_wc04() throws CoreException {
3467
	workingCopies = new ICompilationUnit[1];
3468
	workingCopies = new ICompilationUnit[1];
3468
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3469
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b95152/T.java",
3469
		"package b95152;\n" + 
3470
		"package b95152;\n" +
3470
		"public class T {\n" + 
3471
		"public class T {\n" +
3471
		"	T2 c2;\n" + 
3472
		"	T2 c2;\n" +
3472
		"	T2.T3 c3;\n" + 
3473
		"	T2.T3 c3;\n" +
3473
		"	T(T c, String str) {\n" + 
3474
		"	T(T c, String str) {\n" +
3474
		"		c2 = new T2(c, str);\n" + 
3475
		"		c2 = new T2(c, str);\n" +
3475
		"		c3 = c2.new T3(c2, str);\n" + 
3476
		"		c3 = c2.new T3(c2, str);\n" +
3476
		"	}\n" + 
3477
		"	}\n" +
3477
		"	class T2 {\n" + 
3478
		"	class T2 {\n" +
3478
		"		T2(T c, String str) {}\n" + 
3479
		"		T2(T c, String str) {}\n" +
3479
		"		class T3 {\n" + 
3480
		"		class T3 {\n" +
3480
		"			T3(T2 c, String str) {}\n" + 
3481
		"			T3(T2 c, String str) {}\n" +
3481
		"		}\n" + 
3482
		"		}\n" +
3482
		"	}\n" + 
3483
		"	}\n" +
3483
		"}\n"
3484
		"}\n"
3484
	);
3485
	);
3485
	// search constructor first level member
3486
	// search constructor first level member
Lines 3490-3496 Link Here
3490
	search(type.getMethods()[0], REFERENCES);
3491
	search(type.getMethods()[0], REFERENCES);
3491
	// verify searches results
3492
	// verify searches results
3492
	assertSearchResults(
3493
	assertSearchResults(
3493
		"src/b95152/T.java b95152.T(T, String) [new T2(c, str)] EXACT_MATCH\n" + 
3494
		"src/b95152/T.java b95152.T(T, String) [new T2(c, str)] EXACT_MATCH\n" +
3494
		"src/b95152/T.java b95152.T(T, String) [c2.new T3(c2, str)] EXACT_MATCH"
3495
		"src/b95152/T.java b95152.T(T, String) [c2.new T3(c2, str)] EXACT_MATCH"
3495
	);
3496
	);
3496
}
3497
}
Lines 3502-3520 Link Here
3502
public void testBug95794() throws CoreException {
3503
public void testBug95794() throws CoreException {
3503
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3504
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3504
	IType type = unit.getType("Test");
3505
	IType type = unit.getType("Test");
3505
	
3506
3506
	// Verify matches
3507
	// Verify matches
3507
	TestCollector occurencesCollector = new TestCollector();
3508
	TestCollector occurencesCollector = new TestCollector();
3508
	occurencesCollector.showAccuracy = true;
3509
	occurencesCollector.showAccuracy = true;
3509
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3510
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3510
	assertSearchResults(
3511
	assertSearchResults(
3511
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" + 
3512
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" +
3512
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" + 
3513
		"src/b95794/Test.java [b95794.Test] EXACT_MATCH\n" +
3513
		"src/b95794/Test.java b95794.Test [Test] EXACT_MATCH\n" + 
3514
		"src/b95794/Test.java b95794.Test [Test] EXACT_MATCH\n" +
3514
		"src/b95794/Test.java b95794.Test.there [Test] EXACT_MATCH",
3515
		"src/b95794/Test.java b95794.Test.there [Test] EXACT_MATCH",
3515
		occurencesCollector
3516
		occurencesCollector
3516
	);
3517
	);
3517
	
3518
3518
	// Verify with references matches
3519
	// Verify with references matches
3519
	TestCollector referencesCollector = new TestCollector();
3520
	TestCollector referencesCollector = new TestCollector();
3520
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
3521
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
Lines 3524-3542 Link Here
3524
	resultCollector.showRule = true;
3525
	resultCollector.showRule = true;
3525
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3526
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3526
	IType type = unit.getType("Test").getType("Color");
3527
	IType type = unit.getType("Test").getType("Color");
3527
	
3528
3528
	// Verify matches
3529
	// Verify matches
3529
	TestCollector occurencesCollector = new TestCollector();
3530
	TestCollector occurencesCollector = new TestCollector();
3530
	occurencesCollector.showAccuracy = true;
3531
	occurencesCollector.showAccuracy = true;
3531
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3532
	search(type, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3532
	assertSearchResults(
3533
	assertSearchResults(
3533
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" + 
3534
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" +
3534
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" + 
3535
		"src/b95794/Test.java [b95794.Test.Color] EXACT_MATCH\n" +
3535
		"src/b95794/Test.java void b95794.Test.main(String[]) [Color] EXACT_MATCH\n" + 
3536
		"src/b95794/Test.java void b95794.Test.main(String[]) [Color] EXACT_MATCH\n" +
3536
		"src/b95794/Test.java b95794.Test$Color [Color] EXACT_MATCH",
3537
		"src/b95794/Test.java b95794.Test$Color [Color] EXACT_MATCH",
3537
		occurencesCollector
3538
		occurencesCollector
3538
	);
3539
	);
3539
	
3540
3540
	// Verify with references matches
3541
	// Verify with references matches
3541
	TestCollector referencesCollector = new TestCollector();
3542
	TestCollector referencesCollector = new TestCollector();
3542
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
3543
	search(type, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
Lines 3546-3563 Link Here
3546
	resultCollector.showRule = true;
3547
	resultCollector.showRule = true;
3547
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3548
	ICompilationUnit unit = getCompilationUnit("JavaSearchBugs", "src", "b95794", "Test.java");
3548
	IField field = unit.getType("Test").getType("Color").getField("WHITE");
3549
	IField field = unit.getType("Test").getType("Color").getField("WHITE");
3549
	
3550
3550
	// Verify matches
3551
	// Verify matches
3551
	TestCollector occurencesCollector = new TestCollector();
3552
	TestCollector occurencesCollector = new TestCollector();
3552
	occurencesCollector.showAccuracy = true;
3553
	occurencesCollector.showAccuracy = true;
3553
	search(field, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3554
	search(field, ALL_OCCURRENCES, getJavaSearchScopeBugs(), occurencesCollector);
3554
	assertSearchResults(
3555
	assertSearchResults(
3555
		"src/b95794/Test.java [WHITE] EXACT_MATCH\n" + 
3556
		"src/b95794/Test.java [WHITE] EXACT_MATCH\n" +
3556
		"src/b95794/Test.java void b95794.Test.main(String[]) [WHITE] EXACT_MATCH\n" + 
3557
		"src/b95794/Test.java void b95794.Test.main(String[]) [WHITE] EXACT_MATCH\n" +
3557
		"src/b95794/Test.java b95794.Test$Color.WHITE [WHITE] EXACT_MATCH",
3558
		"src/b95794/Test.java b95794.Test$Color.WHITE [WHITE] EXACT_MATCH",
3558
		occurencesCollector
3559
		occurencesCollector
3559
	);
3560
	);
3560
	
3561
3561
	// Verify with references matches
3562
	// Verify with references matches
3562
	TestCollector referencesCollector = new TestCollector();
3563
	TestCollector referencesCollector = new TestCollector();
3563
	search(field, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
3564
	search(field, REFERENCES, getJavaSearchScopeBugs(), referencesCollector);
Lines 3571-3586 Link Here
3571
public void testBug96761() throws CoreException {
3572
public void testBug96761() throws CoreException {
3572
	workingCopies = new ICompilationUnit[1];
3573
	workingCopies = new ICompilationUnit[1];
3573
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96761/Generic.java",
3574
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96761/Generic.java",
3574
		"package b96761;\n" + 
3575
		"package b96761;\n" +
3575
		"public class Generic<G> {\n" + 
3576
		"public class Generic<G> {\n" +
3576
		"	void take(G g) {\n" + 
3577
		"	void take(G g) {\n" +
3577
		"	}\n" + 
3578
		"	}\n" +
3578
		"}\n" + 
3579
		"}\n" +
3579
		"class Impl extends Generic<RuntimeException> {\n" + 
3580
		"class Impl extends Generic<RuntimeException> {\n" +
3580
		"	void take(InterruptedException g) {\n" + 
3581
		"	void take(InterruptedException g) {\n" +
3581
		"	}\n" + 
3582
		"	}\n" +
3582
		"	void take(RuntimeException g) {\n" + 
3583
		"	void take(RuntimeException g) {\n" +
3583
		"	}\n" + 
3584
		"	}\n" +
3584
		"}"
3585
		"}"
3585
	);
3586
	);
3586
	IType type = workingCopies[0].getType("Generic");
3587
	IType type = workingCopies[0].getType("Generic");
Lines 3596-3653 Link Here
3596
public void testBug96763() throws CoreException {
3597
public void testBug96763() throws CoreException {
3597
	workingCopies = new ICompilationUnit[1];
3598
	workingCopies = new ICompilationUnit[1];
3598
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3599
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3599
		"package b96763;\n" + 
3600
		"package b96763;\n" +
3600
		"class Test<T> {\n" + 
3601
		"class Test<T> {\n" +
3601
		"    public void first(Exception num) {}\n" + 
3602
		"    public void first(Exception num) {}\n" +
3602
		"    public void second(T t) {}\n" + 
3603
		"    public void second(T t) {}\n" +
3603
		"}\n" + 
3604
		"}\n" +
3604
		"class Sub extends Test<Exception> {\n" + 
3605
		"class Sub extends Test<Exception> {\n" +
3605
		"    public void first(Exception num) {}\n" + 
3606
		"    public void first(Exception num) {}\n" +
3606
		"    public void second(Exception t) {}\n" + 
3607
		"    public void second(Exception t) {}\n" +
3607
		"}\n"
3608
		"}\n"
3608
	);
3609
	);
3609
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3610
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3610
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3611
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3611
	assertSearchResults(
3612
	assertSearchResults(
3612
		"src/b96763/Test.java void b96763.Test.first(Exception) [first] EXACT_MATCH\n" + 
3613
		"src/b96763/Test.java void b96763.Test.first(Exception) [first] EXACT_MATCH\n" +
3613
		"src/b96763/Test.java void b96763.Sub.first(Exception) [first] EXACT_MATCH"
3614
		"src/b96763/Test.java void b96763.Sub.first(Exception) [first] EXACT_MATCH"
3614
	);
3615
	);
3615
}
3616
}
3616
public void testBug96763b() throws CoreException {
3617
public void testBug96763b() throws CoreException {
3617
	workingCopies = new ICompilationUnit[1];
3618
	workingCopies = new ICompilationUnit[1];
3618
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3619
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3619
		"package b96763;\n" + 
3620
		"package b96763;\n" +
3620
		"class Test<T> {\n" + 
3621
		"class Test<T> {\n" +
3621
		"    public void first(Exception num) {}\n" + 
3622
		"    public void first(Exception num) {}\n" +
3622
		"    public void second(T t) {}\n" + 
3623
		"    public void second(T t) {}\n" +
3623
		"}\n" + 
3624
		"}\n" +
3624
		"class Sub extends Test<Exception> {\n" + 
3625
		"class Sub extends Test<Exception> {\n" +
3625
		"    public void first(Exception num) {}\n" + 
3626
		"    public void first(Exception num) {}\n" +
3626
		"    public void second(Exception t) {}\n" + 
3627
		"    public void second(Exception t) {}\n" +
3627
		"}\n"
3628
		"}\n"
3628
	);
3629
	);
3629
	IMethod method = workingCopies[0].getType("Sub").getMethods()[1];
3630
	IMethod method = workingCopies[0].getType("Sub").getMethods()[1];
3630
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3631
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3631
	assertSearchResults(
3632
	assertSearchResults(
3632
		"src/b96763/Test.java void b96763.Test.second(T) [second] EXACT_MATCH\n" + 
3633
		"src/b96763/Test.java void b96763.Test.second(T) [second] EXACT_MATCH\n" +
3633
		"src/b96763/Test.java void b96763.Sub.second(Exception) [second] EXACT_MATCH"
3634
		"src/b96763/Test.java void b96763.Sub.second(Exception) [second] EXACT_MATCH"
3634
	);
3635
	);
3635
}
3636
}
3636
public void testBug96763c() throws CoreException {
3637
public void testBug96763c() throws CoreException {
3637
	workingCopies = new ICompilationUnit[1];
3638
	workingCopies = new ICompilationUnit[1];
3638
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3639
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b96763/Test.java",
3639
		"package b96763;\n" + 
3640
		"package b96763;\n" +
3640
		"public class Test<T> {\n" + 
3641
		"public class Test<T> {\n" +
3641
		"	void methodT(T t) {}\n" + 
3642
		"	void methodT(T t) {}\n" +
3642
		"}\n" + 
3643
		"}\n" +
3643
		"class Sub<X> extends Test<X> {\n" + 
3644
		"class Sub<X> extends Test<X> {\n" +
3644
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" + 
3645
		"	void methodT(X x) {} // overrides Super#methodT(T)\n" +
3645
		"}\n"
3646
		"}\n"
3646
	);
3647
	);
3647
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3648
	IMethod method = workingCopies[0].getType("Sub").getMethods()[0];
3648
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3649
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE);
3649
	assertSearchResults(
3650
	assertSearchResults(
3650
		"src/b96763/Test.java void b96763.Test.methodT(T) [methodT] EXACT_MATCH\n" + 
3651
		"src/b96763/Test.java void b96763.Test.methodT(T) [methodT] EXACT_MATCH\n" +
3651
		"src/b96763/Test.java void b96763.Sub.methodT(X) [methodT] EXACT_MATCH"
3652
		"src/b96763/Test.java void b96763.Sub.methodT(X) [methodT] EXACT_MATCH"
3652
	);
3653
	);
3653
}
3654
}
Lines 3660-3687 Link Here
3660
	workingCopies = new ICompilationUnit[1];
3661
	workingCopies = new ICompilationUnit[1];
3661
	this.resultCollector.showRule = true;
3662
	this.resultCollector.showRule = true;
3662
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97087/Bug.java",
3663
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97087/Bug.java",
3663
		"package b97087;\n" + 
3664
		"package b97087;\n" +
3664
		"public class Bug<Type> {\n" + 
3665
		"public class Bug<Type> {\n" +
3665
		"    Bug(){}\n" + 
3666
		"    Bug(){}\n" +
3666
		"}\n" + 
3667
		"class Foo extends Bug<String>{\n" + 
3668
		"    Foo(){}\n" + 
3669
		"}\n" +
3667
		"}\n" +
3670
		"class Bar extends Bug<Exception>{\n" + 
3668
		"class Foo extends Bug<String>{\n" +
3671
		"    Bar(){super();}\n" + 
3669
		"    Foo(){}\n" +
3670
		"}\n" +
3671
		"class Bar extends Bug<Exception>{\n" +
3672
		"    Bar(){super();}\n" +
3672
		"}"
3673
		"}"
3673
	);
3674
	);
3674
	IType type = workingCopies[0].getType("Bug");
3675
	IType type = workingCopies[0].getType("Bug");
3675
	IMethod method= type.getMethods()[0];
3676
	IMethod method= type.getMethods()[0];
3676
	search(method, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3677
	search(method, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3677
	assertSearchResults(
3678
	assertSearchResults(
3678
		"src/b97087/Bug.java b97087.Foo() [Foo] EXACT_MATCH\n" + 
3679
		"src/b97087/Bug.java b97087.Foo() [Foo] EXACT_MATCH\n" +
3679
		"src/b97087/Bug.java b97087.Bar() [super();] ERASURE_MATCH"
3680
		"src/b97087/Bug.java b97087.Bar() [super();] ERASURE_MATCH"
3680
	);
3681
	);
3681
}
3682
}
3682
3683
3683
/**
3684
/**
3684
 * Bug 97120: 
3685
 * Bug 97120:
3685
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=97120"
3686
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=97120"
3686
 */
3687
 */
3687
public void testBug97120() throws CoreException {
3688
public void testBug97120() throws CoreException {
Lines 3701-3707 Link Here
3701
	);
3702
	);
3702
	assertSearchResults(
3703
	assertSearchResults(
3703
		"Unexpected all type names",
3704
		"Unexpected all type names",
3704
		"java.lang.Error\n" + 
3705
		"java.lang.Error\n" +
3705
		"java.lang.Exception",
3706
		"java.lang.Exception",
3706
		requestor
3707
		requestor
3707
	);
3708
	);
Lines 3714-3725 Link Here
3714
public void testBug97322() throws CoreException {
3715
public void testBug97322() throws CoreException {
3715
	workingCopies = new ICompilationUnit[1];
3716
	workingCopies = new ICompilationUnit[1];
3716
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97322/Test.java",
3717
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97322/Test.java",
3717
		"package b97322;\n" + 
3718
		"package b97322;\n" +
3718
		"class Test {\n" + 
3719
		"class Test {\n" +
3719
		"	static void myMethod(int a, String b) {}\n" + 
3720
		"	static void myMethod(int a, String b) {}\n" +
3720
		"	void call() {\n" + 
3721
		"	void call() {\n" +
3721
		"		myMethod(12);\n" + 
3722
		"		myMethod(12);\n" +
3722
		"	}\n" + 
3723
		"	}\n" +
3723
		"}"
3724
		"}"
3724
	);
3725
	);
3725
	IType type = workingCopies[0].getType("Test");
3726
	IType type = workingCopies[0].getType("Test");
Lines 3735-3750 Link Here
3735
public void testBug97547() throws CoreException {
3736
public void testBug97547() throws CoreException {
3736
	workingCopies = new ICompilationUnit[2];
3737
	workingCopies = new ICompilationUnit[2];
3737
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97547/IX.java",
3738
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97547/IX.java",
3738
		"package b97547;\n" + 
3739
		"package b97547;\n" +
3739
		"public interface IX {\n" + 
3740
		"public interface IX {\n" +
3740
		"	public interface IX1 {}\n" + 
3741
		"	public interface IX1 {}\n" +
3741
		"}"
3742
		"}"
3742
	);
3743
	);
3743
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97547/X.java",
3744
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97547/X.java",
3744
		"package b97547;\n" + 
3745
		"package b97547;\n" +
3745
		"import b97547.IX.*;\n" + 
3746
		"import b97547.IX.*;\n" +
3746
		"class X {\n" + 
3747
		"class X {\n" +
3747
		"	IX x;\n" + 
3748
		"	IX x;\n" +
3748
		"}"
3749
		"}"
3749
	);
3750
	);
3750
	IPackageDeclaration[] packages = workingCopies[0].getPackageDeclarations();
3751
	IPackageDeclaration[] packages = workingCopies[0].getPackageDeclarations();
Lines 3762-3791 Link Here
3762
public void testBug97606() throws CoreException {
3763
public void testBug97606() throws CoreException {
3763
	workingCopies = new ICompilationUnit[4];
3764
	workingCopies = new ICompilationUnit[4];
3764
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3765
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3765
		"package b97606.pack.def;\n" + 
3766
		"package b97606.pack.def;\n" +
3766
		"public interface L<E> {}\n"
3767
		"public interface L<E> {}\n"
3767
	);
3768
	);
3768
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3769
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3769
		"package b97606.pack.def;\n" + 
3770
		"package b97606.pack.def;\n" +
3770
		"public class LL<E> implements L<E> {\n" + 
3771
		"public class LL<E> implements L<E> {\n" +
3771
		"	public Object clone() {\n" + 
3772
		"	public Object clone() {\n" +
3772
		"		return null;\n" + 
3773
		"		return null;\n" +
3773
		"	}\n" + 
3774
		"	}\n" +
3774
		"}\n"
3775
		"}\n"
3775
	);
3776
	);
3776
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3777
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3777
		"package b97606.pack.ref;\n" + 
3778
		"package b97606.pack.ref;\n" +
3778
		"public interface K {}\n"
3779
		"public interface K {}\n"
3779
	);
3780
	);
3780
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3781
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3781
		"package b97606.pack.ref;\n" + 
3782
		"package b97606.pack.ref;\n" +
3782
		"public class X implements K {\n" + 
3783
		"public class X implements K {\n" +
3783
		"	private b97606.pack.def.LL sg;\n" + 
3784
		"	private b97606.pack.def.LL sg;\n" +
3784
		"	protected synchronized b97606.pack.def.L<K> getSG() {\n" + 
3785
		"	protected synchronized b97606.pack.def.L<K> getSG() {\n" +
3785
		"		return (sg != null) \n" + 
3786
		"		return (sg != null) \n" +
3786
		"			? (b97606.pack.def.L) sg.clone()\n" + 
3787
		"			? (b97606.pack.def.L) sg.clone()\n" +
3787
		"			: null;\n" + 
3788
		"			: null;\n" +
3788
		"	}\n" + 
3789
		"	}\n" +
3789
		"}\n"
3790
		"}\n"
3790
	);
3791
	);
3791
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
3792
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
Lines 3802-3809 Link Here
3802
		IType type = workingCopies[0].getType("L");
3803
		IType type = workingCopies[0].getType("L");
3803
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3804
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3804
		assertSearchResults(
3805
		assertSearchResults(
3805
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" + 
3806
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" +
3806
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_MATCH\n" + 
3807
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_MATCH\n" +
3807
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_RAW_MATCH"
3808
			"src/b97606/pack/ref/X.java b97606.pack.def.L<K> b97606.pack.ref.X.getSG() [b97606.pack.def.L] ERASURE_RAW_MATCH"
3808
		);
3809
		);
3809
	}
3810
	}
Lines 3814-3844 Link Here
3814
public void testBug97606b() throws CoreException {
3815
public void testBug97606b() throws CoreException {
3815
	workingCopies = new ICompilationUnit[4];
3816
	workingCopies = new ICompilationUnit[4];
3816
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3817
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/L.java",
3817
		"package b97606.pack.def;\n" + 
3818
		"package b97606.pack.def;\n" +
3818
		"public interface L<E> {}\n"
3819
		"public interface L<E> {}\n"
3819
	);
3820
	);
3820
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3821
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/def/LL.java",
3821
		"package b97606.pack.def;\n" + 
3822
		"package b97606.pack.def;\n" +
3822
		"public class LL<E> implements L<E> {\n" + 
3823
		"public class LL<E> implements L<E> {\n" +
3823
		"	public Object clone() {\n" + 
3824
		"	public Object clone() {\n" +
3824
		"		return null;\n" + 
3825
		"		return null;\n" +
3825
		"	}\n" + 
3826
		"	}\n" +
3826
		"}\n"
3827
		"}\n"
3827
	);
3828
	);
3828
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3829
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/K.java",
3829
		"package b97606.pack.ref;\n" + 
3830
		"package b97606.pack.ref;\n" +
3830
		"public interface K {}\n"
3831
		"public interface K {}\n"
3831
	);
3832
	);
3832
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3833
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b97606/pack/ref/X.java",
3833
		"package b97606.pack.ref;\n" + 
3834
		"package b97606.pack.ref;\n" +
3834
		"import b97606.pack.def.*;\n" + 
3835
		"import b97606.pack.def.*;\n" +
3835
		"public class X implements K {\n" + 
3836
		"public class X implements K {\n" +
3836
		"	private LL sg;\n" + 
3837
		"	private LL sg;\n" +
3837
		"	protected synchronized L<K> getSG() {\n" + 
3838
		"	protected synchronized L<K> getSG() {\n" +
3838
		"		return (sg != null) \n" + 
3839
		"		return (sg != null) \n" +
3839
		"			? (L) sg.clone()\n" + 
3840
		"			? (L) sg.clone()\n" +
3840
		"			: null;\n" + 
3841
		"			: null;\n" +
3841
		"	}\n" + 
3842
		"	}\n" +
3842
		"}\n"
3843
		"}\n"
3843
	);
3844
	);
3844
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
3845
	IPath rootPath = new Path("/JavaSearchBugs/src/b97606");
Lines 3855-3862 Link Here
3855
		IType type = workingCopies[0].getType("L");
3856
		IType type = workingCopies[0].getType("L");
3856
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3857
		search(type, REFERENCES, SearchPattern.R_ERASURE_MATCH);
3857
		assertSearchResults(
3858
		assertSearchResults(
3858
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" + 
3859
			"src/b97606/pack/def/LL.java b97606.pack.def.LL [L] ERASURE_MATCH\n" +
3859
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_MATCH\n" + 
3860
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_MATCH\n" +
3860
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_RAW_MATCH"
3861
			"src/b97606/pack/ref/X.java L<K> b97606.pack.ref.X.getSG() [L] ERASURE_RAW_MATCH"
3861
		);
3862
		);
3862
	}
3863
	}
Lines 3872-3905 Link Here
3872
public void testBug97614() throws CoreException {
3873
public void testBug97614() throws CoreException {
3873
	workingCopies = new ICompilationUnit[3];
3874
	workingCopies = new ICompilationUnit[3];
3874
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97614/W.java",
3875
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b97614/W.java",
3875
		"package b97614;\n" + 
3876
		"package b97614;\n" +
3876
		"public class W {\n" + 
3877
		"public class W {\n" +
3877
		"	private final Map<String, Y<?, ? extends b97614.X.XX<?, ?>, ? >> m1 = null;     // (a)\n" + 
3878
		"	private final Map<String, Y<?, ? extends b97614.X.XX<?, ?>, ? >> m1 = null;     // (a)\n" +
3878
		"	public void getStore(final Object o) {\n" + 
3879
		"	public void getStore(final Object o) {\n" +
3879
		"		m1.get(o);     // (b)\n" + 
3880
		"		m1.get(o);     // (b)\n" +
3880
		"	}\n" + 
3881
		"	}\n" +
3881
		"}\n" + 
3882
		"}\n" +
3882
		"interface Map<K, V> {\n" + 
3883
		"interface Map<K, V> {\n" +
3883
		"	V get(Object k);\n" + 
3884
		"	V get(Object k);\n" +
3884
		"}"
3885
		"}"
3885
	);
3886
	);
3886
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97614/X.java",
3887
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b97614/X.java",
3887
		"package b97614;\n" + 
3888
		"package b97614;\n" +
3888
		"import java.io.Serializable;\n" + 
3889
		"import java.io.Serializable;\n" +
3889
		"public interface X<T extends X<T, U, V>, \n" + 
3890
		"public interface X<T extends X<T, U, V>, \n" +
3890
		"				   U extends X.XX<T, V>, \n" + 
3891
		"				   U extends X.XX<T, V>, \n" +
3891
		"				   V extends X.XY> {\n" + 
3892
		"				   V extends X.XY> {\n" +
3892
		"	public interface XX<TT extends X<TT, ?, UU>, \n" + 
3893
		"	public interface XX<TT extends X<TT, ?, UU>, \n" +
3893
		"	                   UU extends X.XY> \n" + 
3894
		"	                   UU extends X.XY> \n" +
3894
		"			extends	Serializable {\n" + 
3895
		"			extends	Serializable {\n" +
3895
		"	}\n" + 
3896
		"	}\n" +
3896
		"	public interface XY extends Serializable {\n" + 
3897
		"	public interface XY extends Serializable {\n" +
3897
		"	}\n" + 
3898
		"	}\n" +
3898
		"}"
3899
		"}"
3899
	);
3900
	);
3900
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97614/Y.java",
3901
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b97614/Y.java",
3901
		"package b97614;\n" + 
3902
		"package b97614;\n" +
3902
		"public class Y<T extends X<T, U, V>, U extends X.XX<T, V>, V extends X.XY> {\n" + 
3903
		"public class Y<T extends X<T, U, V>, U extends X.XX<T, V>, V extends X.XY> {\n" +
3903
		"}\n"
3904
		"}\n"
3904
	);
3905
	);
3905
	IField field = workingCopies[0].getType("W").getField("m1");
3906
	IField field = workingCopies[0].getType("W").getField("m1");
Lines 3916-3934 Link Here
3916
public void testBug98378() throws CoreException {
3917
public void testBug98378() throws CoreException {
3917
	workingCopies = new ICompilationUnit[2];
3918
	workingCopies = new ICompilationUnit[2];
3918
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3919
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3919
		"package b98378;\n" + 
3920
		"package b98378;\n" +
3920
		"public class  X implements java.lang.CharSequence {\n" + 
3921
		"public class  X implements java.lang.CharSequence {\n" +
3921
		"	public int length() {\n" + 
3922
		"	public int length() {\n" +
3922
		"		return 1;\n" + 
3923
		"		return 1;\n" +
3923
		"	}\n" + 
3924
		"	}\n" +
3924
		"}"
3925
		"}"
3925
	);
3926
	);
3926
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3927
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3927
		"package b98378;\n" + 
3928
		"package b98378;\n" +
3928
		"public class Y {\n" + 
3929
		"public class Y {\n" +
3929
		"	public int length() {\n" + 
3930
		"	public int length() {\n" +
3930
		"		return -1;\n" + 
3931
		"		return -1;\n" +
3931
		"	}\n" + 
3932
		"	}\n" +
3932
		"}\n"
3933
		"}\n"
3933
	);
3934
	);
3934
	String jclPath = getExternalJCLPathString("1.5");
3935
	String jclPath = getExternalJCLPathString("1.5");
Lines 3936-3961 Link Here
3936
	IMethod method = type.getMethod("length", new String[] {});
3937
	IMethod method = type.getMethod("length", new String[] {});
3937
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type, this.wcOwner));
3938
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type, this.wcOwner));
3938
	assertSearchResults(
3939
	assertSearchResults(
3939
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" + 
3940
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" +
3940
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3941
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3941
	);
3942
	);
3942
}
3943
}
3943
public void testBug98378b() throws CoreException {
3944
public void testBug98378b() throws CoreException {
3944
	workingCopies = new ICompilationUnit[2];
3945
	workingCopies = new ICompilationUnit[2];
3945
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3946
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b98378/X.java",
3946
		"package b98378;\n" + 
3947
		"package b98378;\n" +
3947
		"public class  X implements java.lang.CharSequence {\n" + 
3948
		"public class  X implements java.lang.CharSequence {\n" +
3948
		"	public int length() {\n" + 
3949
		"	public int length() {\n" +
3949
		"		return 1;\n" + 
3950
		"		return 1;\n" +
3950
		"	}\n" + 
3951
		"	}\n" +
3951
		"}"
3952
		"}"
3952
	);
3953
	);
3953
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3954
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b98378/Y.java",
3954
		"package b98378;\n" + 
3955
		"package b98378;\n" +
3955
		"public class Y {\n" + 
3956
		"public class Y {\n" +
3956
		"	public int length() {\n" + 
3957
		"	public int length() {\n" +
3957
		"		return -1;\n" + 
3958
		"		return -1;\n" +
3958
		"	}\n" + 
3959
		"	}\n" +
3959
		"}\n"
3960
		"}\n"
3960
	);
3961
	);
3961
	String jclPath = getExternalJCLPathString("1.5");
3962
	String jclPath = getExternalJCLPathString("1.5");
Lines 3963-3970 Link Here
3963
	IMethod method = type.getMethod("length", new String[] {});
3964
	IMethod method = type.getMethod("length", new String[] {});
3964
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE, SearchEngine.createHierarchyScope(type, this.wcOwner));
3965
	search(method, DECLARATIONS|IGNORE_DECLARING_TYPE|IGNORE_RETURN_TYPE, SearchEngine.createHierarchyScope(type, this.wcOwner));
3965
	assertSearchResults(
3966
	assertSearchResults(
3966
		"src/b98378/X.java int b98378.X.length() [length] EXACT_MATCH\n" + 
3967
		"src/b98378/X.java int b98378.X.length() [length] EXACT_MATCH\n" +
3967
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" + 
3968
		jclPath + " int java.lang.CharSequence.length() EXACT_MATCH\n" +
3968
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3969
		jclPath + " int java.lang.String.length() EXACT_MATCH"
3969
	);
3970
	);
3970
}
3971
}
Lines 3976-3992 Link Here
3976
public void testBug99600() throws CoreException {
3977
public void testBug99600() throws CoreException {
3977
	workingCopies = new ICompilationUnit[1];
3978
	workingCopies = new ICompilationUnit[1];
3978
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99600/Test.java",
3979
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99600/Test.java",
3979
		"package b99600;\n" + 
3980
		"package b99600;\n" +
3980
		"public class Test {\n" + 
3981
		"public class Test {\n" +
3981
		"	public class C1 {}\n" + 
3982
		"	public class C1 {}\n" +
3982
		"	public class C2 {\n" + 
3983
		"	public class C2 {\n" +
3983
		"		class C3 {\n" + 
3984
		"		class C3 {\n" +
3984
		"			int foo(C1 c) { return 0; }\n" + 
3985
		"			int foo(C1 c) { return 0; }\n" +
3985
		"		}\n" + 
3986
		"		}\n" +
3986
		"		public void foo(C1 c, int i) {\n" + 
3987
		"		public void foo(C1 c, int i) {\n" +
3987
		"			new C3().foo(c);\n" + 
3988
		"			new C3().foo(c);\n" +
3988
		"		}\n" + 
3989
		"		}\n" +
3989
		"	}\n" + 
3990
		"	}\n" +
3990
		"}\n"
3991
		"}\n"
3991
	);
3992
	);
3992
	IType type = workingCopies[0].getType("Test").getType("C2");
3993
	IType type = workingCopies[0].getType("Test").getType("C2");
Lines 4003-4022 Link Here
4003
public void testBug99903_annotation() throws CoreException {
4004
public void testBug99903_annotation() throws CoreException {
4004
	workingCopies = new ICompilationUnit[3];
4005
	workingCopies = new ICompilationUnit[3];
4005
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4006
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4006
		"/**\n" + 
4007
		"/**\n" +
4007
		" * @see Test\n" + 
4008
		" * @see Test\n" +
4008
		" */\n" + 
4009
		" */\n" +
4009
		"@Annot\n" + 
4010
		"@Annot\n" +
4010
		"package b99903;\n"
4011
		"package b99903;\n"
4011
	);
4012
	);
4012
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4013
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4013
		"package b99903;\n" + 
4014
		"package b99903;\n" +
4014
		"public class Test {\n" + 
4015
		"public class Test {\n" +
4015
		"}\n"
4016
		"}\n"
4016
	);
4017
	);
4017
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4018
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4018
		"package b99903;\n" + 
4019
		"package b99903;\n" +
4019
		"public @interface Annot {\n" + 
4020
		"public @interface Annot {\n" +
4020
		"}\n"
4021
		"}\n"
4021
	);
4022
	);
4022
	IType type = workingCopies[2].getType("Annot");
4023
	IType type = workingCopies[2].getType("Annot");
Lines 4028-4047 Link Here
4028
public void testBug99903_javadoc() throws CoreException {
4029
public void testBug99903_javadoc() throws CoreException {
4029
	workingCopies = new ICompilationUnit[3];
4030
	workingCopies = new ICompilationUnit[3];
4030
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4031
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b99903/package-info.java",
4031
		"/**\n" + 
4032
		"/**\n" +
4032
		" * @see Test\n" + 
4033
		" * @see Test\n" +
4033
		" */\n" + 
4034
		" */\n" +
4034
		"@Annot\n" + 
4035
		"@Annot\n" +
4035
		"package b99903;\n"
4036
		"package b99903;\n"
4036
	);
4037
	);
4037
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4038
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b99903/Test.java",
4038
		"package b99903;\n" + 
4039
		"package b99903;\n" +
4039
		"public class Test {\n" + 
4040
		"public class Test {\n" +
4040
		"}\n"
4041
		"}\n"
4041
	);
4042
	);
4042
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4043
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b99903/Annot.java",
4043
		"package b99903;\n" + 
4044
		"package b99903;\n" +
4044
		"public @interface Annot {\n" + 
4045
		"public @interface Annot {\n" +
4045
		"}\n"
4046
		"}\n"
4046
	);
4047
	);
4047
	resultCollector.showInsideDoc = true;
4048
	resultCollector.showInsideDoc = true;
Lines 4059-4197 Link Here
4059
public void testBug100695() throws CoreException {
4060
public void testBug100695() throws CoreException {
4060
	workingCopies = new ICompilationUnit[1];
4061
	workingCopies = new ICompilationUnit[1];
4061
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4062
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4062
		"package b100695;\n" + 
4063
		"package b100695;\n" +
4063
		"public class Test {\n" + 
4064
		"public class Test {\n" +
4064
		"	Class<Class>[] foo;\n" + 
4065
		"	Class<Class>[] foo;\n" +
4065
		"	Class<Class>[] bar = foo;\n" + 
4066
		"	Class<Class>[] bar = foo;\n" +
4066
		"	Test() {\n" + 
4067
		"	Test() {\n" +
4067
		"		foo = null;\n" + 
4068
		"		foo = null;\n" +
4068
		"	}\n" + 
4069
		"	}\n" +
4069
		"}\n"
4070
		"}\n"
4070
	);
4071
	);
4071
	IField field = workingCopies[0].getType("Test").getField("foo");
4072
	IField field = workingCopies[0].getType("Test").getField("foo");
4072
	search(field, REFERENCES);
4073
	search(field, REFERENCES);
4073
	assertSearchResults(
4074
	assertSearchResults(
4074
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4075
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4075
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4076
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4076
	);
4077
	);
4077
}
4078
}
4078
public void testBug100695a() throws CoreException {
4079
public void testBug100695a() throws CoreException {
4079
	workingCopies = new ICompilationUnit[1];
4080
	workingCopies = new ICompilationUnit[1];
4080
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4081
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4081
		"package b100695;\n" + 
4082
		"package b100695;\n" +
4082
		"public class Test {\n" + 
4083
		"public class Test {\n" +
4083
		"	Class<Class>[] foo;\n" + 
4084
		"	Class<Class>[] foo;\n" +
4084
		"	Class<Class>[] bar = foo;\n" + 
4085
		"	Class<Class>[] bar = foo;\n" +
4085
		"	Test() {\n" + 
4086
		"	Test() {\n" +
4086
		"		foo = null;\n" + 
4087
		"		foo = null;\n" +
4087
		"	}\n" + 
4088
		"	}\n" +
4088
		"}\n"
4089
		"}\n"
4089
	);
4090
	);
4090
	IField field = workingCopies[0].getType("Test").getField("foo");
4091
	IField field = workingCopies[0].getType("Test").getField("foo");
4091
	search(field, ALL_OCCURRENCES);
4092
	search(field, ALL_OCCURRENCES);
4092
	assertSearchResults(
4093
	assertSearchResults(
4093
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" + 
4094
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" +
4094
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4095
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4095
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4096
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4096
	);
4097
	);
4097
}
4098
}
4098
public void testBug100695b() throws CoreException {
4099
public void testBug100695b() throws CoreException {
4099
	workingCopies = new ICompilationUnit[1];
4100
	workingCopies = new ICompilationUnit[1];
4100
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4101
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4101
		"package b100695;\n" + 
4102
		"package b100695;\n" +
4102
		"public class Test {\n" + 
4103
		"public class Test {\n" +
4103
		"	Class<Class> foo;\n" + 
4104
		"	Class<Class> foo;\n" +
4104
		"	Class<Class> bar = foo;\n" + 
4105
		"	Class<Class> bar = foo;\n" +
4105
		"	Test() {\n" + 
4106
		"	Test() {\n" +
4106
		"		foo = null;\n" + 
4107
		"		foo = null;\n" +
4107
		"	}\n" + 
4108
		"	}\n" +
4108
		"}\n"
4109
		"}\n"
4109
	);
4110
	);
4110
	IField field = workingCopies[0].getType("Test").getField("foo");
4111
	IField field = workingCopies[0].getType("Test").getField("foo");
4111
	search(field, ALL_OCCURRENCES);
4112
	search(field, ALL_OCCURRENCES);
4112
	assertSearchResults(
4113
	assertSearchResults(
4113
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" + 
4114
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" +
4114
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4115
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4115
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4116
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4116
	);
4117
	);
4117
}
4118
}
4118
public void testBug100695c() throws CoreException {
4119
public void testBug100695c() throws CoreException {
4119
	workingCopies = new ICompilationUnit[1];
4120
	workingCopies = new ICompilationUnit[1];
4120
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4121
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4121
		"package b100695;\n" + 
4122
		"package b100695;\n" +
4122
		"public class Test {\n" + 
4123
		"public class Test {\n" +
4123
		"	Class[] foo;\n" + 
4124
		"	Class[] foo;\n" +
4124
		"	Class[] bar = foo;\n" + 
4125
		"	Class[] bar = foo;\n" +
4125
		"	Test() {\n" + 
4126
		"	Test() {\n" +
4126
		"		foo = null;\n" + 
4127
		"		foo = null;\n" +
4127
		"	}\n" + 
4128
		"	}\n" +
4128
		"}\n"
4129
		"}\n"
4129
	);
4130
	);
4130
	IField field = workingCopies[0].getType("Test").getField("foo");
4131
	IField field = workingCopies[0].getType("Test").getField("foo");
4131
	search(field, ALL_OCCURRENCES);
4132
	search(field, ALL_OCCURRENCES);
4132
	assertSearchResults(
4133
	assertSearchResults(
4133
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" + 
4134
		"src/b100695/Test.java b100695.Test.foo [foo] EXACT_MATCH\n" +
4134
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" + 
4135
		"src/b100695/Test.java b100695.Test.bar [foo] EXACT_MATCH\n" +
4135
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4136
		"src/b100695/Test.java b100695.Test() [foo] EXACT_MATCH"
4136
	);
4137
	);
4137
}
4138
}
4138
public void testBug100695d() throws CoreException {
4139
public void testBug100695d() throws CoreException {
4139
	workingCopies = new ICompilationUnit[1];
4140
	workingCopies = new ICompilationUnit[1];
4140
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4141
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4141
		"package b100695;\n" + 
4142
		"package b100695;\n" +
4142
		"public class Test {\n" + 
4143
		"public class Test {\n" +
4143
		"	  public Class<Class>[] foo(Class<Class>[] a) {\n" + 
4144
		"	  public Class<Class>[] foo(Class<Class>[] a) {\n" +
4144
		"		  return a;\n" + 
4145
		"		  return a;\n" +
4145
		"	  }\n" + 
4146
		"	  }\n" +
4146
		"	  void bar() {\n" + 
4147
		"	  void bar() {\n" +
4147
		"		  foo(new Class[0]);\n" + 
4148
		"		  foo(new Class[0]);\n" +
4148
		"	  }\n" + 
4149
		"	  }\n" +
4149
		"}\n"
4150
		"}\n"
4150
	);
4151
	);
4151
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4152
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4152
	search(method, ALL_OCCURRENCES);
4153
	search(method, ALL_OCCURRENCES);
4153
	assertSearchResults(
4154
	assertSearchResults(
4154
		"src/b100695/Test.java Class<Class>[] b100695.Test.foo(Class<Class>[]) [foo] EXACT_MATCH\n" + 
4155
		"src/b100695/Test.java Class<Class>[] b100695.Test.foo(Class<Class>[]) [foo] EXACT_MATCH\n" +
4155
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4156
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4156
	);
4157
	);
4157
}
4158
}
4158
public void testBug100695e() throws CoreException {
4159
public void testBug100695e() throws CoreException {
4159
	workingCopies = new ICompilationUnit[1];
4160
	workingCopies = new ICompilationUnit[1];
4160
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4161
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4161
		"package b100695;\n" + 
4162
		"package b100695;\n" +
4162
		"public class Test {\n" + 
4163
		"public class Test {\n" +
4163
		"	  public Class<Class> foo(Class<Class> a) {\n" + 
4164
		"	  public Class<Class> foo(Class<Class> a) {\n" +
4164
		"		  return a;\n" + 
4165
		"		  return a;\n" +
4165
		"	  }\n" + 
4166
		"	  }\n" +
4166
		"	  void bar() {\n" + 
4167
		"	  void bar() {\n" +
4167
		"		  foo(null);\n" + 
4168
		"		  foo(null);\n" +
4168
		"	  }\n" + 
4169
		"	  }\n" +
4169
		"}\n"
4170
		"}\n"
4170
	);
4171
	);
4171
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4172
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4172
	search(method, ALL_OCCURRENCES);
4173
	search(method, ALL_OCCURRENCES);
4173
	assertSearchResults(
4174
	assertSearchResults(
4174
		"src/b100695/Test.java Class<Class> b100695.Test.foo(Class<Class>) [foo] EXACT_MATCH\n" + 
4175
		"src/b100695/Test.java Class<Class> b100695.Test.foo(Class<Class>) [foo] EXACT_MATCH\n" +
4175
		"src/b100695/Test.java void b100695.Test.bar() [foo(null)] EXACT_MATCH"
4176
		"src/b100695/Test.java void b100695.Test.bar() [foo(null)] EXACT_MATCH"
4176
	);
4177
	);
4177
}
4178
}
4178
public void testBug100695f() throws CoreException {
4179
public void testBug100695f() throws CoreException {
4179
	workingCopies = new ICompilationUnit[1];
4180
	workingCopies = new ICompilationUnit[1];
4180
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4181
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100695/Test.java",
4181
		"package b100695;\n" + 
4182
		"package b100695;\n" +
4182
		"public class Test {\n" + 
4183
		"public class Test {\n" +
4183
		"	  public Class[] foo(Class[] a) {\n" + 
4184
		"	  public Class[] foo(Class[] a) {\n" +
4184
		"		  return a;\n" + 
4185
		"		  return a;\n" +
4185
		"	  }\n" + 
4186
		"	  }\n" +
4186
		"	  void bar() {\n" + 
4187
		"	  void bar() {\n" +
4187
		"		  foo(new Class[0]);\n" + 
4188
		"		  foo(new Class[0]);\n" +
4188
		"	  }\n" + 
4189
		"	  }\n" +
4189
		"}\n"
4190
		"}\n"
4190
	);
4191
	);
4191
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4192
	IMethod method = workingCopies[0].getType("Test").getMethods()[0];
4192
	search(method, ALL_OCCURRENCES);
4193
	search(method, ALL_OCCURRENCES);
4193
	assertSearchResults(
4194
	assertSearchResults(
4194
		"src/b100695/Test.java Class[] b100695.Test.foo(Class[]) [foo] EXACT_MATCH\n" + 
4195
		"src/b100695/Test.java Class[] b100695.Test.foo(Class[]) [foo] EXACT_MATCH\n" +
4195
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4196
		"src/b100695/Test.java void b100695.Test.bar() [foo(new Class[0])] EXACT_MATCH"
4196
	);
4197
	);
4197
}
4198
}
Lines 4203-4216 Link Here
4203
private void setUpBug100772_HierarchyScope_ClassAndSubclass() throws CoreException {
4204
private void setUpBug100772_HierarchyScope_ClassAndSubclass() throws CoreException {
4204
	workingCopies = new ICompilationUnit[1];
4205
	workingCopies = new ICompilationUnit[1];
4205
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4206
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4206
		"package b100772;\n" + 
4207
		"package b100772;\n" +
4207
		"class Test<T> {\n" + 
4208
		"class Test<T> {\n" +
4208
		"    public void foo(T t) {}\n" + 
4209
		"    public void foo(T t) {}\n" +
4209
		"    public void foo(Class c) {}\n" + 
4210
		"    public void foo(Class c) {}\n" +
4210
		"}\n" + 
4211
		"}\n" +
4211
		"class Sub extends Test<String> {\n" + 
4212
		"class Sub extends Test<String> {\n" +
4212
		"    public void foo(String str) {}\n" + 
4213
		"    public void foo(String str) {}\n" +
4213
		"    public void foo(Exception e) {}\n" + 
4214
		"    public void foo(Exception e) {}\n" +
4214
		"}\n"
4215
		"}\n"
4215
	);
4216
	);
4216
}
4217
}
Lines 4220-4226 Link Here
4220
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4221
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4221
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4222
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4222
	assertSearchResults(
4223
	assertSearchResults(
4223
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4224
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4224
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4225
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4225
	);
4226
	);
4226
}
4227
}
Lines 4230-4236 Link Here
4230
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4231
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4231
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4232
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4232
	assertSearchResults(
4233
	assertSearchResults(
4233
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4234
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4234
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4235
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4235
	);
4236
	);
4236
}
4237
}
Lines 4249-4255 Link Here
4249
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4250
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4250
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4251
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4251
	assertSearchResults(
4252
	assertSearchResults(
4252
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4253
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4253
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4254
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4254
	);
4255
	);
4255
}
4256
}
Lines 4265-4283 Link Here
4265
private void setUpBug100772_HierarchyScope_InterfacesAndClass() throws CoreException {
4266
private void setUpBug100772_HierarchyScope_InterfacesAndClass() throws CoreException {
4266
	workingCopies = new ICompilationUnit[1];
4267
	workingCopies = new ICompilationUnit[1];
4267
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4268
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4268
		"package b100772;\n" + 
4269
		"package b100772;\n" +
4269
		"interface Test<T> {\n" + 
4270
		"interface Test<T> {\n" +
4270
		"    public void foo(T t);\n" + 
4271
		"    public void foo(T t);\n" +
4271
		"    public void foo(Class c);\n" + 
4272
		"    public void foo(Class c);\n" +
4272
		"}\n" + 
4273
		"}\n" +
4273
		"interface Sub extends Test<String> {\n" + 
4274
		"interface Sub extends Test<String> {\n" +
4274
		"    public void foo(String str);\n" + 
4275
		"    public void foo(String str);\n" +
4275
		"    public void foo(Exception e);\n" + 
4276
		"    public void foo(Exception e);\n" +
4276
		"}\n" +
4277
		"}\n" +
4277
		"class X implements Test<String> {\n" + 
4278
		"class X implements Test<String> {\n" +
4278
		"    public void foo(String str) {}\n" + 
4279
		"    public void foo(String str) {}\n" +
4279
		"    public void foo(Class c) {}\n" + 
4280
		"    public void foo(Class c) {}\n" +
4280
		"    public void foo(Exception e) {}\n" + 
4281
		"    public void foo(Exception e) {}\n" +
4281
		"}\n"
4282
		"}\n"
4282
	);
4283
	);
4283
}
4284
}
Lines 4287-4294 Link Here
4287
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4288
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4288
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4289
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4289
	assertSearchResults(
4290
	assertSearchResults(
4290
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4291
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4291
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4292
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4292
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4293
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4293
	);
4294
	);
4294
}
4295
}
Lines 4298-4305 Link Here
4298
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4299
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4299
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4300
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4300
	assertSearchResults(
4301
	assertSearchResults(
4301
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4302
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4302
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4303
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4303
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4304
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4304
	);
4305
	);
4305
}
4306
}
Lines 4309-4315 Link Here
4309
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4310
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4310
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4311
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4311
	assertSearchResults(
4312
	assertSearchResults(
4312
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4313
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4313
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4314
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4314
	);
4315
	);
4315
}
4316
}
Lines 4319-4325 Link Here
4319
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4320
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4320
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4321
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4321
	assertSearchResults(
4322
	assertSearchResults(
4322
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4323
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4323
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4324
		"src/b100772/Test.java void b100772.Sub.foo(String) [foo] EXACT_MATCH"
4324
	);
4325
	);
4325
}
4326
}
Lines 4338-4344 Link Here
4338
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4339
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4339
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4340
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4340
	assertSearchResults(
4341
	assertSearchResults(
4341
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4342
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4342
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4343
		"src/b100772/Test.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4343
	);
4344
	);
4344
}
4345
}
Lines 4348-4354 Link Here
4348
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4349
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4349
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4350
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4350
	assertSearchResults(
4351
	assertSearchResults(
4351
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4352
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4352
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4353
		"src/b100772/Test.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4353
	);
4354
	);
4354
}
4355
}
Lines 4364-4390 Link Here
4364
private void setUpBug100772_HierarchyScope_Complex() throws CoreException {
4365
private void setUpBug100772_HierarchyScope_Complex() throws CoreException {
4365
	workingCopies = new ICompilationUnit[1];
4366
	workingCopies = new ICompilationUnit[1];
4366
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4367
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4367
		"package b100772;\n" + 
4368
		"package b100772;\n" +
4368
		"public class X<T> implements IX<T> {\n" + 
4369
		"public class X<T> implements IX<T> {\n" +
4369
		"	public void foo(T t) {}\n" + 
4370
		"	public void foo(T t) {}\n" +
4370
		"}\n" + 
4371
		"}\n" +
4371
		"class XX extends X<String> {\n" + 
4372
		"class XX extends X<String> {\n" +
4372
		"	public void foo(String s) {}\n" + 
4373
		"	public void foo(String s) {}\n" +
4373
		"	public void foo(Exception e) {}\n" + 
4374
		"	public void foo(Exception e) {}\n" +
4374
		"}\n" + 
4375
		"}\n" +
4375
		"interface IX<U> {\n" + 
4376
		"interface IX<U> {\n" +
4376
		"	public void foo(U u);\n" + 
4377
		"	public void foo(U u);\n" +
4377
		"}\n" + 
4378
		"}\n" +
4378
		"class Y implements IX<String> {\n" + 
4379
		"class Y implements IX<String> {\n" +
4379
		"	public void foo(String s) {}\n" + 
4380
		"	public void foo(String s) {}\n" +
4380
		"	public void foo(Exception e) {}\n" + 
4381
		"	public void foo(Exception e) {}\n" +
4381
		"}\n" + 
4382
		"}\n" +
4382
		"interface IXX<V extends Exception> {\n" + 
4383
		"interface IXX<V extends Exception> {\n" +
4383
		"	public void foo(V v);\n" + 
4384
		"	public void foo(V v);\n" +
4384
		"}\n" + 
4385
		"}\n" +
4385
		"class Z extends Y implements IXX<Exception> {\n" + 
4386
		"class Z extends Y implements IXX<Exception> {\n" +
4386
		"	public void foo(String s) {}\n" + 
4387
		"	public void foo(String s) {}\n" +
4387
		"	public void foo(Exception e) {}\n" + 
4388
		"	public void foo(Exception e) {}\n" +
4388
		"}\n"
4389
		"}\n"
4389
	);
4390
	);
4390
}
4391
}
Lines 4394-4403 Link Here
4394
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4395
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4395
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4396
	search(method, DECLARATIONS, SearchEngine.createHierarchyScope(type));
4396
	assertSearchResults(
4397
	assertSearchResults(
4397
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4398
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4398
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4399
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4399
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4400
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4400
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4401
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4401
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4402
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4402
	);
4403
	);
4403
}
4404
}
Lines 4407-4414 Link Here
4407
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4408
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4408
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4409
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4409
	assertSearchResults(
4410
	assertSearchResults(
4410
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4411
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4411
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4412
		"src/b100772/Test.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4412
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4413
		"src/b100772/Test.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4413
	);
4414
	);
4414
}
4415
}
Lines 4418-4425 Link Here
4418
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4419
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4419
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4420
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4420
	assertSearchResults(
4421
	assertSearchResults(
4421
		"src/b100772/Test.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" + 
4422
		"src/b100772/Test.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" +
4422
		"src/b100772/Test.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" + 
4423
		"src/b100772/Test.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" +
4423
		"src/b100772/Test.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4424
		"src/b100772/Test.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4424
	);
4425
	);
4425
}
4426
}
Lines 4429-4453 Link Here
4429
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4430
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4430
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4431
	search(method, UI_DECLARATIONS, SearchEngine.createHierarchyScope(type));
4431
	assertSearchResults(
4432
	assertSearchResults(
4432
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4433
		"src/b100772/Test.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4433
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4434
		"src/b100772/Test.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4434
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH"
4435
		"src/b100772/Test.java void b100772.IX.foo(U) [foo] EXACT_MATCH"
4435
	);
4436
	);
4436
}
4437
}
4437
private void setUpBug100772_ProjectScope_ClassAndSubclass() throws CoreException {
4438
private void setUpBug100772_ProjectScope_ClassAndSubclass() throws CoreException {
4438
	workingCopies = new ICompilationUnit[2];
4439
	workingCopies = new ICompilationUnit[2];
4439
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4440
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4440
		"package b100772;\n" + 
4441
		"package b100772;\n" +
4441
		"class Test<T> {\n" + 
4442
		"class Test<T> {\n" +
4442
		"    public void foo(T t) {}\n" + 
4443
		"    public void foo(T t) {}\n" +
4443
		"    public void foo(Class c) {}\n" + 
4444
		"    public void foo(Class c) {}\n" +
4444
		"}\n"
4445
		"}\n"
4445
	);
4446
	);
4446
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4447
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4447
		"package b100772;\n" + 
4448
		"package b100772;\n" +
4448
		"class Sub extends Test<String> {\n" + 
4449
		"class Sub extends Test<String> {\n" +
4449
		"    public void foo(String str) {}\n" + 
4450
		"    public void foo(String str) {}\n" +
4450
		"    public void foo(Exception e) {}\n" + 
4451
		"    public void foo(Exception e) {}\n" +
4451
		"}\n"
4452
		"}\n"
4452
	);
4453
	);
4453
}
4454
}
Lines 4457-4463 Link Here
4457
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4458
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4458
	search(method, UI_DECLARATIONS);
4459
	search(method, UI_DECLARATIONS);
4459
	assertSearchResults(
4460
	assertSearchResults(
4460
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4461
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4461
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4462
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4462
	);
4463
	);
4463
}
4464
}
Lines 4467-4473 Link Here
4467
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4468
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4468
	search(method, DECLARATIONS);
4469
	search(method, DECLARATIONS);
4469
	assertSearchResults(
4470
	assertSearchResults(
4470
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4471
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4471
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4472
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4472
	);
4473
	);
4473
}
4474
}
Lines 4486-4492 Link Here
4486
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4487
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4487
	search(method, UI_DECLARATIONS);
4488
	search(method, UI_DECLARATIONS);
4488
	assertSearchResults(
4489
	assertSearchResults(
4489
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4490
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4490
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4491
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH"
4491
	);
4492
	);
4492
}
4493
}
Lines 4502-4526 Link Here
4502
private void setUpBug100772_ProjectScope_InterfacesAndClass() throws CoreException {
4503
private void setUpBug100772_ProjectScope_InterfacesAndClass() throws CoreException {
4503
	workingCopies = new ICompilationUnit[3];
4504
	workingCopies = new ICompilationUnit[3];
4504
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4505
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/Test.java",
4505
		"package b100772;\n" + 
4506
		"package b100772;\n" +
4506
		"interface Test<T> {\n" + 
4507
		"interface Test<T> {\n" +
4507
		"    public void foo(T t);\n" + 
4508
		"    public void foo(T t);\n" +
4508
		"    public void foo(Class c);\n" + 
4509
		"    public void foo(Class c);\n" +
4509
		"}\n"
4510
		"}\n"
4510
	);
4511
	);
4511
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4512
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/Sub.java",
4512
		"package b100772;\n" + 
4513
		"package b100772;\n" +
4513
		"interface Sub extends Test<String> {\n" + 
4514
		"interface Sub extends Test<String> {\n" +
4514
		"    public void foo(String str);\n" + 
4515
		"    public void foo(String str);\n" +
4515
		"    public void foo(Exception e);\n" + 
4516
		"    public void foo(Exception e);\n" +
4516
		"}\n"
4517
		"}\n"
4517
	);
4518
	);
4518
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4519
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4519
		"package b100772;\n" + 
4520
		"package b100772;\n" +
4520
		"class X implements Test<String> {\n" + 
4521
		"class X implements Test<String> {\n" +
4521
		"    public void foo(String str) {}\n" + 
4522
		"    public void foo(String str) {}\n" +
4522
		"    public void foo(Class c) {}\n" + 
4523
		"    public void foo(Class c) {}\n" +
4523
		"    public void foo(Exception e) {}\n" + 
4524
		"    public void foo(Exception e) {}\n" +
4524
		"}\n"
4525
		"}\n"
4525
	);
4526
	);
4526
}
4527
}
Lines 4530-4537 Link Here
4530
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4531
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4531
	search(method, UI_DECLARATIONS);
4532
	search(method, UI_DECLARATIONS);
4532
	assertSearchResults(
4533
	assertSearchResults(
4533
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4534
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4534
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4535
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4535
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4536
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4536
	);
4537
	);
4537
}
4538
}
Lines 4541-4548 Link Here
4541
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4542
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4542
	search(method, DECLARATIONS);
4543
	search(method, DECLARATIONS);
4543
	assertSearchResults(
4544
	assertSearchResults(
4544
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4545
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4545
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4546
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4546
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4547
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4547
	);
4548
	);
4548
}
4549
}
Lines 4552-4558 Link Here
4552
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4553
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4553
	search(method, UI_DECLARATIONS);
4554
	search(method, UI_DECLARATIONS);
4554
	assertSearchResults(
4555
	assertSearchResults(
4555
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4556
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4556
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4557
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4557
	);
4558
	);
4558
}
4559
}
Lines 4562-4569 Link Here
4562
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4563
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4563
	search(method, UI_DECLARATIONS);
4564
	search(method, UI_DECLARATIONS);
4564
	assertSearchResults(
4565
	assertSearchResults(
4565
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4566
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4566
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4567
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4567
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4568
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4568
	);
4569
	);
4569
}
4570
}
Lines 4573-4579 Link Here
4573
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4574
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4574
	search(method, UI_DECLARATIONS);
4575
	search(method, UI_DECLARATIONS);
4575
	assertSearchResults(
4576
	assertSearchResults(
4576
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" + 
4577
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" +
4577
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4578
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4578
	);
4579
	);
4579
}
4580
}
Lines 4583-4590 Link Here
4583
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4584
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4584
	search(method, UI_DECLARATIONS);
4585
	search(method, UI_DECLARATIONS);
4585
	assertSearchResults(
4586
	assertSearchResults(
4586
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" + 
4587
		"src/b100772/Sub.java void b100772.Sub.foo(String) [foo] EXACT_MATCH\n" +
4587
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" + 
4588
		"src/b100772/Test.java void b100772.Test.foo(T) [foo] EXACT_MATCH\n" +
4588
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4589
		"src/b100772/X.java void b100772.X.foo(String) [foo] EXACT_MATCH"
4589
	);
4590
	);
4590
}
4591
}
Lines 4594-4600 Link Here
4594
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4595
	IMethod method = type.getMethod("foo", new String[] { "QClass;" });
4595
	search(method, UI_DECLARATIONS);
4596
	search(method, UI_DECLARATIONS);
4596
	assertSearchResults(
4597
	assertSearchResults(
4597
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" + 
4598
		"src/b100772/Test.java void b100772.Test.foo(Class) [foo] EXACT_MATCH\n" +
4598
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4599
		"src/b100772/X.java void b100772.X.foo(Class) [foo] EXACT_MATCH"
4599
	);
4600
	);
4600
}
4601
}
Lines 4604-4652 Link Here
4604
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4605
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4605
	search(method, UI_DECLARATIONS);
4606
	search(method, UI_DECLARATIONS);
4606
	assertSearchResults(
4607
	assertSearchResults(
4607
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" + 
4608
		"src/b100772/Sub.java void b100772.Sub.foo(Exception) [foo] EXACT_MATCH\n" +
4608
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4609
		"src/b100772/X.java void b100772.X.foo(Exception) [foo] EXACT_MATCH"
4609
	);
4610
	);
4610
}
4611
}
4611
private void setUpBug100772_ProjectScope_Complex() throws CoreException {
4612
private void setUpBug100772_ProjectScope_Complex() throws CoreException {
4612
	workingCopies = new ICompilationUnit[6];
4613
	workingCopies = new ICompilationUnit[6];
4613
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4614
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b100772/X.java",
4614
		"package b100772;\n" + 
4615
		"package b100772;\n" +
4615
		"public class X<T> implements IX<T> {\n" + 
4616
		"public class X<T> implements IX<T> {\n" +
4616
		"	public void foo(T t) {}\n" + 
4617
		"	public void foo(T t) {}\n" +
4617
		"}\n"
4618
		"}\n"
4618
	);
4619
	);
4619
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/XX.java",
4620
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b100772/XX.java",
4620
		"package b100772;\n" + 
4621
		"package b100772;\n" +
4621
		"class XX extends X<String> {\n" + 
4622
		"class XX extends X<String> {\n" +
4622
		"	public void foo(String s) {}\n" + 
4623
		"	public void foo(String s) {}\n" +
4623
		"	public void foo(Exception e) {}\n" + 
4624
		"	public void foo(Exception e) {}\n" +
4624
		"}\n"
4625
		"}\n"
4625
	);
4626
	);
4626
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/IX.java",
4627
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b100772/IX.java",
4627
		"package b100772;\n" + 
4628
		"package b100772;\n" +
4628
		"interface IX<U> {\n" + 
4629
		"interface IX<U> {\n" +
4629
		"	public void foo(U u);\n" + 
4630
		"	public void foo(U u);\n" +
4630
		"}\n"
4631
		"}\n"
4631
	);
4632
	);
4632
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b100772/Y.java",
4633
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b100772/Y.java",
4633
		"package b100772;\n" + 
4634
		"package b100772;\n" +
4634
		"class Y implements IX<String> {\n" + 
4635
		"class Y implements IX<String> {\n" +
4635
		"	public void foo(String s) {}\n" + 
4636
		"	public void foo(String s) {}\n" +
4636
		"	public void foo(Exception e) {}\n" + 
4637
		"	public void foo(Exception e) {}\n" +
4637
		"}\n"
4638
		"}\n"
4638
	);
4639
	);
4639
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b100772/IXX.java",
4640
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b100772/IXX.java",
4640
		"package b100772;\n" + 
4641
		"package b100772;\n" +
4641
		"interface IXX<V extends Exception> {\n" + 
4642
		"interface IXX<V extends Exception> {\n" +
4642
		"	public void foo(V v);\n" + 
4643
		"	public void foo(V v);\n" +
4643
		"}\n"
4644
		"}\n"
4644
	);
4645
	);
4645
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b100772/Z.java",
4646
	workingCopies[5] = getWorkingCopy("/JavaSearchBugs/src/b100772/Z.java",
4646
		"package b100772;\n" + 
4647
		"package b100772;\n" +
4647
		"class Z extends Y implements IXX<Exception> {\n" + 
4648
		"class Z extends Y implements IXX<Exception> {\n" +
4648
		"	public void foo(String s) {}\n" + 
4649
		"	public void foo(String s) {}\n" +
4649
		"	public void foo(Exception e) {}\n" + 
4650
		"	public void foo(Exception e) {}\n" +
4650
		"}\n"
4651
		"}\n"
4651
	);
4652
	);
4652
}
4653
}
Lines 4656-4665 Link Here
4656
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4657
	IMethod method = type.getMethod("foo", new String[] { "QU;" });
4657
	search(method, DECLARATIONS);
4658
	search(method, DECLARATIONS);
4658
	assertSearchResults(
4659
	assertSearchResults(
4659
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4660
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4660
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4661
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4661
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4662
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4662
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4663
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4663
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4664
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4664
	);
4665
	);
4665
}
4666
}
Lines 4669-4677 Link Here
4669
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4670
	IMethod method = type.getMethod("foo", new String[] { "QString;" });
4670
	search(method, UI_DECLARATIONS);
4671
	search(method, UI_DECLARATIONS);
4671
	assertSearchResults(
4672
	assertSearchResults(
4672
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4673
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4673
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" + 
4674
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH\n" +
4674
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" + 
4675
		"src/b100772/Y.java void b100772.Y.foo(String) [foo] EXACT_MATCH\n" +
4675
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4676
		"src/b100772/Z.java void b100772.Z.foo(String) [foo] EXACT_MATCH"
4676
	);
4677
	);
4677
}
4678
}
Lines 4681-4689 Link Here
4681
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4682
	IMethod method = type.getMethod("foo", new String[] { "QException;" });
4682
	search(method, UI_DECLARATIONS);
4683
	search(method, UI_DECLARATIONS);
4683
	assertSearchResults(
4684
	assertSearchResults(
4684
		"src/b100772/IXX.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" + 
4685
		"src/b100772/IXX.java void b100772.IXX.foo(V) [foo] EXACT_MATCH\n" +
4685
		"src/b100772/XX.java void b100772.XX.foo(Exception) [foo] EXACT_MATCH\n" + 
4686
		"src/b100772/XX.java void b100772.XX.foo(Exception) [foo] EXACT_MATCH\n" +
4686
		"src/b100772/Y.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" + 
4687
		"src/b100772/Y.java void b100772.Y.foo(Exception) [foo] EXACT_MATCH\n" +
4687
		"src/b100772/Z.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4688
		"src/b100772/Z.java void b100772.Z.foo(Exception) [foo] EXACT_MATCH"
4688
	);
4689
	);
4689
}
4690
}
Lines 4693-4700 Link Here
4693
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4694
	IMethod method = type.getMethod("foo", new String[] { "QT;" });
4694
	search(method, UI_DECLARATIONS);
4695
	search(method, UI_DECLARATIONS);
4695
	assertSearchResults(
4696
	assertSearchResults(
4696
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" + 
4697
		"src/b100772/X.java void b100772.X.foo(T) [foo] EXACT_MATCH\n" +
4697
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" + 
4698
		"src/b100772/IX.java void b100772.IX.foo(U) [foo] EXACT_MATCH\n" +
4698
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH"
4699
		"src/b100772/XX.java void b100772.XX.foo(String) [foo] EXACT_MATCH"
4699
	);
4700
	);
4700
}
4701
}
Lines 4726-4757 Link Here
4726
private void setUpBug110060_TypePattern() throws CoreException {
4727
private void setUpBug110060_TypePattern() throws CoreException {
4727
	workingCopies = new ICompilationUnit[5];
4728
	workingCopies = new ICompilationUnit[5];
4728
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
4729
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
4729
		"package b110060;\n" + 
4730
		"package b110060;\n" +
4730
		"public class AA {\n" +
4731
		"public class AA {\n" +
4731
		"}\n"
4732
		"}\n"
4732
	);
4733
	);
4733
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
4734
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
4734
		"package b110060;\n" + 
4735
		"package b110060;\n" +
4735
		"public class AAxx {\n" +
4736
		"public class AAxx {\n" +
4736
		"}\n"
4737
		"}\n"
4737
	);
4738
	);
4738
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
4739
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
4739
		"package b110060;\n" + 
4740
		"package b110060;\n" +
4740
		"public class AxxAyy {\n" +
4741
		"public class AxxAyy {\n" +
4741
		"}\n"
4742
		"}\n"
4742
	);
4743
	);
4743
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
4744
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
4744
		"package b110060;\n" + 
4745
		"package b110060;\n" +
4745
		"public class AxA {\n" +
4746
		"public class AxA {\n" +
4746
		"}\n"
4747
		"}\n"
4747
	);
4748
	);
4748
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
4749
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
4749
		"package b110060;\n" + 
4750
		"package b110060;\n" +
4750
		"public class Test {\n" +
4751
		"public class Test {\n" +
4751
		"	AA aa;\n" + 
4752
		"	AA aa;\n" +
4752
		"	AAxx aaxx;\n" + 
4753
		"	AAxx aaxx;\n" +
4753
		"	AxA axa;\n" + 
4754
		"	AxA axa;\n" +
4754
		"	AxxAyy axxayy;\n" + 
4755
		"	AxxAyy axxayy;\n" +
4755
		"}\n"
4756
		"}\n"
4756
	);
4757
	);
4757
}
4758
}
Lines 4759-4767 Link Here
4759
	setUpBug110060_TypePattern();
4760
	setUpBug110060_TypePattern();
4760
	search("AA", TYPE, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
4761
	search("AA", TYPE, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
4761
	assertSearchResults(
4762
	assertSearchResults(
4762
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4763
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4763
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4764
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4764
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4765
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4765
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4766
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4766
	);
4767
	);
4767
}
4768
}
Lines 4770-4782 Link Here
4770
	setUpBug110060_TypePattern();
4771
	setUpBug110060_TypePattern();
4771
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4772
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4772
	assertSearchResults(
4773
	assertSearchResults(
4773
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4774
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4774
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4775
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4775
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4776
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4776
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4777
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4777
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4778
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4778
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4779
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4779
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4780
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4780
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4781
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4781
	);
4782
	);
4782
}
4783
}
Lines 4785-4791 Link Here
4785
	setUpBug110060_TypePattern();
4786
	setUpBug110060_TypePattern();
4786
	search("AAx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4787
	search("AAx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4787
	assertSearchResults(
4788
	assertSearchResults(
4788
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4789
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4789
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4790
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4790
	);
4791
	);
4791
}
4792
}
Lines 4794-4800 Link Here
4794
	setUpBug110060_TypePattern();
4795
	setUpBug110060_TypePattern();
4795
	search("Axx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4796
	search("Axx", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4796
	assertSearchResults(
4797
	assertSearchResults(
4797
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4798
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4798
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4799
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4799
	);
4800
	);
4800
}
4801
}
Lines 4803-4811 Link Here
4803
	setUpBug110060_TypePattern();
4804
	setUpBug110060_TypePattern();
4804
	search("Ax", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4805
	search("Ax", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4805
	assertSearchResults(
4806
	assertSearchResults(
4806
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4807
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4807
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4808
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4808
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4809
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4809
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4810
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4810
	);
4811
	);
4811
}
4812
}
Lines 4814-4827 Link Here
4814
	setUpBug110060_TypePattern();
4815
	setUpBug110060_TypePattern();
4815
	search("A*A*", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4816
	search("A*A*", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4816
	assertSearchResults(
4817
	assertSearchResults(
4817
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4818
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4818
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4819
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4819
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4820
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4820
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4821
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4821
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4822
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4822
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4823
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4823
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4824
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4824
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH\n" + 
4825
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH\n" +
4825
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation.Annotation EXACT_MATCH"
4826
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation.Annotation EXACT_MATCH"
4826
	);
4827
	);
4827
}
4828
}
Lines 4836-4844 Link Here
4836
	setUpBug110060_TypePattern();
4837
	setUpBug110060_TypePattern();
4837
	search("aa", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH);
4838
	search("aa", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH);
4838
	assertSearchResults(
4839
	assertSearchResults(
4839
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4840
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4840
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4841
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4841
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4842
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4842
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4843
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH"
4843
	);
4844
	);
4844
}
4845
}
Lines 4847-4859 Link Here
4847
	setUpBug110060_TypePattern();
4848
	setUpBug110060_TypePattern();
4848
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
4849
	search("AA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
4849
	assertSearchResults(
4850
	assertSearchResults(
4850
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" + 
4851
		"src/b110060/AA.java b110060.AA [AA] EXACT_MATCH\n" +
4851
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" + 
4852
		"src/b110060/AAxx.java b110060.AAxx [AAxx] EXACT_MATCH\n" +
4852
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" + 
4853
		"src/b110060/AxA.java b110060.AxA [AxA] EXACT_MATCH\n" +
4853
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4854
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4854
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" + 
4855
		"src/b110060/Test.java b110060.Test.aa [AA] EXACT_MATCH\n" +
4855
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" + 
4856
		"src/b110060/Test.java b110060.Test.aaxx [AAxx] EXACT_MATCH\n" +
4856
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" + 
4857
		"src/b110060/Test.java b110060.Test.axa [AxA] EXACT_MATCH\n" +
4857
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4858
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4858
	);
4859
	);
4859
}
4860
}
Lines 4868-4874 Link Here
4868
	setUpBug110060_TypePattern();
4869
	setUpBug110060_TypePattern();
4869
	search("AxxA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4870
	search("AxxA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4870
	assertSearchResults(
4871
	assertSearchResults(
4871
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4872
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4872
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4873
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4873
	);
4874
	);
4874
}
4875
}
Lines 4877-4883 Link Here
4877
	setUpBug110060_TypePattern();
4878
	setUpBug110060_TypePattern();
4878
	search("AxXA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4879
	search("AxXA", TYPE, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
4879
	assertSearchResults(
4880
	assertSearchResults(
4880
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" + 
4881
		"src/b110060/AxxAyy.java b110060.AxxAyy [AxxAyy] EXACT_MATCH\n" +
4881
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4882
		"src/b110060/Test.java b110060.Test.axxayy [AxxAyy] EXACT_MATCH"
4882
	);
4883
	);
4883
}
4884
}
Lines 4898-4906 Link Here
4898
	);
4899
	);
4899
	assertSearchResults(
4900
	assertSearchResults(
4900
		"Unexpected all type names",
4901
		"Unexpected all type names",
4901
		"b110060.AA\n" + 
4902
		"b110060.AA\n" +
4902
		"b110060.AAxx\n" + 
4903
		"b110060.AAxx\n" +
4903
		"b110060.AxA\n" + 
4904
		"b110060.AxA\n" +
4904
		"b110060.AxxAyy",
4905
		"b110060.AxxAyy",
4905
		requestor);
4906
		requestor);
4906
}
4907
}
Lines 4921-4929 Link Here
4921
	);
4922
	);
4922
	assertSearchResults(
4923
	assertSearchResults(
4923
		"Unexpected all type names",
4924
		"Unexpected all type names",
4924
		"b110060.AA\n" + 
4925
		"b110060.AA\n" +
4925
		"b110060.AAxx\n" + 
4926
		"b110060.AAxx\n" +
4926
		"b110060.AxA\n" + 
4927
		"b110060.AxA\n" +
4927
		"b110060.AxxAyy",
4928
		"b110060.AxxAyy",
4928
		requestor);
4929
		requestor);
4929
}
4930
}
Lines 4944-4952 Link Here
4944
	);
4945
	);
4945
	assertSearchResults(
4946
	assertSearchResults(
4946
		"Unexpected all type names",
4947
		"Unexpected all type names",
4947
		"b110060.AA\n" + 
4948
		"b110060.AA\n" +
4948
		"b110060.AAxx\n" + 
4949
		"b110060.AAxx\n" +
4949
		"b110060.AxA\n" + 
4950
		"b110060.AxA\n" +
4950
		"b110060.AxxAyy",
4951
		"b110060.AxxAyy",
4951
		requestor);
4952
		requestor);
4952
}
4953
}
Lines 4967-4975 Link Here
4967
	);
4968
	);
4968
	assertSearchResults(
4969
	assertSearchResults(
4969
		"Unexpected all type names",
4970
		"Unexpected all type names",
4970
		"b110060.AA\n" + 
4971
		"b110060.AA\n" +
4971
		"b110060.AAxx\n" + 
4972
		"b110060.AAxx\n" +
4972
		"b110060.AxA\n" + 
4973
		"b110060.AxA\n" +
4973
		"b110060.AxxAyy",
4974
		"b110060.AxxAyy",
4974
		requestor);
4975
		requestor);
4975
}
4976
}
Lines 4990-4996 Link Here
4990
	);
4991
	);
4991
	assertSearchResults(
4992
	assertSearchResults(
4992
		"Unexpected all type names",
4993
		"Unexpected all type names",
4993
		"b110060.AA\n" + 
4994
		"b110060.AA\n" +
4994
		"b110060.AAxx",
4995
		"b110060.AAxx",
4995
		requestor);
4996
		requestor);
4996
}
4997
}
Lines 5031-5037 Link Here
5031
	);
5032
	);
5032
	assertSearchResults(
5033
	assertSearchResults(
5033
		"Unexpected all type names",
5034
		"Unexpected all type names",
5034
		"b110060.AA\n" + 
5035
		"b110060.AA\n" +
5035
		"b110060.AAxx",
5036
		"b110060.AAxx",
5036
		requestor);
5037
		requestor);
5037
}
5038
}
Lines 5052-5058 Link Here
5052
	);
5053
	);
5053
	assertSearchResults(
5054
	assertSearchResults(
5054
		"Unexpected all type names",
5055
		"Unexpected all type names",
5055
		"b110060.AA\n" + 
5056
		"b110060.AA\n" +
5056
		"b110060.AAxx",
5057
		"b110060.AAxx",
5057
		requestor);
5058
		requestor);
5058
}
5059
}
Lines 5073-5079 Link Here
5073
	);
5074
	);
5074
	assertSearchResults(
5075
	assertSearchResults(
5075
		"Unexpected all type names",
5076
		"Unexpected all type names",
5076
		"b110060.AA\n" + 
5077
		"b110060.AA\n" +
5077
		"b110060.AAxx",
5078
		"b110060.AAxx",
5078
		requestor);
5079
		requestor);
5079
}
5080
}
Lines 5134-5140 Link Here
5134
	);
5135
	);
5135
	assertSearchResults(
5136
	assertSearchResults(
5136
		"Unexpected all type names",
5137
		"Unexpected all type names",
5137
		"b110060.AA\n" + 
5138
		"b110060.AA\n" +
5138
		"b110060.AAxx",
5139
		"b110060.AAxx",
5139
		requestor);
5140
		requestor);
5140
}
5141
}
Lines 5183-5218 Link Here
5183
private void setUpBug110060_ConstructorPattern() throws CoreException {
5184
private void setUpBug110060_ConstructorPattern() throws CoreException {
5184
	workingCopies = new ICompilationUnit[5];
5185
	workingCopies = new ICompilationUnit[5];
5185
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
5186
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/AA.java",
5186
		"package b110060;\n" + 
5187
		"package b110060;\n" +
5187
		"public class AA {\n" +
5188
		"public class AA {\n" +
5188
		"	AA() {}\n" +
5189
		"	AA() {}\n" +
5189
		"}\n"
5190
		"}\n"
5190
	);
5191
	);
5191
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
5192
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b110060/AAxx.java",
5192
		"package b110060;\n" + 
5193
		"package b110060;\n" +
5193
		"public class AAxx {\n" +
5194
		"public class AAxx {\n" +
5194
		"	AAxx() {}\n" +
5195
		"	AAxx() {}\n" +
5195
		"}\n"
5196
		"}\n"
5196
	);
5197
	);
5197
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
5198
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxxAyy.java",
5198
		"package b110060;\n" + 
5199
		"package b110060;\n" +
5199
		"public class AxxAyy {\n" +
5200
		"public class AxxAyy {\n" +
5200
		"	AxxAyy() {}\n" +
5201
		"	AxxAyy() {}\n" +
5201
		"}\n"
5202
		"}\n"
5202
	);
5203
	);
5203
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
5204
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b110060/AxA.java",
5204
		"package b110060;\n" + 
5205
		"package b110060;\n" +
5205
		"public class AxA {\n" +
5206
		"public class AxA {\n" +
5206
		"	AxA() {}\n" +
5207
		"	AxA() {}\n" +
5207
		"}\n"
5208
		"}\n"
5208
	);
5209
	);
5209
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5210
	workingCopies[4] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5210
		"package b110060;\n" + 
5211
		"package b110060;\n" +
5211
		"public class Test {\n" +
5212
		"public class Test {\n" +
5212
		"	AA aa = new AA();\n" + 
5213
		"	AA aa = new AA();\n" +
5213
		"	AAxx aaxx = new AAxx();\n" + 
5214
		"	AAxx aaxx = new AAxx();\n" +
5214
		"	AxA axa = new AxA();\n" + 
5215
		"	AxA axa = new AxA();\n" +
5215
		"	AxxAyy axxayy = new AxxAyy();\n" + 
5216
		"	AxxAyy axxayy = new AxxAyy();\n" +
5216
		"}\n"
5217
		"}\n"
5217
	);
5218
	);
5218
}
5219
}
Lines 5220-5228 Link Here
5220
	setUpBug110060_ConstructorPattern();
5221
	setUpBug110060_ConstructorPattern();
5221
	search("AA", CONSTRUCTOR, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
5222
	search("AA", CONSTRUCTOR, REFERENCES, SearchPattern.R_CAMELCASE_MATCH);
5222
	assertSearchResults(
5223
	assertSearchResults(
5223
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" + 
5224
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" +
5224
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" + 
5225
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" +
5225
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5226
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5226
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5227
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5227
	);
5228
	);
5228
}
5229
}
Lines 5231-5243 Link Here
5231
	setUpBug110060_ConstructorPattern();
5232
	setUpBug110060_ConstructorPattern();
5232
	search("AA", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5233
	search("AA", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5233
	assertSearchResults(
5234
	assertSearchResults(
5234
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" + 
5235
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" +
5235
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" + 
5236
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" +
5236
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" + 
5237
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" +
5237
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5238
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5238
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" + 
5239
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" +
5239
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" + 
5240
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" +
5240
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5241
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5241
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5242
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5242
	);
5243
	);
5243
}
5244
}
Lines 5246-5252 Link Here
5246
	setUpBug110060_ConstructorPattern();
5247
	setUpBug110060_ConstructorPattern();
5247
	search("AAx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5248
	search("AAx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5248
	assertSearchResults(
5249
	assertSearchResults(
5249
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" + 
5250
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" +
5250
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH"
5251
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH"
5251
	);
5252
	);
5252
}
5253
}
Lines 5255-5261 Link Here
5255
	setUpBug110060_ConstructorPattern();
5256
	setUpBug110060_ConstructorPattern();
5256
	search("Axx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5257
	search("Axx", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5257
	assertSearchResults(
5258
	assertSearchResults(
5258
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5259
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5259
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5260
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5260
	);
5261
	);
5261
}
5262
}
Lines 5264-5272 Link Here
5264
	setUpBug110060_ConstructorPattern();
5265
	setUpBug110060_ConstructorPattern();
5265
	search("Ax", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5266
	search("Ax", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5266
	assertSearchResults(
5267
	assertSearchResults(
5267
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" + 
5268
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" +
5268
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5269
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5269
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5270
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5270
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5271
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5271
	);
5272
	);
5272
}
5273
}
Lines 5275-5287 Link Here
5275
	setUpBug110060_ConstructorPattern();
5276
	setUpBug110060_ConstructorPattern();
5276
	search("A*A*", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5277
	search("A*A*", CONSTRUCTOR, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5277
	assertSearchResults(
5278
	assertSearchResults(
5278
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" + 
5279
		"src/b110060/AA.java b110060.AA() [AA] EXACT_MATCH\n" +
5279
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" + 
5280
		"src/b110060/AAxx.java b110060.AAxx() [AAxx] EXACT_MATCH\n" +
5280
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" + 
5281
		"src/b110060/AxA.java b110060.AxA() [AxA] EXACT_MATCH\n" +
5281
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" + 
5282
		"src/b110060/AxxAyy.java b110060.AxxAyy() [AxxAyy] EXACT_MATCH\n" +
5282
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" + 
5283
		"src/b110060/Test.java b110060.Test.aa [new AA()] EXACT_MATCH\n" +
5283
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" + 
5284
		"src/b110060/Test.java b110060.Test.aaxx [new AAxx()] EXACT_MATCH\n" +
5284
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" + 
5285
		"src/b110060/Test.java b110060.Test.axa [new AxA()] EXACT_MATCH\n" +
5285
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5286
		"src/b110060/Test.java b110060.Test.axxayy [new AxxAyy()] EXACT_MATCH"
5286
	);
5287
	);
5287
}
5288
}
Lines 5290-5309 Link Here
5290
private void setUpBug110060_MethodPattern() throws CoreException {
5291
private void setUpBug110060_MethodPattern() throws CoreException {
5291
	workingCopies = new ICompilationUnit[1];
5292
	workingCopies = new ICompilationUnit[1];
5292
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5293
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5293
		"package b110060;\n" + 
5294
		"package b110060;\n" +
5294
		"public class Test {\n" +
5295
		"public class Test {\n" +
5295
		"	void aMethodWithNothingSpecial() {}\n" + 
5296
		"	void aMethodWithNothingSpecial() {}\n" +
5296
		"	void aMethodWith1Digit() {}\n" + 
5297
		"	void aMethodWith1Digit() {}\n" +
5297
		"	void aMethodWith1DigitAnd_AnUnderscore() {}\n" + 
5298
		"	void aMethodWith1DigitAnd_AnUnderscore() {}\n" +
5298
		"	void aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() {}\n" + 
5299
		"	void aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() {}\n" +
5299
		"	void otherMethodWhichStartsWithAnotherLetter() {}\n" + 
5300
		"	void otherMethodWhichStartsWithAnotherLetter() {}\n" +
5300
		"	void testReferences() {\n" + 
5301
		"	void testReferences() {\n" +
5301
		"		aMethodWith1Digit();\n" + 
5302
		"		aMethodWith1Digit();\n" +
5302
		"		aMethodWith1DigitAnd_AnUnderscore();\n" + 
5303
		"		aMethodWith1DigitAnd_AnUnderscore();\n" +
5303
		"		aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores();\n" + 
5304
		"		aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores();\n" +
5304
		"		aMethodWithNothingSpecial();\n" + 
5305
		"		aMethodWithNothingSpecial();\n" +
5305
		"		otherMethodWhichStartsWithAnotherLetter();\n" + 
5306
		"		otherMethodWhichStartsWithAnotherLetter();\n" +
5306
		"	}\n" + 
5307
		"	}\n" +
5307
		"}\n"
5308
		"}\n"
5308
	);
5309
	);
5309
}
5310
}
Lines 5323-5331 Link Here
5323
	setUpBug110060_MethodPattern();
5324
	setUpBug110060_MethodPattern();
5324
	search("aMWD", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5325
	search("aMWD", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5325
	assertSearchResults(
5326
	assertSearchResults(
5326
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5327
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5327
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5328
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5328
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5329
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5329
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH"
5330
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH"
5330
	);
5331
	);
5331
}
5332
}
Lines 5334-5346 Link Here
5334
	setUpBug110060_MethodPattern();
5335
	setUpBug110060_MethodPattern();
5335
	search("aMW", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5336
	search("aMW", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5336
	assertSearchResults(
5337
	assertSearchResults(
5337
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" + 
5338
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" +
5338
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5339
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5339
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5340
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5340
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5341
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5341
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5342
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5342
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5343
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5343
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" + 
5344
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" +
5344
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5345
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5345
	);
5346
	);
5346
}
5347
}
Lines 5349-5361 Link Here
5349
	setUpBug110060_MethodPattern();
5350
	setUpBug110060_MethodPattern();
5350
	search("aMethod", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5351
	search("aMethod", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5351
	assertSearchResults(
5352
	assertSearchResults(
5352
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" + 
5353
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" +
5353
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5354
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5354
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5355
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5355
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5356
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5356
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5357
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5357
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5358
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5358
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" + 
5359
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" +
5359
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5360
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH"
5360
	);
5361
	);
5361
}
5362
}
Lines 5364-5374 Link Here
5364
	setUpBug110060_MethodPattern();
5365
	setUpBug110060_MethodPattern();
5365
	search("aMethodWith1", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5366
	search("aMethodWith1", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5366
	assertSearchResults(
5367
	assertSearchResults(
5367
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" + 
5368
		"src/b110060/Test.java void b110060.Test.aMethodWith1Digit() [aMethodWith1Digit] EXACT_MATCH\n" +
5368
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5369
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5369
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5370
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5370
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" + 
5371
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Digit()] EXACT_MATCH\n" +
5371
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5372
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5372
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5373
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5373
	);
5374
	);
5374
}
5375
}
Lines 5377-5389 Link Here
5377
	setUpBug110060_MethodPattern();
5378
	setUpBug110060_MethodPattern();
5378
	search("*Method*With*A*", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5379
	search("*Method*With*A*", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5379
	assertSearchResults(
5380
	assertSearchResults(
5380
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" + 
5381
		"src/b110060/Test.java void b110060.Test.aMethodWithNothingSpecial() [aMethodWithNothingSpecial] EXACT_MATCH\n" +
5381
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" + 
5382
		"src/b110060/Test.java void b110060.Test.aMethodWith1DigitAnd_AnUnderscore() [aMethodWith1DigitAnd_AnUnderscore] EXACT_MATCH\n" +
5382
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5383
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5383
		"src/b110060/Test.java void b110060.Test.otherMethodWhichStartsWithAnotherLetter() [otherMethodWhichStartsWithAnotherLetter] EXACT_MATCH\n" + 
5384
		"src/b110060/Test.java void b110060.Test.otherMethodWhichStartsWithAnotherLetter() [otherMethodWhichStartsWithAnotherLetter] EXACT_MATCH\n" +
5384
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" + 
5385
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1DigitAnd_AnUnderscore()] EXACT_MATCH\n" +
5385
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" + 
5386
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH\n" +
5386
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH\n" + 
5387
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWithNothingSpecial()] EXACT_MATCH\n" +
5387
		"src/b110060/Test.java void b110060.Test.testReferences() [otherMethodWhichStartsWithAnotherLetter()] EXACT_MATCH"
5388
		"src/b110060/Test.java void b110060.Test.testReferences() [otherMethodWhichStartsWithAnotherLetter()] EXACT_MATCH"
5388
	);
5389
	);
5389
}
5390
}
Lines 5398-5404 Link Here
5398
	setUpBug110060_MethodPattern();
5399
	setUpBug110060_MethodPattern();
5399
	search("aMWOOODASU", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5400
	search("aMWOOODASU", METHOD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5400
	assertSearchResults(
5401
	assertSearchResults(
5401
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" + 
5402
		"src/b110060/Test.java void b110060.Test.aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores] EXACT_MATCH\n" +
5402
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5403
		"src/b110060/Test.java void b110060.Test.testReferences() [aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores()] EXACT_MATCH"
5403
	);
5404
	);
5404
}
5405
}
Lines 5407-5426 Link Here
5407
private void setUpBug110060_FieldPattern() throws CoreException {
5408
private void setUpBug110060_FieldPattern() throws CoreException {
5408
	workingCopies = new ICompilationUnit[1];
5409
	workingCopies = new ICompilationUnit[1];
5409
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5410
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110060/Test.java",
5410
		"package b110060;\n" + 
5411
		"package b110060;\n" +
5411
		"public class Test {\n" +
5412
		"public class Test {\n" +
5412
		"	Object aFieldWithNothingSpecial;\n" + 
5413
		"	Object aFieldWithNothingSpecial;\n" +
5413
		"	Object aFieldWithS$Dollar;\n" + 
5414
		"	Object aFieldWithS$Dollar;\n" +
5414
		"	Object aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" + 
5415
		"	Object aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" +
5415
		"	Object aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" + 
5416
		"	Object aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" +
5416
		"	Object otherFieldWhichStartsWithAnotherLetter;\n" + 
5417
		"	Object otherFieldWhichStartsWithAnotherLetter;\n" +
5417
		"	void testReferences() {\n" + 
5418
		"	void testReferences() {\n" +
5418
		"		Object o0 = aFieldWithNothingSpecial;\n" + 
5419
		"		Object o0 = aFieldWithNothingSpecial;\n" +
5419
		"		Object o1 = aFieldWithS$Dollar;\n" + 
5420
		"		Object o1 = aFieldWithS$Dollar;\n" +
5420
		"		Object o2 = aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" + 
5421
		"		Object o2 = aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore;\n" +
5421
		"		Object o3 = aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" + 
5422
		"		Object o3 = aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars;\n" +
5422
		"	}\n" + 
5423
		"	}\n" +
5423
		"	Object oF = otherFieldWhichStartsWithAnotherLetter;\n" + 
5424
		"	Object oF = otherFieldWhichStartsWithAnotherLetter;\n" +
5424
		"}\n"
5425
		"}\n"
5425
	);
5426
	);
5426
}
5427
}
Lines 5428-5436 Link Here
5428
	setUpBug110060_FieldPattern();
5429
	setUpBug110060_FieldPattern();
5429
	search("aFWSD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5430
	search("aFWSD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5430
	assertSearchResults(
5431
	assertSearchResults(
5431
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" + 
5432
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" +
5432
		"src/b110060/Test.java b110060.Test.aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH\n" + 
5433
		"src/b110060/Test.java b110060.Test.aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH\n" +
5433
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH\n" + 
5434
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH\n" +
5434
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH"
5435
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore] EXACT_MATCH"
5435
	);
5436
	);
5436
}
5437
}
Lines 5445-5451 Link Here
5445
	setUpBug110060_FieldPattern();
5446
	setUpBug110060_FieldPattern();
5446
	search("aFWS$", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5447
	search("aFWS$", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5447
	assertSearchResults(
5448
	assertSearchResults(
5448
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" + 
5449
		"src/b110060/Test.java b110060.Test.aFieldWithS$Dollar [aFieldWithS$Dollar] EXACT_MATCH\n" +
5449
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH"
5450
		"src/b110060/Test.java void b110060.Test.testReferences() [aFieldWithS$Dollar] EXACT_MATCH"
5450
	);
5451
	);
5451
}
5452
}
Lines 5454-5460 Link Here
5454
	setUpBug110060_FieldPattern();
5455
	setUpBug110060_FieldPattern();
5455
	search("aSFWSCD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5456
	search("aSFWSCD", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5456
	assertSearchResults(
5457
	assertSearchResults(
5457
		"src/b110060/Test.java b110060.Test.aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH\n" + 
5458
		"src/b110060/Test.java b110060.Test.aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH\n" +
5458
		"src/b110060/Test.java void b110060.Test.testReferences() [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH"
5459
		"src/b110060/Test.java void b110060.Test.testReferences() [aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars] EXACT_MATCH"
5459
	);
5460
	);
5460
}
5461
}
Lines 5463-5470 Link Here
5463
	setUpBug110060_FieldPattern();
5464
	setUpBug110060_FieldPattern();
5464
	search("oF", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5465
	search("oF", FIELD, ALL_OCCURRENCES, SearchPattern.R_CAMELCASE_MATCH);
5465
	assertSearchResults(
5466
	assertSearchResults(
5466
		"src/b110060/Test.java b110060.Test.otherFieldWhichStartsWithAnotherLetter [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH\n" + 
5467
		"src/b110060/Test.java b110060.Test.otherFieldWhichStartsWithAnotherLetter [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH\n" +
5467
		"src/b110060/Test.java b110060.Test.oF [oF] EXACT_MATCH\n" + 
5468
		"src/b110060/Test.java b110060.Test.oF [oF] EXACT_MATCH\n" +
5468
		"src/b110060/Test.java b110060.Test.oF [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH"
5469
		"src/b110060/Test.java b110060.Test.oF [otherFieldWhichStartsWithAnotherLetter] EXACT_MATCH"
5469
	);
5470
	);
5470
}
5471
}
Lines 5476-5483 Link Here
5476
public void testBug110291() throws CoreException {
5477
public void testBug110291() throws CoreException {
5477
	workingCopies = new ICompilationUnit[1];
5478
	workingCopies = new ICompilationUnit[1];
5478
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110291/Test110291XX.java",
5479
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110291/Test110291XX.java",
5479
		"package b110291;\n" + 
5480
		"package b110291;\n" +
5480
		"public class Test110291XX {\n" + 
5481
		"public class Test110291XX {\n" +
5481
		"	class Test110291YY {}" +
5482
		"	class Test110291YY {}" +
5482
		"}\n"
5483
		"}\n"
5483
	);
5484
	);
Lines 5494-5517 Link Here
5494
public void testBug110336a() throws CoreException {
5495
public void testBug110336a() throws CoreException {
5495
	workingCopies = new ICompilationUnit[1];
5496
	workingCopies = new ICompilationUnit[1];
5496
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5497
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5497
		"package b110336;\n" + 
5498
		"package b110336;\n" +
5498
		"public class Test {\n" + 
5499
		"public class Test {\n" +
5499
		"	<TP extends Test> void method(Class<Test> clazz) {\n" + 
5500
		"	<TP extends Test> void method(Class<Test> clazz) {\n" +
5500
		"		Test localVar1 = new Test();\n" + 
5501
		"		Test localVar1 = new Test();\n" +
5501
		"		Class<Test> localVar2 = new Class<Test>();\n" + 
5502
		"		Class<Test> localVar2 = new Class<Test>();\n" +
5502
		"		localVar1.method(localVar2);\n" + 
5503
		"		localVar1.method(localVar2);\n" +
5503
		"	}\n" + 
5504
		"	}\n" +
5504
		"}\n"
5505
		"}\n"
5505
	);
5506
	);
5506
	IType type = this.workingCopies[0].getType("Test");
5507
	IType type = this.workingCopies[0].getType("Test");
5507
	TypeReferencesCollector collector = new TypeReferencesCollector();
5508
	TypeReferencesCollector collector = new TypeReferencesCollector();
5508
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5509
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5509
	assertSearchResults(
5510
	assertSearchResults(
5510
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).TP [Test]\n" + 
5511
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).TP [Test]\n" +
5511
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).clazz [Test]\n" + 
5512
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).clazz [Test]\n" +
5512
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" + 
5513
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" +
5513
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" + 
5514
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar1 [Test]\n" +
5514
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]\n" + 
5515
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]\n" +
5515
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]",
5516
		"src/b110336/Test.java void b110336.Test.method(Class<Test>).localVar2 [Test]",
5516
		collector
5517
		collector
5517
	);
5518
	);
Lines 5519-5546 Link Here
5519
public void testBug110336b() throws CoreException {
5520
public void testBug110336b() throws CoreException {
5520
	workingCopies = new ICompilationUnit[1];
5521
	workingCopies = new ICompilationUnit[1];
5521
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5522
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5522
		"package b110336;\n" + 
5523
		"package b110336;\n" +
5523
		"public class Test {\n" + 
5524
		"public class Test {\n" +
5524
		"	void method1(Test methodParam) {\n" + 
5525
		"	void method1(Test methodParam) {\n" +
5525
		"		Test localVar1 = new Test(){\n" + 
5526
		"		Test localVar1 = new Test(){\n" +
5526
		"			Class c = Test.class;\n" + 
5527
		"			Class c = Test.class;\n" +
5527
		"			<TP extends Test> void foo(){\n" + 
5528
		"			<TP extends Test> void foo(){\n" +
5528
		"				Test o = (Test) null;\n" + 
5529
		"				Test o = (Test) null;\n" +
5529
		"			}\n" + 
5530
		"			}\n" +
5530
		"		};\n" + 
5531
		"		};\n" +
5531
		"	}	\n" + 
5532
		"	}	\n" +
5532
		"}\n"
5533
		"}\n"
5533
	);
5534
	);
5534
	IType type = this.workingCopies[0].getType("Test");
5535
	IType type = this.workingCopies[0].getType("Test");
5535
	TypeReferencesCollector collector = new TypeReferencesCollector();
5536
	TypeReferencesCollector collector = new TypeReferencesCollector();
5536
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5537
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5537
	assertSearchResults(
5538
	assertSearchResults(
5538
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1 [Test]\n" + 
5539
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1 [Test]\n" +
5539
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1.c [Test]\n" + 
5540
		"src/b110336/Test.java void b110336.Test.method1(Test):<anonymous>#1.c [Test]\n" +
5540
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().TP [Test]\n" + 
5541
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().TP [Test]\n" +
5541
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" + 
5542
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" +
5542
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" + 
5543
		"src/b110336/Test.java void void b110336.Test.method1(Test):<anonymous>#1.foo().o [Test]\n" +
5543
		"src/b110336/Test.java void b110336.Test.method1(Test).methodParam [Test]\n" + 
5544
		"src/b110336/Test.java void b110336.Test.method1(Test).methodParam [Test]\n" +
5544
		"src/b110336/Test.java void b110336.Test.method1(Test).localVar1 [Test]",
5545
		"src/b110336/Test.java void b110336.Test.method1(Test).localVar1 [Test]",
5545
		collector
5546
		collector
5546
	);
5547
	);
Lines 5548-5565 Link Here
5548
public void testBug110336c() throws CoreException {
5549
public void testBug110336c() throws CoreException {
5549
	workingCopies = new ICompilationUnit[1];
5550
	workingCopies = new ICompilationUnit[1];
5550
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5551
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5551
		"package b110336;\n" + 
5552
		"package b110336;\n" +
5552
		"public class Test<TP extends X> {\n" + 
5553
		"public class Test<TP extends X> {\n" +
5553
		"	X x;\n" + 
5554
		"	X x;\n" +
5554
		"\n" + 
5555
		"\n" +
5555
		"}\n" + 
5556
		"}\n" +
5556
		"class X {}\n"
5557
		"class X {}\n"
5557
	);
5558
	);
5558
	IType type = this.workingCopies[0].getType("X");
5559
	IType type = this.workingCopies[0].getType("X");
5559
	TypeReferencesCollector collector = new TypeReferencesCollector();
5560
	TypeReferencesCollector collector = new TypeReferencesCollector();
5560
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5561
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5561
	assertSearchResults(
5562
	assertSearchResults(
5562
		"src/b110336/Test.java b110336.Test.TP [X]\n" + 
5563
		"src/b110336/Test.java b110336.Test.TP [X]\n" +
5563
		"src/b110336/Test.java b110336.Test.x [X]",
5564
		"src/b110336/Test.java b110336.Test.x [X]",
5564
		collector
5565
		collector
5565
	);
5566
	);
Lines 5567-5588 Link Here
5567
public void testBug110336d() throws CoreException {
5568
public void testBug110336d() throws CoreException {
5568
	workingCopies = new ICompilationUnit[1];
5569
	workingCopies = new ICompilationUnit[1];
5569
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5570
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5570
		"package b110336;\n" + 
5571
		"package b110336;\n" +
5571
		"public class Test {\n" + 
5572
		"public class Test {\n" +
5572
		"	Test a1Test = null, b1Test = new Test(), c1Test;\n" + 
5573
		"	Test a1Test = null, b1Test = new Test(), c1Test;\n" +
5573
		"	Test a2Test = new Test(), b2Test, c2Test = null;\n" + 
5574
		"	Test a2Test = new Test(), b2Test, c2Test = null;\n" +
5574
		"	Test a3Test, b3Test = null, c3Test = new Test();\n" + 
5575
		"	Test a3Test, b3Test = null, c3Test = new Test();\n" +
5575
		"}\n"
5576
		"}\n"
5576
	);
5577
	);
5577
	IType type = this.workingCopies[0].getType("Test");
5578
	IType type = this.workingCopies[0].getType("Test");
5578
	TypeReferencesCollector collector = new TypeReferencesCollector();
5579
	TypeReferencesCollector collector = new TypeReferencesCollector();
5579
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5580
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5580
	assertSearchResults(
5581
	assertSearchResults(
5581
		"src/b110336/Test.java b110336.Test.a1Test [Test]+[b1Test,c1Test]\n" + 
5582
		"src/b110336/Test.java b110336.Test.a1Test [Test]+[b1Test,c1Test]\n" +
5582
		"src/b110336/Test.java b110336.Test.b1Test [Test]\n" + 
5583
		"src/b110336/Test.java b110336.Test.b1Test [Test]\n" +
5583
		"src/b110336/Test.java b110336.Test.a2Test [Test]+[b2Test,c2Test]\n" + 
5584
		"src/b110336/Test.java b110336.Test.a2Test [Test]+[b2Test,c2Test]\n" +
5584
		"src/b110336/Test.java b110336.Test.a2Test [Test]\n" + 
5585
		"src/b110336/Test.java b110336.Test.a2Test [Test]\n" +
5585
		"src/b110336/Test.java b110336.Test.a3Test [Test]+[b3Test,c3Test]\n" + 
5586
		"src/b110336/Test.java b110336.Test.a3Test [Test]+[b3Test,c3Test]\n" +
5586
		"src/b110336/Test.java b110336.Test.c3Test [Test]",
5587
		"src/b110336/Test.java b110336.Test.c3Test [Test]",
5587
		collector
5588
		collector
5588
	);
5589
	);
Lines 5590-5613 Link Here
5590
public void testBug110336e() throws CoreException {
5591
public void testBug110336e() throws CoreException {
5591
	workingCopies = new ICompilationUnit[1];
5592
	workingCopies = new ICompilationUnit[1];
5592
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5593
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5593
		"package b110336;\n" + 
5594
		"package b110336;\n" +
5594
		"public class Test {\n" + 
5595
		"public class Test {\n" +
5595
		"	void foo() {\n" + 
5596
		"	void foo() {\n" +
5596
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" + 
5597
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" +
5597
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" + 
5598
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" +
5598
		"		Test lv7, lv8 = null, lv9 = new Test();\n" + 
5599
		"		Test lv7, lv8 = null, lv9 = new Test();\n" +
5599
		"	}\n" + 
5600
		"	}\n" +
5600
		"}\n"
5601
		"}\n"
5601
	);
5602
	);
5602
	IType type = this.workingCopies[0].getType("Test");
5603
	IType type = this.workingCopies[0].getType("Test");
5603
	TypeReferencesCollector collector = new TypeReferencesCollector();
5604
	TypeReferencesCollector collector = new TypeReferencesCollector();
5604
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5605
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5605
	assertSearchResults(
5606
	assertSearchResults(
5606
		"src/b110336/Test.java void b110336.Test.foo().lv1 [Test]+[lv2,lv3]\n" + 
5607
		"src/b110336/Test.java void b110336.Test.foo().lv1 [Test]+[lv2,lv3]\n" +
5607
		"src/b110336/Test.java void b110336.Test.foo().lv2 [Test]\n" + 
5608
		"src/b110336/Test.java void b110336.Test.foo().lv2 [Test]\n" +
5608
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]+[lv5,lv6]\n" + 
5609
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]+[lv5,lv6]\n" +
5609
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]\n" + 
5610
		"src/b110336/Test.java void b110336.Test.foo().lv4 [Test]\n" +
5610
		"src/b110336/Test.java void b110336.Test.foo().lv7 [Test]+[lv8,lv9]\n" + 
5611
		"src/b110336/Test.java void b110336.Test.foo().lv7 [Test]+[lv8,lv9]\n" +
5611
		"src/b110336/Test.java void b110336.Test.foo().lv9 [Test]",
5612
		"src/b110336/Test.java void b110336.Test.foo().lv9 [Test]",
5612
		collector
5613
		collector
5613
	);
5614
	);
Lines 5615-5642 Link Here
5615
public void testBug110336f() throws CoreException {
5616
public void testBug110336f() throws CoreException {
5616
	workingCopies = new ICompilationUnit[1];
5617
	workingCopies = new ICompilationUnit[1];
5617
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5618
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5618
		"package b110336;\n" + 
5619
		"package b110336;\n" +
5619
		"public class Test extends Exception {\n" + 
5620
		"public class Test extends Exception {\n" +
5620
		"        void foo(Test test1) { // <- no local element\n" + 
5621
		"        void foo(Test test1) { // <- no local element\n" +
5621
		"                Test test2; // <- local element\n" + 
5622
		"                Test test2; // <- local element\n" +
5622
		"                try {\n" + 
5623
		"                try {\n" +
5623
		"                        throw new Test();\n" + 
5624
		"                        throw new Test();\n" +
5624
		"                }\n" + 
5625
		"                }\n" +
5625
		"                catch (Test test4) { // <- no local element\n" + 
5626
		"                catch (Test test4) { // <- no local element\n" +
5626
		"                }\n" + 
5627
		"                }\n" +
5627
		"                for(Test test3;;) {} // <- local element\n" + 
5628
		"                for(Test test3;;) {} // <- local element\n" +
5628
		"        }\n" + 
5629
		"        }\n" +
5629
		"\n" + 
5630
		"\n" +
5630
		"}\n"
5631
		"}\n"
5631
	);
5632
	);
5632
	IType type = this.workingCopies[0].getType("Test");
5633
	IType type = this.workingCopies[0].getType("Test");
5633
	TypeReferencesCollector collector = new TypeReferencesCollector();
5634
	TypeReferencesCollector collector = new TypeReferencesCollector();
5634
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5635
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5635
	assertSearchResults(
5636
	assertSearchResults(
5636
		"src/b110336/Test.java void b110336.Test.foo(Test).test1 [Test]\n" + 
5637
		"src/b110336/Test.java void b110336.Test.foo(Test).test1 [Test]\n" +
5637
		"src/b110336/Test.java void b110336.Test.foo(Test).test2 [Test]\n" + 
5638
		"src/b110336/Test.java void b110336.Test.foo(Test).test2 [Test]\n" +
5638
		"src/b110336/Test.java void b110336.Test.foo(Test) [Test]\n" + 
5639
		"src/b110336/Test.java void b110336.Test.foo(Test) [Test]\n" +
5639
		"src/b110336/Test.java void b110336.Test.foo(Test).test4 [Test]\n" + 
5640
		"src/b110336/Test.java void b110336.Test.foo(Test).test4 [Test]\n" +
5640
		"src/b110336/Test.java void b110336.Test.foo(Test).test3 [Test]",
5641
		"src/b110336/Test.java void b110336.Test.foo(Test).test3 [Test]",
5641
		collector
5642
		collector
5642
	);
5643
	);
Lines 5644-5667 Link Here
5644
public void testBug110336g() throws CoreException {
5645
public void testBug110336g() throws CoreException {
5645
	workingCopies = new ICompilationUnit[1];
5646
	workingCopies = new ICompilationUnit[1];
5646
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5647
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5647
		"package b110336;\n" + 
5648
		"package b110336;\n" +
5648
		"public class Test {\n" + 
5649
		"public class Test {\n" +
5649
		"	{\n" + 
5650
		"	{\n" +
5650
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" + 
5651
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" +
5651
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" + 
5652
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" +
5652
		"		Test lv7, lv8 = null, lv9 = new Test();\n" + 
5653
		"		Test lv7, lv8 = null, lv9 = new Test();\n" +
5653
		"	}\n" + 
5654
		"	}\n" +
5654
		"}\n"
5655
		"}\n"
5655
	);
5656
	);
5656
	IType type = this.workingCopies[0].getType("Test");
5657
	IType type = this.workingCopies[0].getType("Test");
5657
	TypeReferencesCollector collector = new TypeReferencesCollector();
5658
	TypeReferencesCollector collector = new TypeReferencesCollector();
5658
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5659
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5659
	assertSearchResults(
5660
	assertSearchResults(
5660
		"src/b110336/Test.java b110336.Test.{}.lv1 [Test]+[lv2,lv3]\n" + 
5661
		"src/b110336/Test.java b110336.Test.{}.lv1 [Test]+[lv2,lv3]\n" +
5661
		"src/b110336/Test.java b110336.Test.{}.lv2 [Test]\n" + 
5662
		"src/b110336/Test.java b110336.Test.{}.lv2 [Test]\n" +
5662
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]+[lv5,lv6]\n" + 
5663
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]+[lv5,lv6]\n" +
5663
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]\n" + 
5664
		"src/b110336/Test.java b110336.Test.{}.lv4 [Test]\n" +
5664
		"src/b110336/Test.java b110336.Test.{}.lv7 [Test]+[lv8,lv9]\n" + 
5665
		"src/b110336/Test.java b110336.Test.{}.lv7 [Test]+[lv8,lv9]\n" +
5665
		"src/b110336/Test.java b110336.Test.{}.lv9 [Test]",
5666
		"src/b110336/Test.java b110336.Test.{}.lv9 [Test]",
5666
		collector
5667
		collector
5667
	);
5668
	);
Lines 5669-5692 Link Here
5669
public void testBug110336h() throws CoreException {
5670
public void testBug110336h() throws CoreException {
5670
	workingCopies = new ICompilationUnit[1];
5671
	workingCopies = new ICompilationUnit[1];
5671
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5672
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b110336/Test.java",
5672
		"package b110336;\n" + 
5673
		"package b110336;\n" +
5673
		"public class Test {\n" + 
5674
		"public class Test {\n" +
5674
		"	static {\n" + 
5675
		"	static {\n" +
5675
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" + 
5676
		"		Test lv1 = null, lv2 = new Test(), lv3;\n" +
5676
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" + 
5677
		"		Test lv4 = new Test(), lv5, lv6 = null;\n" +
5677
		"		Test lv7, lv8 = null, lv9 = new Test();\n" + 
5678
		"		Test lv7, lv8 = null, lv9 = new Test();\n" +
5678
		"	}\n" + 
5679
		"	}\n" +
5679
		"}\n"
5680
		"}\n"
5680
	);
5681
	);
5681
	IType type = this.workingCopies[0].getType("Test");
5682
	IType type = this.workingCopies[0].getType("Test");
5682
	TypeReferencesCollector collector = new TypeReferencesCollector();
5683
	TypeReferencesCollector collector = new TypeReferencesCollector();
5683
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5684
	search(type, REFERENCES, EXACT_RULE, getJavaSearchScopeBugs(), collector);
5684
	assertSearchResults(
5685
	assertSearchResults(
5685
		"src/b110336/Test.java b110336.Test.static {}.lv1 [Test]+[lv2,lv3]\n" + 
5686
		"src/b110336/Test.java b110336.Test.static {}.lv1 [Test]+[lv2,lv3]\n" +
5686
		"src/b110336/Test.java b110336.Test.static {}.lv2 [Test]\n" + 
5687
		"src/b110336/Test.java b110336.Test.static {}.lv2 [Test]\n" +
5687
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]+[lv5,lv6]\n" + 
5688
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]+[lv5,lv6]\n" +
5688
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]\n" + 
5689
		"src/b110336/Test.java b110336.Test.static {}.lv4 [Test]\n" +
5689
		"src/b110336/Test.java b110336.Test.static {}.lv7 [Test]+[lv8,lv9]\n" + 
5690
		"src/b110336/Test.java b110336.Test.static {}.lv7 [Test]+[lv8,lv9]\n" +
5690
		"src/b110336/Test.java b110336.Test.static {}.lv9 [Test]",
5691
		"src/b110336/Test.java b110336.Test.static {}.lv9 [Test]",
5691
		collector
5692
		collector
5692
	);
5693
	);
Lines 5728-5745 Link Here
5728
   );
5729
   );
5729
	assertSearchResults(
5730
	assertSearchResults(
5730
		"Unexpected all type names",
5731
		"Unexpected all type names",
5731
		"java.lang.CharSequence\n" + 
5732
		"java.lang.CharSequence\n" +
5732
		"java.lang.Class\n" + 
5733
		"java.lang.Class\n" +
5733
		"java.lang.CloneNotSupportedException\n" + 
5734
		"java.lang.CloneNotSupportedException\n" +
5734
		"java.lang.Comparable\n" + 
5735
		"java.lang.Comparable\n" +
5735
		"java.lang.Enum\n" + 
5736
		"java.lang.Enum\n" +
5736
		"java.lang.Error\n" + 
5737
		"java.lang.Error\n" +
5737
		"java.lang.Exception\n" + 
5738
		"java.lang.Exception\n" +
5738
		"java.lang.IllegalMonitorStateException\n" + 
5739
		"java.lang.IllegalMonitorStateException\n" +
5739
		"java.lang.InterruptedException\n" + 
5740
		"java.lang.InterruptedException\n" +
5740
		"java.lang.Object\n" + 
5741
		"java.lang.Object\n" +
5741
		"java.lang.RuntimeException\n" + 
5742
		"java.lang.RuntimeException\n" +
5742
		"java.lang.String\n" + 
5743
		"java.lang.String\n" +
5743
		"java.lang.Throwable",
5744
		"java.lang.Throwable",
5744
		requestor);
5745
		requestor);
5745
}
5746
}
Lines 5751-5765 Link Here
5751
public void testBug114539() throws CoreException {
5752
public void testBug114539() throws CoreException {
5752
	workingCopies = new ICompilationUnit[2];
5753
	workingCopies = new ICompilationUnit[2];
5753
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b114539/Foo.java",
5754
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b114539/Foo.java",
5754
		"package b114539;\n" + 
5755
		"package b114539;\n" +
5755
		"public class Foo {\n" + 
5756
		"public class Foo {\n" +
5756
		"	int bar=Bar.FOO;\n" + 
5757
		"	int bar=Bar.FOO;\n" +
5757
		"}\n"
5758
		"}\n"
5758
	);
5759
	);
5759
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b114539/Bar.java",
5760
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b114539/Bar.java",
5760
		"package b114539;\n" + 
5761
		"package b114539;\n" +
5761
		"public class Bar {\n" + 
5762
		"public class Bar {\n" +
5762
		"	private static final int FOO=0;\n" + 
5763
		"	private static final int FOO=0;\n" +
5763
		"}\n"
5764
		"}\n"
5764
	);
5765
	);
5765
	IField field = this.workingCopies[1].getType("Bar").getField("FOO");
5766
	IField field = this.workingCopies[1].getType("Bar").getField("FOO");
Lines 5776-5794 Link Here
5776
public void testBug116459() throws CoreException {
5777
public void testBug116459() throws CoreException {
5777
	workingCopies = new ICompilationUnit[1];
5778
	workingCopies = new ICompilationUnit[1];
5778
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/p1/X.java",
5779
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/p1/X.java",
5779
		"package p1;\n" + 
5780
		"package p1;\n" +
5780
		"class X<T> {\n" + 
5781
		"class X<T> {\n" +
5781
		"	X<T> gen;\n" + 
5782
		"	X<T> gen;\n" +
5782
		"	X<String> param;\n" + 
5783
		"	X<String> param;\n" +
5783
		"	X raw;\n" + 
5784
		"	X raw;\n" +
5784
		"}"
5785
		"}"
5785
	);
5786
	);
5786
	IType type = workingCopies[0].getType("X");
5787
	IType type = workingCopies[0].getType("X");
5787
	this.resultCollector.showRule = true;
5788
	this.resultCollector.showRule = true;
5788
	search(type, REFERENCES, ERASURE_RULE);
5789
	search(type, REFERENCES, ERASURE_RULE);
5789
	assertSearchResults(
5790
	assertSearchResults(
5790
		"src/p1/X.java p1.X.gen [X] EXACT_MATCH\n" + 
5791
		"src/p1/X.java p1.X.gen [X] EXACT_MATCH\n" +
5791
		"src/p1/X.java p1.X.param [X] ERASURE_MATCH\n" + 
5792
		"src/p1/X.java p1.X.param [X] ERASURE_MATCH\n" +
5792
		"src/p1/X.java p1.X.raw [X] ERASURE_RAW_MATCH"
5793
		"src/p1/X.java p1.X.raw [X] ERASURE_RAW_MATCH"
5793
	);
5794
	);
5794
}
5795
}
Lines 5800-5810 Link Here
5800
public void testBug119545() throws CoreException {
5801
public void testBug119545() throws CoreException {
5801
	workingCopies = new ICompilationUnit[1];
5802
	workingCopies = new ICompilationUnit[1];
5802
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b119545/Test.java",
5803
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b119545/Test.java",
5803
		"package b119545;\n" + 
5804
		"package b119545;\n" +
5804
		"class Test {\n" + 
5805
		"class Test {\n" +
5805
		"	void foo(Object o1, Object o2){\n" + 
5806
		"	void foo(Object o1, Object o2){\n" +
5806
		"		if (o1.equals(o2)) {}\n" + 
5807
		"		if (o1.equals(o2)) {}\n" +
5807
		"	}\n" + 
5808
		"	}\n" +
5808
		"}\n"
5809
		"}\n"
5809
	);
5810
	);
5810
	IType type = workingCopies[0].getType("Test");
5811
	IType type = workingCopies[0].getType("Test");
Lines 5822-5839 Link Here
5822
public void testBug120816a() throws CoreException {
5823
public void testBug120816a() throws CoreException {
5823
	workingCopies = new ICompilationUnit[2];
5824
	workingCopies = new ICompilationUnit[2];
5824
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5825
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5825
		"package b120816;\n" + 
5826
		"package b120816;\n" +
5826
		"public class Test<E> {\n" + 
5827
		"public class Test<E> {\n" +
5827
		"	String foo(E e) { return \"\"; }\n" + 
5828
		"	String foo(E e) { return \"\"; }\n" +
5828
		"}\n"
5829
		"}\n"
5829
	);
5830
	);
5830
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b120816/Sub.java",
5831
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b120816/Sub.java",
5831
		"package b120816;\n" + 
5832
		"package b120816;\n" +
5832
		"public class Sub extends Test<Exception> {\n" +
5833
		"public class Sub extends Test<Exception> {\n" +
5833
		"	String foo(RuntimeException e) { return \"\"; }\n" + 
5834
		"	String foo(RuntimeException e) { return \"\"; }\n" +
5834
		"	String foo(Exception e) {\n" + 
5835
		"	String foo(Exception e) {\n" +
5835
		"		return super.foo(e);\n" + 
5836
		"		return super.foo(e);\n" +
5836
		"	}\n" + 
5837
		"	}\n" +
5837
		"}\n"
5838
		"}\n"
5838
	);
5839
	);
5839
	search("* String (Exception)", METHOD, DECLARATIONS);
5840
	search("* String (Exception)", METHOD, DECLARATIONS);
Lines 5844-5858 Link Here
5844
public void testBug120816b() throws CoreException {
5845
public void testBug120816b() throws CoreException {
5845
	workingCopies = new ICompilationUnit[1];
5846
	workingCopies = new ICompilationUnit[1];
5846
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5847
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b120816/Test.java",
5847
		"package b120816;\n" + 
5848
		"package b120816;\n" +
5848
		"public class Test<E> {\n" + 
5849
		"public class Test<E> {\n" +
5849
		"	String foo(E e) { return \"\"; }\n" + 
5850
		"	String foo(E e) { return \"\"; }\n" +
5850
		"}\n" +
5851
		"}\n" +
5851
		"class Sub extends Test<Exception> {\n" +
5852
		"class Sub extends Test<Exception> {\n" +
5852
		"	String foo(RuntimeException e) { return \"\"; }\n" + 
5853
		"	String foo(RuntimeException e) { return \"\"; }\n" +
5853
		"	String foo(Exception e) {\n" + 
5854
		"	String foo(Exception e) {\n" +
5854
		"		return super.foo(e);\n" + 
5855
		"		return super.foo(e);\n" +
5855
		"	}\n" + 
5856
		"	}\n" +
5856
		"}\n"
5857
		"}\n"
5857
	);
5858
	);
5858
	search("* String (Exception)", METHOD, DECLARATIONS);
5859
	search("* String (Exception)", METHOD, DECLARATIONS);
Lines 5868-5882 Link Here
5868
private void setUpBug122442a() throws CoreException {
5869
private void setUpBug122442a() throws CoreException {
5869
	workingCopies = new ICompilationUnit[3];
5870
	workingCopies = new ICompilationUnit[3];
5870
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/I.java",
5871
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/I.java",
5871
		"package b122442;\n" + 
5872
		"package b122442;\n" +
5872
		"public interface I {}\n"
5873
		"public interface I {}\n"
5873
	);
5874
	);
5874
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b122442/II.java",
5875
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b122442/II.java",
5875
		"package b122442;\n" + 
5876
		"package b122442;\n" +
5876
		"public interface II extends I {}\n"
5877
		"public interface II extends I {}\n"
5877
	);
5878
	);
5878
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b122442/X.java",
5879
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b122442/X.java",
5879
		"package b122442;\n" + 
5880
		"package b122442;\n" +
5880
		"public class X implements I {}\n"
5881
		"public class X implements I {}\n"
5881
	);
5882
	);
5882
}
5883
}
Lines 5884-5890 Link Here
5884
	setUpBug122442a();
5885
	setUpBug122442a();
5885
	search("I", TYPE, IMPLEMENTORS);
5886
	search("I", TYPE, IMPLEMENTORS);
5886
	assertSearchResults(
5887
	assertSearchResults(
5887
		"src/b122442/II.java b122442.II [I] EXACT_MATCH\n" + 
5888
		"src/b122442/II.java b122442.II [I] EXACT_MATCH\n" +
5888
		"src/b122442/X.java b122442.X [I] EXACT_MATCH"
5889
		"src/b122442/X.java b122442.X [I] EXACT_MATCH"
5889
	);
5890
	);
5890
}
5891
}
Lines 5905-5918 Link Here
5905
private void setUpBug122442d() throws CoreException {
5906
private void setUpBug122442d() throws CoreException {
5906
	workingCopies = new ICompilationUnit[1];
5907
	workingCopies = new ICompilationUnit[1];
5907
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/User.java",
5908
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b122442/User.java",
5908
		"class Klass {}\n" + 
5909
		"class Klass {}\n" +
5909
		"interface Interface {}\n" + 
5910
		"interface Interface {}\n" +
5910
		"class User {\n" + 
5911
		"class User {\n" +
5911
		"    void m() {\n" + 
5912
		"    void m() {\n" +
5912
		"        new Klass() {};\n" + 
5913
		"        new Klass() {};\n" +
5913
		"        new Interface() {};\n" + 
5914
		"        new Interface() {};\n" +
5914
		"    }\n" + 
5915
		"    }\n" +
5915
		"}\n" + 
5916
		"}\n" +
5916
		"class Sub extends Klass {}"
5917
		"class Sub extends Klass {}"
5917
	);
5918
	);
5918
}
5919
}
Lines 5941-5947 Link Here
5941
	setUpBug122442d();
5942
	setUpBug122442d();
5942
	search("Klass", TYPE, IMPLEMENTORS);
5943
	search("Klass", TYPE, IMPLEMENTORS);
5943
	assertSearchResults(
5944
	assertSearchResults(
5944
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" + 
5945
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" +
5945
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5946
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5946
	);
5947
	);
5947
}
5948
}
Lines 5956-5962 Link Here
5956
	setUpBug122442d();
5957
	setUpBug122442d();
5957
	search("Klass", CLASS, IMPLEMENTORS);
5958
	search("Klass", CLASS, IMPLEMENTORS);
5958
	assertSearchResults(
5959
	assertSearchResults(
5959
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" + 
5960
		"src/b122442/User.java void b122442.User.m():<anonymous>#1 [Klass] EXACT_MATCH\n" +
5960
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5961
		"src/b122442/User.java b122442.Sub [Klass] EXACT_MATCH"
5961
	);
5962
	);
5962
}
5963
}
Lines 5969-5979 Link Here
5969
	IType type = getPackageFragment("JavaSearchBugs", "lib/b123679.jar", "pack").getClassFile("I123679.class").getType();
5970
	IType type = getPackageFragment("JavaSearchBugs", "lib/b123679.jar", "pack").getClassFile("I123679.class").getType();
5970
	search(type, REFERENCES);
5971
	search(type, REFERENCES);
5971
	assertSearchResults(
5972
	assertSearchResults(
5972
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" + 
5973
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" +
5973
		"lib/b123679.jar test.Test$StaticClass$Member.parent EXACT_MATCH\n" + 
5974
		"lib/b123679.jar test.Test$StaticClass$Member.parent EXACT_MATCH\n" +
5974
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" + 
5975
		"lib/b123679.jar test.<anonymous> EXACT_MATCH\n" +
5975
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" + 
5976
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" +
5976
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" + 
5977
		"lib/b123679.jar test.Test$StaticClass$Member(test.Test.StaticClass, java.lang.Object) EXACT_MATCH\n" +
5977
		"lib/b123679.jar pack.I123679 test.Test$StaticClass$Member.getParent() EXACT_MATCH"
5978
		"lib/b123679.jar pack.I123679 test.Test$StaticClass$Member.getParent() EXACT_MATCH"
5978
	);
5979
	);
5979
}
5980
}
Lines 5982-6021 Link Here
5982
	IType type = unit.getType("I123679");
5983
	IType type = unit.getType("I123679");
5983
	search(type, REFERENCES);
5984
	search(type, REFERENCES);
5984
	assertSearchResults(
5985
	assertSearchResults(
5985
		"src/b123679/test/Test.java [b123679.pack.I123679] EXACT_MATCH\n" + 
5986
		"src/b123679/test/Test.java [b123679.pack.I123679] EXACT_MATCH\n" +
5986
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" + 
5987
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" +
5987
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" + 
5988
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" +
5988
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
5989
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
5989
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
5990
		"src/b123679/test/Test.java b123679.test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
5990
		"src/b123679/test/Test.java I123679 b123679.test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
5991
		"src/b123679/test/Test.java I123679 b123679.test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
5991
	);
5992
	);
5992
}
5993
}
5993
public void testBug123679_wc() throws CoreException {
5994
public void testBug123679_wc() throws CoreException {
5994
	workingCopies = new ICompilationUnit[2];
5995
	workingCopies = new ICompilationUnit[2];
5995
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/I122679.java",
5996
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/I122679.java",
5996
		"package pack;\n" + 
5997
		"package pack;\n" +
5997
		"public interface I123679 {\n" + 
5998
		"public interface I123679 {\n" +
5998
		"}\n"
5999
		"}\n"
5999
	);
6000
	);
6000
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
6001
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
6001
		"package test;\n" + 
6002
		"package test;\n" +
6002
		"import pack.I123679;\n" + 
6003
		"import pack.I123679;\n" +
6003
		"public class Test {\n" + 
6004
		"public class Test {\n" +
6004
		"	static class StaticClass {\n" + 
6005
		"	static class StaticClass {\n" +
6005
		"		class Member {\n" + 
6006
		"		class Member {\n" +
6006
		"			private I123679 parent;\n" + 
6007
		"			private I123679 parent;\n" +
6007
		"			Member(Object obj) {\n" + 
6008
		"			Member(Object obj) {\n" +
6008
		"				if (obj instanceof I123679) {\n" + 
6009
		"				if (obj instanceof I123679) {\n" +
6009
		"					parent = (I123679) obj;\n" + 
6010
		"					parent = (I123679) obj;\n" +
6010
		"				} else {\n" + 
6011
		"				} else {\n" +
6011
		"					parent = new I123679() {};\n" + 
6012
		"					parent = new I123679() {};\n" +
6012
		"				}\n" + 
6013
		"				}\n" +
6013
		"			}\n" + 
6014
		"			}\n" +
6014
		"			I123679 getParent() {\n" + 
6015
		"			I123679 getParent() {\n" +
6015
		"				return parent;\n" + 
6016
		"				return parent;\n" +
6016
		"			}\n" + 
6017
		"			}\n" +
6017
		"		}\n" + 
6018
		"		}\n" +
6018
		"	}\n" + 
6019
		"	}\n" +
6019
		"}\n"
6020
		"}\n"
6020
	);
6021
	);
6021
	IType type = workingCopies[0].getType("I123679");
6022
	IType type = workingCopies[0].getType("I123679");
Lines 6023-6032 Link Here
6023
	assertSearchResults(
6024
	assertSearchResults(
6024
		// import reference is not found because package fragment and CU do not exist on disk
6025
		// import reference is not found because package fragment and CU do not exist on disk
6025
		// So, PackageReferenceLocator.isDeclaringPackageFragment(...) returns false and S.E. misses this match
6026
		// So, PackageReferenceLocator.isDeclaringPackageFragment(...) returns false and S.E. misses this match
6026
		"src/test/Test.java test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" + 
6027
		"src/test/Test.java test.Test$StaticClass$Member.parent [I123679] EXACT_MATCH\n" +
6027
		"src/test/Test.java test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" + 
6028
		"src/test/Test.java test.Test$StaticClass$Member(Object):<anonymous>#1 [I123679] EXACT_MATCH\n" +
6028
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
6029
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
6029
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" + 
6030
		"src/test/Test.java test.Test$StaticClass$Member(Object) [I123679] EXACT_MATCH\n" +
6030
		"src/test/Test.java I123679 test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
6031
		"src/test/Test.java I123679 test.Test$StaticClass$Member.getParent() [I123679] EXACT_MATCH"
6031
	);
6032
	);
6032
}
6033
}
Lines 6039-6086 Link Here
6039
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "E.class").getType();
6040
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "E.class").getType();
6040
	search(type, REFERENCES);
6041
	search(type, REFERENCES);
6041
	assertSearchResults(
6042
	assertSearchResults(
6042
		"lib/b124469.jar pack.E pack.A1.value() EXACT_MATCH\n" + 
6043
		"lib/b124469.jar pack.E pack.A1.value() EXACT_MATCH\n" +
6043
		"lib/b124469.jar pack.E[] pack.A1.list() EXACT_MATCH\n" + 
6044
		"lib/b124469.jar pack.E[] pack.A1.list() EXACT_MATCH\n" +
6044
		"lib/b124469.jar pack.E pack.A2.value() EXACT_MATCH\n" + 
6045
		"lib/b124469.jar pack.E pack.A2.value() EXACT_MATCH\n" +
6045
		"lib/b124469.jar pack.E[] pack.A2.list() EXACT_MATCH\n" + 
6046
		"lib/b124469.jar pack.E[] pack.A2.list() EXACT_MATCH\n" +
6046
		"lib/b124469.jar pack.E pack.A3.value() EXACT_MATCH\n" + 
6047
		"lib/b124469.jar pack.E pack.A3.value() EXACT_MATCH\n" +
6047
		"lib/b124469.jar pack.E[] pack.A3.list() EXACT_MATCH\n" + 
6048
		"lib/b124469.jar pack.E[] pack.A3.list() EXACT_MATCH\n" +
6048
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6049
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6049
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6050
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6050
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6051
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6051
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6052
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6052
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6053
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6053
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6054
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6054
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6055
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6055
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6056
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6056
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6057
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6057
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6058
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6058
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6059
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6059
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6060
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6060
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6061
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6061
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6062
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6062
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6063
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6063
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6064
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6064
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6065
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6065
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6066
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6066
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6067
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6067
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6068
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6068
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6069
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6069
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6070
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6070
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6071
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6071
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6072
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6072
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6073
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6073
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6074
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6074
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6075
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6075
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6076
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6076
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6077
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6077
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6078
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6078
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6079
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6079
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6080
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6080
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6081
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6081
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6082
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6082
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6083
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6083
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6084
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6084
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6085
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6085
	);
6086
	);
6086
}
6087
}
Lines 6088-6097 Link Here
6088
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A1.class").getType();
6089
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A1.class").getType();
6089
	search(type, REFERENCES);
6090
	search(type, REFERENCES);
6090
	assertSearchResults(
6091
	assertSearchResults(
6091
		"lib/b124469.jar pack.A1 pack.A2.annot() EXACT_MATCH\n" + 
6092
		"lib/b124469.jar pack.A1 pack.A2.annot() EXACT_MATCH\n" +
6092
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6093
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6093
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6094
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6094
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6095
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6095
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6096
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6096
	);
6097
	);
6097
}
6098
}
Lines 6099-6108 Link Here
6099
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A2.class").getType();
6100
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A2.class").getType();
6100
	search(type, REFERENCES);
6101
	search(type, REFERENCES);
6101
	assertSearchResults(
6102
	assertSearchResults(
6102
		"lib/b124469.jar pack.A2 pack.A3.annot() EXACT_MATCH\n" + 
6103
		"lib/b124469.jar pack.A2 pack.A3.annot() EXACT_MATCH\n" +
6103
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6104
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6104
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6105
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6105
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6106
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6106
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6107
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6107
	);
6108
	);
6108
}
6109
}
Lines 6110-6118 Link Here
6110
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A3.class").getType();
6111
	IType type = getClassFile("JavaSearchBugs", "lib/b124469.jar", "pack", "A3.class").getType();
6111
	search(type, REFERENCES);
6112
	search(type, REFERENCES);
6112
	assertSearchResults(
6113
	assertSearchResults(
6113
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6114
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6114
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6115
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6115
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6116
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6116
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6117
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6117
	);
6118
	);
6118
}
6119
}
Lines 6121-6128 Link Here
6121
	IField field = type.getField("CC");
6122
	IField field = type.getField("CC");
6122
	search(field, REFERENCES);
6123
	search(field, REFERENCES);
6123
	assertSearchResults(
6124
	assertSearchResults(
6124
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6125
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6125
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6126
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6126
		"lib/b124469.jar test.C EXACT_MATCH"
6127
		"lib/b124469.jar test.C EXACT_MATCH"
6127
	);
6128
	);
6128
}
6129
}
Lines 6131-6138 Link Here
6131
	IField field = type.getField("CF");
6132
	IField field = type.getField("CF");
6132
	search(field, REFERENCES);
6133
	search(field, REFERENCES);
6133
	assertSearchResults(
6134
	assertSearchResults(
6134
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6135
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6135
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6136
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6136
		"lib/b124469.jar test.F.field EXACT_MATCH"
6137
		"lib/b124469.jar test.F.field EXACT_MATCH"
6137
	);
6138
	);
6138
}
6139
}
Lines 6141-6148 Link Here
6141
	IField field = type.getField("CM");
6142
	IField field = type.getField("CM");
6142
	search(field, REFERENCES);
6143
	search(field, REFERENCES);
6143
	assertSearchResults(
6144
	assertSearchResults(
6144
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6145
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6145
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6146
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6146
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6147
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6147
	);
6148
	);
6148
}
6149
}
Lines 6167-6177 Link Here
6167
	IField field = type.getField("CAC");
6168
	IField field = type.getField("CAC");
6168
	search(field, REFERENCES);
6169
	search(field, REFERENCES);
6169
	assertSearchResults(
6170
	assertSearchResults(
6170
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6171
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6171
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6172
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6172
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6173
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6173
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6174
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6174
		"lib/b124469.jar test.C EXACT_MATCH\n" + 
6175
		"lib/b124469.jar test.C EXACT_MATCH\n" +
6175
		"lib/b124469.jar test.C EXACT_MATCH"
6176
		"lib/b124469.jar test.C EXACT_MATCH"
6176
	);
6177
	);
6177
}
6178
}
Lines 6180-6190 Link Here
6180
	IField field = type.getField("CAF");
6181
	IField field = type.getField("CAF");
6181
	search(field, REFERENCES);
6182
	search(field, REFERENCES);
6182
	assertSearchResults(
6183
	assertSearchResults(
6183
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6184
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6184
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6185
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6185
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6186
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6186
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6187
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6187
		"lib/b124469.jar test.F.field EXACT_MATCH\n" + 
6188
		"lib/b124469.jar test.F.field EXACT_MATCH\n" +
6188
		"lib/b124469.jar test.F.field EXACT_MATCH"
6189
		"lib/b124469.jar test.F.field EXACT_MATCH"
6189
	);
6190
	);
6190
}
6191
}
Lines 6193-6203 Link Here
6193
	IField field = type.getField("CAM");
6194
	IField field = type.getField("CAM");
6194
	search(field, REFERENCES);
6195
	search(field, REFERENCES);
6195
	assertSearchResults(
6196
	assertSearchResults(
6196
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6197
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6197
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6198
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6198
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6199
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6199
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6200
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6200
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" + 
6201
		"lib/b124469.jar void test.M.foo() EXACT_MATCH\n" +
6201
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6202
		"lib/b124469.jar void test.M.foo() EXACT_MATCH"
6202
	);
6203
	);
6203
}
6204
}
Lines 6228-6236 Link Here
6228
		"public class Foo<T> {}"
6229
		"public class Foo<T> {}"
6229
	);
6230
	);
6230
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/Bar.java",
6231
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/Bar.java",
6231
		"public class Bar {\n" + 
6232
		"public class Bar {\n" +
6232
		"    Foo<String> f = new Foo<String>();\n" + 
6233
		"    Foo<String> f = new Foo<String>();\n" +
6233
		"    Foo f2 = new Foo();\n" + 
6234
		"    Foo f2 = new Foo();\n" +
6234
		"}"
6235
		"}"
6235
	);
6236
	);
6236
	IType type = workingCopies[0].getType("Foo");
6237
	IType type = workingCopies[0].getType("Foo");
Lines 6243-6251 Link Here
6243
		null
6244
		null
6244
	);
6245
	);
6245
	assertSearchResults(
6246
	assertSearchResults(
6246
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" + 
6247
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" +
6247
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" + 
6248
		"src/Bar.java Bar.f [Foo] ERASURE_MATCH\n" +
6248
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH\n" + 
6249
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH\n" +
6249
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH"
6250
		"src/Bar.java Bar.f2 [Foo] ERASURE_RAW_MATCH"
6250
	);
6251
	);
6251
}
6252
}
Lines 6259-6267 Link Here
6259
	IType type = classFile.getType();
6260
	IType type = classFile.getType();
6260
	search(type, IMPLEMENTORS);
6261
	search(type, IMPLEMENTORS);
6261
	assertSearchResults(
6262
	assertSearchResults(
6262
		"src/b124645/xy/X_124645.java b124645.xy.X_124645$Y [BE_124645] EXACT_MATCH\n" + 
6263
		"src/b124645/xy/X_124645.java b124645.xy.X_124645$Y [BE_124645] EXACT_MATCH\n" +
6263
		"src/b124645/xy/Y_124645.java b124645.xy.Y_124645 [BE_124645] EXACT_MATCH\n" + 
6264
		"src/b124645/xy/Y_124645.java b124645.xy.Y_124645 [BE_124645] EXACT_MATCH\n" +
6264
		"lib/b124645.jar xy.BX_124645$Y EXACT_MATCH\n" + 
6265
		"lib/b124645.jar xy.BX_124645$Y EXACT_MATCH\n" +
6265
		"lib/b124645.jar xy.BY_124645 EXACT_MATCH"
6266
		"lib/b124645.jar xy.BY_124645 EXACT_MATCH"
6266
	);
6267
	);
6267
}
6268
}
Lines 6270-6282 Link Here
6270
	IType type = classFile.getType();
6271
	IType type = classFile.getType();
6271
	search(type, IMPLEMENTORS);
6272
	search(type, IMPLEMENTORS);
6272
	assertSearchResults(
6273
	assertSearchResults(
6273
		"src/b124645/test/A_124645.java b124645.test.A_124645 [BE_124645] EXACT_MATCH\n" + 
6274
		"src/b124645/test/A_124645.java b124645.test.A_124645 [BE_124645] EXACT_MATCH\n" +
6274
		"src/b124645/test/A_124645.java void b124645.test.A_124645.m():<anonymous>#1 [BE_124645] EXACT_MATCH\n" + 
6275
		"src/b124645/test/A_124645.java void b124645.test.A_124645.m():<anonymous>#1 [BE_124645] EXACT_MATCH\n" +
6275
		"src/b124645/test/X_124645.java b124645.test.X_124645 [BE_124645] EXACT_MATCH\n" + 
6276
		"src/b124645/test/X_124645.java b124645.test.X_124645 [BE_124645] EXACT_MATCH\n" +
6276
		"src/b124645/test/X_124645.java void b124645.test.X_124645.m():Y_124645#1 [BE_124645] EXACT_MATCH\n" + 
6277
		"src/b124645/test/X_124645.java void b124645.test.X_124645.m():Y_124645#1 [BE_124645] EXACT_MATCH\n" +
6277
		"lib/b124645.jar test.BA_124645 EXACT_MATCH\n" + 
6278
		"lib/b124645.jar test.BA_124645 EXACT_MATCH\n" +
6278
		"lib/b124645.jar test.<anonymous> EXACT_MATCH\n" + 
6279
		"lib/b124645.jar test.<anonymous> EXACT_MATCH\n" +
6279
		"lib/b124645.jar test.BX_124645 EXACT_MATCH\n" + 
6280
		"lib/b124645.jar test.BX_124645 EXACT_MATCH\n" +
6280
		"lib/b124645.jar test.Y EXACT_MATCH"
6281
		"lib/b124645.jar test.Y EXACT_MATCH"
6281
	);
6282
	);
6282
}
6283
}
Lines 6306-6317 Link Here
6306
	ProblemRequestor problemRequestor = new ProblemRequestor();
6307
	ProblemRequestor problemRequestor = new ProblemRequestor();
6307
	workingCopies = new ICompilationUnit[1];
6308
	workingCopies = new ICompilationUnit[1];
6308
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b125178/X.java",
6309
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b125178/X.java",
6309
		"package b125178;\n" + 
6310
		"package b125178;\n" +
6310
		"import pack.age.Test;\n" + 
6311
		"import pack.age.Test;\n" +
6311
		"public class X {\n" + 
6312
		"public class X {\n" +
6312
		"	public static void main(String[] args) {\n" + 
6313
		"	public static void main(String[] args) {\n" +
6313
		"		new Test().foo(100);\n" + 
6314
		"		new Test().foo(100);\n" +
6314
		"	}\n" + 
6315
		"	}\n" +
6315
		"}\n",
6316
		"}\n",
6316
		newWorkingCopyOwner(problemRequestor)
6317
		newWorkingCopyOwner(problemRequestor)
6317
	);
6318
	);
Lines 6320-6326 Link Here
6320
		"----------\n",
6321
		"----------\n",
6321
		problemRequestor.problems.toString()
6322
		problemRequestor.problems.toString()
6322
	);
6323
	);
6323
	
6324
6324
	// Get anonymous from
6325
	// Get anonymous from
6325
	IPackageFragment jar = getPackageFragment("JavaSearchBugs", "lib/b125178.jar", "pack.age");
6326
	IPackageFragment jar = getPackageFragment("JavaSearchBugs", "lib/b125178.jar", "pack.age");
6326
	IJavaElement[] children = jar.getChildren();
6327
	IJavaElement[] children = jar.getChildren();
Lines 6357-6365 Link Here
6357
	class DeprecatedTypesRequestor extends SearchTests.SearchTypeNameRequestor {
6358
	class DeprecatedTypesRequestor extends SearchTests.SearchTypeNameRequestor {
6358
		public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) {
6359
		public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) {
6359
			if ((modifiers & ClassFileConstants.AccDeprecated) != 0) {
6360
			if ((modifiers & ClassFileConstants.AccDeprecated) != 0) {
6360
				char[] typeName = 
6361
				char[] typeName =
6361
					CharOperation.concat(
6362
					CharOperation.concat(
6362
						CharOperation.concatWith(enclosingTypeNames, '$'), 
6363
						CharOperation.concatWith(enclosingTypeNames, '$'),
6363
						simpleTypeName,
6364
						simpleTypeName,
6364
						'$');
6365
						'$');
6365
				results.addElement(new String(CharOperation.concat(packageName, typeName, '.')));
6366
				results.addElement(new String(CharOperation.concat(packageName, typeName, '.')));
Lines 6423-6444 Link Here
6423
private void setUpBug130390() throws CoreException {
6424
private void setUpBug130390() throws CoreException {
6424
	workingCopies = new ICompilationUnit[4];
6425
	workingCopies = new ICompilationUnit[4];
6425
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b130390/TZ.java",
6426
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b130390/TZ.java",
6426
		"package b130390;\n" + 
6427
		"package b130390;\n" +
6427
		"public class TZ {\n" +
6428
		"public class TZ {\n" +
6428
		"}\n"
6429
		"}\n"
6429
	);
6430
	);
6430
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b130390/TimeZone.java",
6431
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b130390/TimeZone.java",
6431
		"package b130390;\n" + 
6432
		"package b130390;\n" +
6432
		"public class TimeZone{\n" +
6433
		"public class TimeZone{\n" +
6433
		"}\n"
6434
		"}\n"
6434
	);
6435
	);
6435
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b130390/Npe.java",
6436
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b130390/Npe.java",
6436
		"package b130390;\n" + 
6437
		"package b130390;\n" +
6437
		"public class Npe {\n" +
6438
		"public class Npe {\n" +
6438
		"}\n"
6439
		"}\n"
6439
	);
6440
	);
6440
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b130390/NullPointerException.java",
6441
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b130390/NullPointerException.java",
6441
		"package b130390;\n" + 
6442
		"package b130390;\n" +
6442
		"public class NullPointerException {\n" +
6443
		"public class NullPointerException {\n" +
6443
		"}\n"
6444
		"}\n"
6444
	);
6445
	);
Lines 6454-6460 Link Here
6454
	setUpBug130390();
6455
	setUpBug130390();
6455
	search("NPE", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH);
6456
	search("NPE", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH);
6456
	assertSearchResults(
6457
	assertSearchResults(
6457
		"src/b130390/Npe.java b130390.Npe [Npe] EXACT_MATCH\n" + 
6458
		"src/b130390/Npe.java b130390.Npe [Npe] EXACT_MATCH\n" +
6458
		"src/b130390/NullPointerException.java b130390.NullPointerException [NullPointerException] EXACT_MATCH"
6459
		"src/b130390/NullPointerException.java b130390.NullPointerException [NullPointerException] EXACT_MATCH"
6459
	);
6460
	);
6460
}
6461
}
Lines 6490-6496 Link Here
6490
	setUpBug130390();
6491
	setUpBug130390();
6491
	search("TZ", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
6492
	search("TZ", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE);
6492
	assertSearchResults(
6493
	assertSearchResults(
6493
		"src/b130390/TZ.java b130390.TZ [TZ] EXACT_MATCH\n" + 
6494
		"src/b130390/TZ.java b130390.TZ [TZ] EXACT_MATCH\n" +
6494
		"src/b130390/TimeZone.java b130390.TimeZone [TimeZone] EXACT_MATCH"
6495
		"src/b130390/TimeZone.java b130390.TimeZone [TimeZone] EXACT_MATCH"
6495
	);
6496
	);
6496
}
6497
}
Lines 6774-6792 Link Here
6774
public void testBug137984_wc() throws CoreException {
6775
public void testBug137984_wc() throws CoreException {
6775
	workingCopies = new ICompilationUnit[1];
6776
	workingCopies = new ICompilationUnit[1];
6776
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/CW.java",
6777
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/CW.java",
6777
		"public class CW {\n" + 
6778
		"public class CW {\n" +
6778
		"	CW2 c2;\n" + 
6779
		"	CW2 c2;\n" +
6779
		"	CW2.CW3 c3;\n" + 
6780
		"	CW2.CW3 c3;\n" +
6780
		"	CW(int c) {\n" + 
6781
		"	CW(int c) {\n" +
6781
		"		c2 = new CW2(c);\n" + 
6782
		"		c2 = new CW2(c);\n" +
6782
		"		c3 = c2.new CW3(c);\n" + 
6783
		"		c3 = c2.new CW3(c);\n" +
6783
		"	}\n" + 
6784
		"	}\n" +
6784
		"	class CW2 {\n" + 
6785
		"	class CW2 {\n" +
6785
		"		CW2(int x) {}\n" + 
6786
		"		CW2(int x) {}\n" +
6786
		"		class CW3 {\n" + 
6787
		"		class CW3 {\n" +
6787
		"			CW3(int x) {}\n" + 
6788
		"			CW3(int x) {}\n" +
6788
		"		}\n" + 
6789
		"		}\n" +
6789
		"	}\n" + 
6790
		"	}\n" +
6790
		"}\n"
6791
		"}\n"
6791
	);
6792
	);
6792
	IField field = workingCopies[0].getType("CW").getField("c3");
6793
	IField field = workingCopies[0].getType("CW").getField("c3");
Lines 6811-6834 Link Here
6811
}
6812
}
6812
6813
6813
/**
6814
/**
6815
 * @bug 142044: [search] "And" Pattern fails with NullPointerException
6816
 * @test Verify that no NPE occurs while using a {@link AndPattern}
6817
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=142044"
6818
 */
6819
/* Bug test case:
6820
	Following test does not produce any result due to the fact that each type reference
6821
	on type only match one of the pattern => it always fails while making a AND on both matches...
6822
	However, consider the bug fixed as we do not get the NPE...
6823
*/
6824
public void testBug142044() throws CoreException {
6825
	IType type1 = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_A.java").getType("I142044_A");
6826
	SearchPattern leftPattern = SearchPattern.createPattern(type1, IMPLEMENTORS);
6827
	IType type2 = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_B.java").getType("I142044_B");
6828
	SearchPattern rightPattern = SearchPattern.createPattern(type2, IMPLEMENTORS);
6829
	search(SearchPattern.createAndPattern(leftPattern, rightPattern), getJavaSearchScopeBugs(), this.resultCollector);
6830
	assertSearchResults("");
6831
}
6832
public void testBug142044_Identical() throws CoreException {
6833
	IType type1 = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_A.java").getType("I142044_A");
6834
	SearchPattern leftPattern = SearchPattern.createPattern(type1, IMPLEMENTORS);
6835
	IType type2 = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_A.java").getType("I142044_A");
6836
	SearchPattern rightPattern = SearchPattern.createPattern(type2, IMPLEMENTORS);
6837
	search(SearchPattern.createAndPattern(leftPattern, rightPattern), getJavaSearchScopeBugs(), this.resultCollector);
6838
	assertSearchResults(
6839
		"src/b142044/X142044.java b142044.X142044$XX1 [I142044_A] EXACT_MATCH\n" +
6840
		"src/b142044/X142044.java b142044.X142044$XX12 [I142044_A] EXACT_MATCH\n" +
6841
		"src/b142044/X142044_A.java b142044.X142044_A [I142044_A] EXACT_MATCH\n" +
6842
		"src/b142044/X142044_AB.java b142044.X142044_AB [I142044_A] EXACT_MATCH"
6843
	);
6844
}
6845
public void testBug142044_And01() throws CoreException {
6846
	SearchPattern leftPattern = createPattern("X*", CLASS, DECLARATIONS, true);
6847
	IType iType = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_A.java").getType("I142044_A");
6848
	SearchPattern rightPattern = SearchPattern.createPattern(iType, IMPLEMENTORS);
6849
	search(SearchPattern.createAndPattern(leftPattern, rightPattern), getJavaSearchScopeBugs(), this.resultCollector);
6850
	assertSearchResults(""); // currently no results as only same kind of pattern are ANDoable...
6851
}
6852
public void testBug142044_And02() throws CoreException {
6853
	IType type1 = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_A.java").getType("I142044_A");
6854
	SearchPattern leftPattern = SearchPattern.createPattern(type1, IMPLEMENTORS);
6855
	SearchPattern rightPattern = createPattern("I*", CLASS, IMPLEMENTORS, true);
6856
	search(SearchPattern.createAndPattern(leftPattern, rightPattern), getJavaSearchScopeBugs(), this.resultCollector);
6857
	assertSearchResults(
6858
		"src/b142044/X142044.java b142044.X142044$XX1 [I142044_A] EXACT_MATCH\n" +
6859
		"src/b142044/X142044.java b142044.X142044$XX12 [I142044_A] EXACT_MATCH\n" +
6860
		"src/b142044/X142044_A.java b142044.X142044_A [I142044_A] EXACT_MATCH\n" +
6861
		"src/b142044/X142044_AB.java b142044.X142044_AB [I142044_A] EXACT_MATCH"
6862
	);
6863
}
6864
public void testBug142044_Or() throws CoreException {
6865
	IType type1 = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_A.java").getType("I142044_A");
6866
	SearchPattern leftPattern = SearchPattern.createPattern(type1, IMPLEMENTORS);
6867
	IType type2 = getCompilationUnit("JavaSearchBugs", "src", "b142044", "I142044_B.java").getType("I142044_B");
6868
	SearchPattern rightPattern = SearchPattern.createPattern(type2, IMPLEMENTORS);
6869
	search(SearchPattern.createOrPattern(leftPattern, rightPattern), getJavaSearchScopeBugs(), this.resultCollector);
6870
	assertSearchResults(
6871
		"src/b142044/X142044.java b142044.X142044$XX1 [I142044_A] EXACT_MATCH\n" +
6872
		"src/b142044/X142044.java b142044.X142044$XX2 [I142044_B] EXACT_MATCH\n" +
6873
		"src/b142044/X142044.java b142044.X142044$XX12 [I142044_A] EXACT_MATCH\n" +
6874
		"src/b142044/X142044.java b142044.X142044$XX12 [I142044_B] EXACT_MATCH\n" +
6875
		"src/b142044/X142044_A.java b142044.X142044_A [I142044_A] EXACT_MATCH\n" +
6876
		"src/b142044/X142044_AB.java b142044.X142044_AB [I142044_A] EXACT_MATCH\n" +
6877
		"src/b142044/X142044_AB.java b142044.X142044_AB [I142044_B] EXACT_MATCH\n" +
6878
		"src/b142044/X142044_B.java b142044.X142044_B [I142044_B] EXACT_MATCH"
6879
	);
6880
}
6881
6882
/**
6814
 * Bug 144044: [search] NPE when trying to find references to field variable
6883
 * Bug 144044: [search] NPE when trying to find references to field variable
6815
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=144044"
6884
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=144044"
6816
 */
6885
 */
6817
public void testBug144044() throws CoreException {
6886
public void testBug144044() throws CoreException {
6818
	workingCopies = new ICompilationUnit[2];
6887
	workingCopies = new ICompilationUnit[2];
6819
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test1/p/Test.java",
6888
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test1/p/Test.java",
6820
		"package test1.p;\n" + 
6889
		"package test1.p;\n" +
6821
		"import test1.q.X;\n" + 
6890
		"import test1.q.X;\n" +
6822
		"public class Test {\n" + 
6891
		"public class Test {\n" +
6823
		"	String foo(X val) {\n" + 
6892
		"	String foo(X val) {\n" +
6824
		"		return val.str;\n" + 
6893
		"		return val.str;\n" +
6825
		"	}\n" + 
6894
		"	}\n" +
6826
		"}\n"
6895
		"}\n"
6827
	);
6896
	);
6828
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test1/q/X.java",
6897
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test1/q/X.java",
6829
		"package test1.q;\n" + 
6898
		"package test1.q;\n" +
6830
		"public class X {\n" + 
6899
		"public class X {\n" +
6831
		"	String str;\n" + 
6900
		"	String str;\n" +
6832
		"}\n"
6901
		"}\n"
6833
	);
6902
	);
6834
	IType type = this.workingCopies[1].getType("X");
6903
	IType type = this.workingCopies[1].getType("X");
Lines 6841-6877 Link Here
6841
public void testBug144044b() throws CoreException {
6910
public void testBug144044b() throws CoreException {
6842
	workingCopies = new ICompilationUnit[4];
6911
	workingCopies = new ICompilationUnit[4];
6843
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test2/p/Test.java",
6912
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test2/p/Test.java",
6844
		"package test2.p;\n" + 
6913
		"package test2.p;\n" +
6845
		"import test2.q.X;\n" + 
6914
		"import test2.q.X;\n" +
6846
		"public class Test {\n" + 
6915
		"public class Test {\n" +
6847
		"	X foo() {\n" + 
6916
		"	X foo() {\n" +
6848
		"		return X.y_field.z_field.x_field.y_field.z_field.x_field;\n" + 
6917
		"		return X.y_field.z_field.x_field.y_field.z_field.x_field;\n" +
6849
		"	}\n" + 
6918
		"	}\n" +
6850
		"}\n"
6919
		"}\n"
6851
	);
6920
	);
6852
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test2/q/X.java",
6921
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test2/q/X.java",
6853
		"package test2.q;\n" + 
6922
		"package test2.q;\n" +
6854
		"public class X {\n" + 
6923
		"public class X {\n" +
6855
		"	public static Y y_field;\n" + 
6924
		"	public static Y y_field;\n" +
6856
		"}\n"
6925
		"}\n"
6857
	);
6926
	);
6858
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Y.java",
6927
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Y.java",
6859
		"package test2.q;\n" + 
6928
		"package test2.q;\n" +
6860
		"public class Y {\n" + 
6929
		"public class Y {\n" +
6861
		"	public static Z z_field;\n" + 
6930
		"	public static Z z_field;\n" +
6862
		"}\n"
6931
		"}\n"
6863
	);
6932
	);
6864
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Z.java",
6933
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/test2/q/Z.java",
6865
		"package test2.q;\n" + 
6934
		"package test2.q;\n" +
6866
		"public class Z {\n" + 
6935
		"public class Z {\n" +
6867
		"	static X x_field;\n" + 
6936
		"	static X x_field;\n" +
6868
		"}\n"
6937
		"}\n"
6869
	);
6938
	);
6870
	IType type = this.workingCopies[3].getType("Z");
6939
	IType type = this.workingCopies[3].getType("Z");
6871
	IField field = type.getField("x_field");
6940
	IField field = type.getField("x_field");
6872
	search(field, REFERENCES);
6941
	search(field, REFERENCES);
6873
	assertSearchResults(
6942
	assertSearchResults(
6874
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH\n" + 
6943
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH\n" +
6875
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH"
6944
		"src/test2/p/Test.java X test2.p.Test.foo() [x_field] POTENTIAL_MATCH"
6876
	);
6945
	);
6877
}
6946
}
Lines 6887-6894 Link Here
6887
		IMethod method = type.getMethods()[1];
6956
		IMethod method = type.getMethods()[1];
6888
		searchDeclarationsOfReferencedTypes(method, this.resultCollector);
6957
		searchDeclarationsOfReferencedTypes(method, this.resultCollector);
6889
		assertSearchResults(
6958
		assertSearchResults(
6890
			""+ getExternalJCLPathString("1.5") + " java.lang.Object EXACT_MATCH\n" + 
6959
			""+ getExternalJCLPathString("1.5") + " java.lang.Object EXACT_MATCH\n" +
6891
			""+ getExternalJCLPathString("1.5") + " java.lang.String EXACT_MATCH\n" + 
6960
			""+ getExternalJCLPathString("1.5") + " java.lang.String EXACT_MATCH\n" +
6892
			"lib/b148215.jar test.def.Reference EXACT_MATCH"
6961
			"lib/b148215.jar test.def.Reference EXACT_MATCH"
6893
		);
6962
		);
6894
	}
6963
	}
Lines 6903-6909 Link Here
6903
		IMethod method = type.getMethods()[1];
6972
		IMethod method = type.getMethods()[1];
6904
		searchDeclarationsOfSentMessages(method, this.resultCollector);
6973
		searchDeclarationsOfSentMessages(method, this.resultCollector);
6905
		assertSearchResults(
6974
		assertSearchResults(
6906
			"lib/b148215.jar void test.pack.Test.bar(java.lang.String) EXACT_MATCH\n" + 
6975
			"lib/b148215.jar void test.pack.Test.bar(java.lang.String) EXACT_MATCH\n" +
6907
			"lib/b148215.jar void test.pack.Test.bar(test.def.Reference) EXACT_MATCH"
6976
			"lib/b148215.jar void test.pack.Test.bar(test.def.Reference) EXACT_MATCH"
6908
		);
6977
		);
6909
	}
6978
	}
Lines 6918-6924 Link Here
6918
		IMethod method = type.getMethods()[1];
6987
		IMethod method = type.getMethods()[1];
6919
		searchDeclarationsOfAccessedFields(method, this.resultCollector);
6988
		searchDeclarationsOfAccessedFields(method, this.resultCollector);
6920
		assertSearchResults(
6989
		assertSearchResults(
6921
			"lib/b148215.jar test.pack.Test.sField EXACT_MATCH\n" + 
6990
			"lib/b148215.jar test.pack.Test.sField EXACT_MATCH\n" +
6922
			"lib/b148215.jar test.pack.Test.rField EXACT_MATCH"
6991
			"lib/b148215.jar test.pack.Test.rField EXACT_MATCH"
6923
		);
6992
		);
6924
	}
6993
	}
Lines 6937-6955 Link Here
6937
	resultCollector.showRule = true;
7006
	resultCollector.showRule = true;
6938
	workingCopies = new ICompilationUnit[4];
7007
	workingCopies = new ICompilationUnit[4];
6939
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b148380/I.java",
7008
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b148380/I.java",
6940
		"package b148380;\n" + 
7009
		"package b148380;\n" +
6941
		"public interface I {}\n"
7010
		"public interface I {}\n"
6942
	);
7011
	);
6943
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b148380/X.java",
7012
	workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/b148380/X.java",
6944
		"package b148380;\n" + 
7013
		"package b148380;\n" +
6945
		"public class X {}\n"
7014
		"public class X {}\n"
6946
	);
7015
	);
6947
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b148380/Sub.java",
7016
	workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/b148380/Sub.java",
6948
		"package b148380;\n" + 
7017
		"package b148380;\n" +
6949
		"public class Sub extends X {}\n"
7018
		"public class Sub extends X {}\n"
6950
	);
7019
	);
6951
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b148380/Y.java",
7020
	workingCopies[3] = getWorkingCopy("/JavaSearchBugs/src/b148380/Y.java",
6952
		"package b148380;\n" + 
7021
		"package b148380;\n" +
6953
		"public class Y {}\n"
7022
		"public class Y {}\n"
6954
	);
7023
	);
6955
	IJavaSearchScope scope = getJavaSearchScopeBugs();
7024
	IJavaSearchScope scope = getJavaSearchScopeBugs();
Lines 6964-6972 Link Here
6964
		requestor1,
7033
		requestor1,
6965
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
7034
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
6966
		null);
7035
		null);
6967
	String expected = "class Sub [in [Working copy] Sub.java [in b148380 [in src [in JavaSearchBugs]]]]\n" + 
7036
	String expected = "class Sub [in [Working copy] Sub.java [in b148380 [in src [in JavaSearchBugs]]]]\n" +
6968
		"class X [in [Working copy] X.java [in b148380 [in src [in JavaSearchBugs]]]]\n" + 
7037
		"class X [in [Working copy] X.java [in b148380 [in src [in JavaSearchBugs]]]]\n" +
6969
		"class Y [in [Working copy] Y.java [in b148380 [in src [in JavaSearchBugs]]]]\n" + 
7038
		"class Y [in [Working copy] Y.java [in b148380 [in src [in JavaSearchBugs]]]]\n" +
6970
		"interface I [in [Working copy] I.java [in b148380 [in src [in JavaSearchBugs]]]]";
7039
		"interface I [in [Working copy] I.java [in b148380 [in src [in JavaSearchBugs]]]]";
6971
	assertSearchResults(expected, requestor1);
7040
	assertSearchResults(expected, requestor1);
6972
	//  Expected same result with the wc owner
7041
	//  Expected same result with the wc owner
Lines 7041-7055 Link Here
7041
   );
7110
   );
7042
	assertSearchResults(
7111
	assertSearchResults(
7043
		"Unexpected all type names",
7112
		"Unexpected all type names",
7044
		"java.lang.Class\n" + 
7113
		"java.lang.Class\n" +
7045
		"java.lang.CloneNotSupportedException\n" + 
7114
		"java.lang.CloneNotSupportedException\n" +
7046
		"java.lang.Error\n" + 
7115
		"java.lang.Error\n" +
7047
		"java.lang.Exception\n" + 
7116
		"java.lang.Exception\n" +
7048
		"java.lang.IllegalMonitorStateException\n" + 
7117
		"java.lang.IllegalMonitorStateException\n" +
7049
		"java.lang.InterruptedException\n" + 
7118
		"java.lang.InterruptedException\n" +
7050
		"java.lang.Object\n" + 
7119
		"java.lang.Object\n" +
7051
		"java.lang.RuntimeException\n" + 
7120
		"java.lang.RuntimeException\n" +
7052
		"java.lang.String\n" + 
7121
		"java.lang.String\n" +
7053
		"java.lang.Throwable",
7122
		"java.lang.Throwable",
7054
		requestor);
7123
		requestor);
7055
}
7124
}
Lines 7062-7071 Link Here
7062
	resultCollector.showRule = true;
7131
	resultCollector.showRule = true;
7063
	workingCopies = new ICompilationUnit[1];
7132
	workingCopies = new ICompilationUnit[1];
7064
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b156177/Test.java",
7133
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/b156177/Test.java",
7065
		"package b156177;\n" + 
7134
		"package b156177;\n" +
7066
		"interface B156177_I {}\n" + 
7135
		"interface B156177_I {}\n" +
7067
		"enum B156177_E {}\n" + 
7136
		"enum B156177_E {}\n" +
7068
		"@interface B156177_A {}\n" + 
7137
		"@interface B156177_A {}\n" +
7069
		"public class B156177 {}\n"
7138
		"public class B156177 {}\n"
7070
	);
7139
	);
7071
	TypeNameRequestor requestor =  new SearchTests.SearchTypeNameRequestor();
7140
	TypeNameRequestor requestor =  new SearchTests.SearchTypeNameRequestor();
Lines 7082-7088 Link Here
7082
	);
7151
	);
7083
	assertSearchResults(
7152
	assertSearchResults(
7084
		"Unexpected all type names",
7153
		"Unexpected all type names",
7085
		"b156177.B156177_A\n" + 
7154
		"b156177.B156177_A\n" +
7086
		"b156177.B156177_I",
7155
		"b156177.B156177_I",
7087
		requestor);
7156
		requestor);
7088
}
7157
}
Lines 7095-7164 Link Here
7095
	resultCollector.showRule = true;
7164
	resultCollector.showRule = true;
7096
	workingCopies = new ICompilationUnit[1];
7165
	workingCopies = new ICompilationUnit[1];
7097
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/Test.java",
7166
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/Test.java",
7098
		"package pack;\n" + 
7167
		"package pack;\n" +
7099
		"public class Test {\n" + 
7168
		"public class Test {\n" +
7100
		"	void noMatch(Y y) {\n" + 
7169
		"	void noMatch(Y y) {\n" +
7101
		"		y.toString();\n" + 
7170
		"		y.toString();\n" +
7102
		"		toString();\n" + 
7171
		"		toString();\n" +
7103
		"	}\n" + 
7172
		"	}\n" +
7104
		"	void validMatches(X x) {\n" + 
7173
		"	void validMatches(X x) {\n" +
7105
		"		x.toString();\n" + 
7174
		"		x.toString();\n" +
7106
		"	}\n" + 
7175
		"	}\n" +
7107
		"	void superInvocationMatches(Object o) {\n" + 
7176
		"	void superInvocationMatches(Object o) {\n" +
7108
		"		o.toString();\n" + 
7177
		"		o.toString();\n" +
7109
		"	}\n" + 
7178
		"	}\n" +
7110
		"	void interfaceMatches(I i) {\n" + 
7179
		"	void interfaceMatches(I i) {\n" +
7111
		"		i.toString();\n" + 
7180
		"		i.toString();\n" +
7112
		"	}\n" + 
7181
		"	}\n" +
7113
		"	void subtypeMatches(Sub s) {\n" + 
7182
		"	void subtypeMatches(Sub s) {\n" +
7114
		"		s.toString();\n" + 
7183
		"		s.toString();\n" +
7115
		"	}\n" + 
7184
		"	}\n" +
7116
		"}\n" +
7185
		"}\n" +
7117
		"interface I {}\n" +
7186
		"interface I {}\n" +
7118
		"class X {\n" + 
7187
		"class X {\n" +
7119
		"	public String toString() {\n" + 
7188
		"	public String toString() {\n" +
7120
		"		return \"X\";\n" + 
7189
		"		return \"X\";\n" +
7121
		"	}\n" + 
7190
		"	}\n" +
7122
		"}\n" +
7191
		"}\n" +
7123
		"class Sub extends X {}\n" +
7192
		"class Sub extends X {}\n" +
7124
		"class Y {\n" + 
7193
		"class Y {\n" +
7125
		"	public String toString() {\n" + 
7194
		"	public String toString() {\n" +
7126
		"		return \"Y\";\n" + 
7195
		"		return \"Y\";\n" +
7127
		"	}\n" + 
7196
		"	}\n" +
7128
		"}\n"
7197
		"}\n"
7129
	);
7198
	);
7130
	IMethod method = workingCopies[0].getType("X").getMethod("toString", new String[0]);
7199
	IMethod method = workingCopies[0].getType("X").getMethod("toString", new String[0]);
7131
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7200
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7132
	search(method, REFERENCES);
7201
	search(method, REFERENCES);
7133
	assertSearchResults(
7202
	assertSearchResults(
7134
		"src/pack/Test.java void pack.Test.validMatches(X) [toString()] EXACT_MATCH\n" + 
7203
		"src/pack/Test.java void pack.Test.validMatches(X) [toString()] EXACT_MATCH\n" +
7135
		"src/pack/Test.java void pack.Test.superInvocationMatches(Object) [toString()] EXACT_MATCH SUPER INVOCATION\n" + 
7204
		"src/pack/Test.java void pack.Test.superInvocationMatches(Object) [toString()] EXACT_MATCH SUPER INVOCATION\n" +
7136
		"src/pack/Test.java void pack.Test.subtypeMatches(Sub) [toString()] EXACT_MATCH"
7205
		"src/pack/Test.java void pack.Test.subtypeMatches(Sub) [toString()] EXACT_MATCH"
7137
	);
7206
	);
7138
}
7207
}
7139
private void setUpBug156491() throws CoreException {
7208
private void setUpBug156491() throws CoreException {
7140
	workingCopies = new ICompilationUnit[1];
7209
	workingCopies = new ICompilationUnit[1];
7141
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/other/Test.java",
7210
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/other/Test.java",
7142
		"package other;\n" + 
7211
		"package other;\n" +
7143
		"public class Test {\n" + 
7212
		"public class Test {\n" +
7144
		"	void testInterface(I i) {\n" + 
7213
		"	void testInterface(I i) {\n" +
7145
		"		i.test();\n" + 
7214
		"		i.test();\n" +
7146
		"	}\n" + 
7215
		"	}\n" +
7147
		"	void testSuperInvocation(L1 l) {\n" + 
7216
		"	void testSuperInvocation(L1 l) {\n" +
7148
		"		l.test();\n" + 
7217
		"		l.test();\n" +
7149
		"	}\n" + 
7218
		"	}\n" +
7150
		"	void testInvocation(L2 l) {\n" + 
7219
		"	void testInvocation(L2 l) {\n" +
7151
		"		l.test();\n" + 
7220
		"		l.test();\n" +
7152
		"	}\n" + 
7221
		"	}\n" +
7153
		"}\n" + 
7222
		"}\n" +
7154
		"class L1 implements I {\n" + 
7223
		"class L1 implements I {\n" +
7155
		"	public void test() {}\n" + 
7224
		"	public void test() {}\n" +
7156
		"}\n" + 
7225
		"}\n" +
7157
		"interface I {\n" + 
7226
		"interface I {\n" +
7158
		"	void test();\n" + 
7227
		"	void test();\n" +
7159
		"}\n" + 
7228
		"}\n" +
7160
		"class L2 extends L1 {\n" + 
7229
		"class L2 extends L1 {\n" +
7161
		"	public void test() {}\n" + 
7230
		"	public void test() {}\n" +
7162
		"}"
7231
		"}"
7163
	);
7232
	);
7164
}
7233
}
Lines 7169-7176 Link Here
7169
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7238
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7170
	search(method, REFERENCES);
7239
	search(method, REFERENCES);
7171
	assertSearchResults(
7240
	assertSearchResults(
7172
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" + 
7241
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" +
7173
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH SUPER INVOCATION\n" + 
7242
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH SUPER INVOCATION\n" +
7174
		"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
7243
		"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
7175
	);
7244
	);
7176
}
7245
}
Lines 7181-7187 Link Here
7181
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7250
	this.resultCollector.showFlavors = PatternLocator.SUPER_INVOCATION_FLAVOR;
7182
	search(method, REFERENCES);
7251
	search(method, REFERENCES);
7183
	assertSearchResults(
7252
	assertSearchResults(
7184
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" + 
7253
		"src/other/Test.java void other.Test.testInterface(I) [test()] EXACT_MATCH SUPER INVOCATION\n" +
7185
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH"
7254
		"src/other/Test.java void other.Test.testSuperInvocation(L1) [test()] EXACT_MATCH"
7186
		// since bug 160301 fix, subclass overridden method calls are not reported
7255
		// since bug 160301 fix, subclass overridden method calls are not reported
7187
		//"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
7256
		//"src/other/Test.java void other.Test.testInvocation(L2) [test()] EXACT_MATCH"
Lines 7196-7219 Link Here
7196
	resultCollector.showRule = true;
7265
	resultCollector.showRule = true;
7197
	workingCopies = new ICompilationUnit[1];
7266
	workingCopies = new ICompilationUnit[1];
7198
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7267
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7199
		"public class Test {\n" + 
7268
		"public class Test {\n" +
7200
		"	class A {\n" + 
7269
		"	class A {\n" +
7201
		"		void foo() {}\n" + 
7270
		"		void foo() {}\n" +
7202
		"		void bar() {\n" + 
7271
		"		void bar() {\n" +
7203
		"			foo();\n" + 
7272
		"			foo();\n" +
7204
		"		}\n" + 
7273
		"		}\n" +
7205
		"	}\n" + 
7274
		"	}\n" +
7206
		"	class B extends A {\n" + 
7275
		"	class B extends A {\n" +
7207
		"		void foo() {}\n" + 
7276
		"		void foo() {}\n" +
7208
		"		void bar() {\n" + 
7277
		"		void bar() {\n" +
7209
		"			foo();\n" + 
7278
		"			foo();\n" +
7210
		"		}\n" + 
7279
		"		}\n" +
7211
		"	}\n" + 
7280
		"	}\n" +
7212
		"	class C extends B {\n" + 
7281
		"	class C extends B {\n" +
7213
		"		void method() {\n" + 
7282
		"		void method() {\n" +
7214
		"			foo();\n" + 
7283
		"			foo();\n" +
7215
		"		}\n" + 
7284
		"		}\n" +
7216
		"	}\n" + 
7285
		"	}\n" +
7217
		"}"
7286
		"}"
7218
	);
7287
	);
7219
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
7288
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
Lines 7226-7260 Link Here
7226
	resultCollector.showRule = true;
7295
	resultCollector.showRule = true;
7227
	workingCopies = new ICompilationUnit[1];
7296
	workingCopies = new ICompilationUnit[1];
7228
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
7297
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/Test.java",
7229
		"package test;\n" + 
7298
		"package test;\n" +
7230
		"public class Test {\n" + 
7299
		"public class Test {\n" +
7231
		"	class A {\n" + 
7300
		"	class A {\n" +
7232
		"		void foo() {}\n" + 
7301
		"		void foo() {}\n" +
7233
		"	}\n" + 
7302
		"	}\n" +
7234
		"	class B extends A {}\n" + 
7303
		"	class B extends A {}\n" +
7235
		"	class C extends B {\n" + 
7304
		"	class C extends B {\n" +
7236
		"		void foo() {}\n" + 
7305
		"		void foo() {}\n" +
7237
		"	}\n" + 
7306
		"	}\n" +
7238
		"	class D extends C {}\n" + 
7307
		"	class D extends C {}\n" +
7239
		"	void a() {\n" + 
7308
		"	void a() {\n" +
7240
		"		new A().foo();\n" + 
7309
		"		new A().foo();\n" +
7241
		"	}\n" + 
7310
		"	}\n" +
7242
		"	void b() {\n" + 
7311
		"	void b() {\n" +
7243
		"		new B().foo();\n" + 
7312
		"		new B().foo();\n" +
7244
		"	}\n" + 
7313
		"	}\n" +
7245
		"	void c() {\n" + 
7314
		"	void c() {\n" +
7246
		"		new C().foo();\n" + 
7315
		"		new C().foo();\n" +
7247
		"	}\n" + 
7316
		"	}\n" +
7248
		"	void d() {\n" + 
7317
		"	void d() {\n" +
7249
		"		new D().foo();\n" + 
7318
		"		new D().foo();\n" +
7250
		"	}\n" + 
7319
		"	}\n" +
7251
		"	\n" + 
7320
		"	\n" +
7252
		"}"
7321
		"}"
7253
	);
7322
	);
7254
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
7323
	IMethod method = workingCopies[0].getType("Test").getType("A").getMethod("foo", new String[0]);
7255
	search(method, REFERENCES);
7324
	search(method, REFERENCES);
7256
	assertSearchResults(
7325
	assertSearchResults(
7257
		"src/test/Test.java void test.Test.a() [foo()] EXACT_MATCH\n" + 
7326
		"src/test/Test.java void test.Test.a() [foo()] EXACT_MATCH\n" +
7258
		"src/test/Test.java void test.Test.b() [foo()] EXACT_MATCH"
7327
		"src/test/Test.java void test.Test.b() [foo()] EXACT_MATCH"
7259
	);
7328
	);
7260
}
7329
}
Lines 7262-7314 Link Here
7262
	resultCollector.showRule = true;
7331
	resultCollector.showRule = true;
7263
	workingCopies = new ICompilationUnit[1];
7332
	workingCopies = new ICompilationUnit[1];
7264
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7333
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7265
		"public class Test {\n" + 
7334
		"public class Test {\n" +
7266
		"	interface I {\n" + 
7335
		"	interface I {\n" +
7267
		"		void foo();\n" + 
7336
		"		void foo();\n" +
7268
		"	}\n" + 
7337
		"	}\n" +
7269
		"	class A1 implements I {\n" + 
7338
		"	class A1 implements I {\n" +
7270
		"		public void foo() {}\n" + 
7339
		"		public void foo() {}\n" +
7271
		"		void a1() {\n" + 
7340
		"		void a1() {\n" +
7272
		"			foo();\n" + 
7341
		"			foo();\n" +
7273
		"		}\n" + 
7342
		"		}\n" +
7274
		"	}\n" + 
7343
		"	}\n" +
7275
		"	class B1 extends A1 {\n" + 
7344
		"	class B1 extends A1 {\n" +
7276
		"		void b1() {\n" + 
7345
		"		void b1() {\n" +
7277
		"			foo();\n" + 
7346
		"			foo();\n" +
7278
		"		}\n" + 
7347
		"		}\n" +
7279
		"	}\n" + 
7348
		"	}\n" +
7280
		"	class C1 extends B1 {\n" + 
7349
		"	class C1 extends B1 {\n" +
7281
		"		public void foo() {}\n" + 
7350
		"		public void foo() {}\n" +
7282
		"		void c1() {\n" + 
7351
		"		void c1() {\n" +
7283
		"			foo();\n" + 
7352
		"			foo();\n" +
7284
		"		}\n" + 
7353
		"		}\n" +
7285
		"	}\n" + 
7354
		"	}\n" +
7286
		"	abstract class A2 implements I {\n" + 
7355
		"	abstract class A2 implements I {\n" +
7287
		"		void a2() {\n" + 
7356
		"		void a2() {\n" +
7288
		"			foo();\n" + 
7357
		"			foo();\n" +
7289
		"		}\n" + 
7358
		"		}\n" +
7290
		"	}\n" + 
7359
		"	}\n" +
7291
		"	class B2 extends A2 {\n" + 
7360
		"	class B2 extends A2 {\n" +
7292
		"		public void foo() {}\n" + 
7361
		"		public void foo() {}\n" +
7293
		"		void b2() {\n" + 
7362
		"		void b2() {\n" +
7294
		"			foo();\n" + 
7363
		"			foo();\n" +
7295
		"		}\n" + 
7364
		"		}\n" +
7296
		"	}\n" + 
7365
		"	}\n" +
7297
		"	class A3 implements I {\n" + 
7366
		"	class A3 implements I {\n" +
7298
		"		public void foo() {}\n" + 
7367
		"		public void foo() {}\n" +
7299
		"		void a3() {\n" + 
7368
		"		void a3() {\n" +
7300
		"			foo();\n" + 
7369
		"			foo();\n" +
7301
		"		}\n" + 
7370
		"		}\n" +
7302
		"	}\n" + 
7371
		"	}\n" +
7303
		"}"
7372
		"}"
7304
	);
7373
	);
7305
	IMethod method = workingCopies[0].getType("Test").getType("I").getMethod("foo", new String[0]);
7374
	IMethod method = workingCopies[0].getType("Test").getType("I").getMethod("foo", new String[0]);
7306
	search(method, REFERENCES);
7375
	search(method, REFERENCES);
7307
	assertSearchResults(
7376
	assertSearchResults(
7308
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" + 
7377
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" +
7309
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" + 
7378
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" +
7310
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" + 
7379
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" +
7311
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH\n" + 
7380
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH\n" +
7312
		"src/Test.java void Test$A3.a3() [foo()] EXACT_MATCH"
7381
		"src/Test.java void Test$A3.a3() [foo()] EXACT_MATCH"
7313
	);
7382
	);
7314
}
7383
}
Lines 7316-7361 Link Here
7316
	resultCollector.showRule = true;
7385
	resultCollector.showRule = true;
7317
	workingCopies = new ICompilationUnit[1];
7386
	workingCopies = new ICompilationUnit[1];
7318
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7387
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7319
		"public class Test {\n" + 
7388
		"public class Test {\n" +
7320
		"	abstract class Abstract {\n" + 
7389
		"	abstract class Abstract {\n" +
7321
		"		abstract void foo();\n" + 
7390
		"		abstract void foo();\n" +
7322
		"	}\n" + 
7391
		"	}\n" +
7323
		"	class A1 extends Abstract {\n" + 
7392
		"	class A1 extends Abstract {\n" +
7324
		"		public void foo() {}\n" + 
7393
		"		public void foo() {}\n" +
7325
		"		void a1() {\n" + 
7394
		"		void a1() {\n" +
7326
		"			foo(); // valid match as A1.foo() is the first override in sub-class\n" + 
7395
		"			foo(); // valid match as A1.foo() is the first override in sub-class\n" +
7327
		"		}\n" + 
7396
		"		}\n" +
7328
		"	}\n" + 
7397
		"	}\n" +
7329
		"	class B1 extends A1 {\n" + 
7398
		"	class B1 extends A1 {\n" +
7330
		"		void b1() {\n" + 
7399
		"		void b1() {\n" +
7331
		"			foo(); // valid match as B1 does not override A.foo()\n" + 
7400
		"			foo(); // valid match as B1 does not override A.foo()\n" +
7332
		"		}\n" + 
7401
		"		}\n" +
7333
		"	}\n" + 
7402
		"	}\n" +
7334
		"	class C1 extends B1 {\n" + 
7403
		"	class C1 extends B1 {\n" +
7335
		"		public void foo() {}\n" + 
7404
		"		public void foo() {}\n" +
7336
		"		void c1() {\n" + 
7405
		"		void c1() {\n" +
7337
		"			foo(); // invalid match as C1 does override A.foo()\n" + 
7406
		"			foo(); // invalid match as C1 does override A.foo()\n" +
7338
		"		}\n" + 
7407
		"		}\n" +
7339
		"	}\n" + 
7408
		"	}\n" +
7340
		"	abstract class A2 extends Abstract {\n" + 
7409
		"	abstract class A2 extends Abstract {\n" +
7341
		"		void a2() {\n" + 
7410
		"		void a2() {\n" +
7342
		"			foo(); // valid match as A2 does not override Abstract.foo()\n" + 
7411
		"			foo(); // valid match as A2 does not override Abstract.foo()\n" +
7343
		"		}\n" + 
7412
		"		}\n" +
7344
		"	}\n" + 
7413
		"	}\n" +
7345
		"	class B2 extends A2 {\n" + 
7414
		"	class B2 extends A2 {\n" +
7346
		"		public void foo() {}\n" + 
7415
		"		public void foo() {}\n" +
7347
		"		void b2() {\n" + 
7416
		"		void b2() {\n" +
7348
		"			foo(); // valid match as B2.foo() is the first override in sub-class\n" + 
7417
		"			foo(); // valid match as B2.foo() is the first override in sub-class\n" +
7349
		"		}\n" + 
7418
		"		}\n" +
7350
		"	}\n" + 
7419
		"	}\n" +
7351
		"}"
7420
		"}"
7352
	);
7421
	);
7353
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7422
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7354
	search(method, REFERENCES);
7423
	search(method, REFERENCES);
7355
	assertSearchResults(
7424
	assertSearchResults(
7356
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" + 
7425
		"src/Test.java void Test$A1.a1() [foo()] EXACT_MATCH\n" +
7357
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" + 
7426
		"src/Test.java void Test$B1.b1() [foo()] EXACT_MATCH\n" +
7358
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" + 
7427
		"src/Test.java void Test$A2.a2() [foo()] EXACT_MATCH\n" +
7359
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH"
7428
		"src/Test.java void Test$B2.b2() [foo()] EXACT_MATCH"
7360
	);
7429
	);
7361
}
7430
}
Lines 7363-7396 Link Here
7363
	resultCollector.showRule = true;
7432
	resultCollector.showRule = true;
7364
	workingCopies = new ICompilationUnit[1];
7433
	workingCopies = new ICompilationUnit[1];
7365
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7434
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7366
		"public class Test {\n" + 
7435
		"public class Test {\n" +
7367
		"	abstract class Abstract {\n" + 
7436
		"	abstract class Abstract {\n" +
7368
		"		public abstract void foo();\n" + 
7437
		"		public abstract void foo();\n" +
7369
		"	}\n" + 
7438
		"	}\n" +
7370
		"	abstract class A extends Abstract {\n" + 
7439
		"	abstract class A extends Abstract {\n" +
7371
		"		public abstract void foo();\n" + 
7440
		"		public abstract void foo();\n" +
7372
		"		void a() {\n" + 
7441
		"		void a() {\n" +
7373
		"			foo(); // valid match as A is abstract => does not override Abstract.foo()\n" + 
7442
		"			foo(); // valid match as A is abstract => does not override Abstract.foo()\n" +
7374
		"		}\n" + 
7443
		"		}\n" +
7375
		"	}\n" + 
7444
		"	}\n" +
7376
		"	class B extends A {\n" + 
7445
		"	class B extends A {\n" +
7377
		"		public void foo() {}\n" + 
7446
		"		public void foo() {}\n" +
7378
		"		void b() {\n" + 
7447
		"		void b() {\n" +
7379
		"			foo(); // valid match as B.foo() is the first override in sub-class\n" + 
7448
		"			foo(); // valid match as B.foo() is the first override in sub-class\n" +
7380
		"		}\n" + 
7449
		"		}\n" +
7381
		"	}\n" + 
7450
		"	}\n" +
7382
		"	class C extends B {\n" + 
7451
		"	class C extends B {\n" +
7383
		"		public void foo() {}\n" + 
7452
		"		public void foo() {}\n" +
7384
		"		void c() {\n" + 
7453
		"		void c() {\n" +
7385
		"			foo(); // invalid match as C.foo() overrides Abstract.foo() \n" + 
7454
		"			foo(); // invalid match as C.foo() overrides Abstract.foo() \n" +
7386
		"		}\n" + 
7455
		"		}\n" +
7387
		"	}\n" + 
7456
		"	}\n" +
7388
		"}"
7457
		"}"
7389
	);
7458
	);
7390
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7459
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7391
	search(method, REFERENCES);
7460
	search(method, REFERENCES);
7392
	assertSearchResults(
7461
	assertSearchResults(
7393
		"src/Test.java void Test$A.a() [foo()] EXACT_MATCH\n" + 
7462
		"src/Test.java void Test$A.a() [foo()] EXACT_MATCH\n" +
7394
		"src/Test.java void Test$B.b() [foo()] EXACT_MATCH"
7463
		"src/Test.java void Test$B.b() [foo()] EXACT_MATCH"
7395
	);
7464
	);
7396
}
7465
}
Lines 7398-7425 Link Here
7398
	resultCollector.showRule = true;
7467
	resultCollector.showRule = true;
7399
	workingCopies = new ICompilationUnit[1];
7468
	workingCopies = new ICompilationUnit[1];
7400
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7469
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Test.java",
7401
		"public class Test {\n" + 
7470
		"public class Test {\n" +
7402
		"	abstract class Abstract {\n" + 
7471
		"	abstract class Abstract {\n" +
7403
		"		public abstract void foo();\n" + 
7472
		"		public abstract void foo();\n" +
7404
		"	}\n" + 
7473
		"	}\n" +
7405
		"	class A extends Abstract {\n" + 
7474
		"	class A extends Abstract {\n" +
7406
		"		public void foo() {}\n" + 
7475
		"		public void foo() {}\n" +
7407
		"		void a() {\n" + 
7476
		"		void a() {\n" +
7408
		"			foo(); // valid match as A.foo() is the first override in sub-class\n" + 
7477
		"			foo(); // valid match as A.foo() is the first override in sub-class\n" +
7409
		"		}\n" + 
7478
		"		}\n" +
7410
		"	}\n" + 
7479
		"	}\n" +
7411
		"	abstract class B extends A {\n" + 
7480
		"	abstract class B extends A {\n" +
7412
		"		public abstract void foo();\n" + 
7481
		"		public abstract void foo();\n" +
7413
		"		void b() {\n" + 
7482
		"		void b() {\n" +
7414
		"			foo(); // invalid match as B.foo() is hidden by the override A.foo()\n" + 
7483
		"			foo(); // invalid match as B.foo() is hidden by the override A.foo()\n" +
7415
		"		}\n" + 
7484
		"		}\n" +
7416
		"	}\n" + 
7485
		"	}\n" +
7417
		"	class C extends B {\n" + 
7486
		"	class C extends B {\n" +
7418
		"		public void foo() {}\n" + 
7487
		"		public void foo() {}\n" +
7419
		"		void c() {\n" + 
7488
		"		void c() {\n" +
7420
		"			foo(); // invalid match as C.foo() overrides A.foo()\n" + 
7489
		"			foo(); // invalid match as C.foo() overrides A.foo()\n" +
7421
		"		}\n" + 
7490
		"		}\n" +
7422
		"	}\n" + 
7491
		"	}\n" +
7423
		"}"
7492
		"}"
7424
	);
7493
	);
7425
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
7494
	IMethod method = workingCopies[0].getType("Test").getType("Abstract").getMethod("foo", new String[0]);
Lines 7613-7630 Link Here
7613
		null);
7682
		null);
7614
	// Should have same types with these 2 searches
7683
	// Should have same types with these 2 searches
7615
	assertSearchResults("Wrong types found!",
7684
	assertSearchResults("Wrong types found!",
7616
		"java.lang.CharSequence\n" + 
7685
		"java.lang.CharSequence\n" +
7617
		"java.lang.Class\n" + 
7686
		"java.lang.Class\n" +
7618
		"java.lang.CloneNotSupportedException\n" + 
7687
		"java.lang.CloneNotSupportedException\n" +
7619
		"java.lang.Comparable\n" + 
7688
		"java.lang.Comparable\n" +
7620
		"java.lang.Enum\n" + 
7689
		"java.lang.Enum\n" +
7621
		"java.lang.Error\n" + 
7690
		"java.lang.Error\n" +
7622
		"java.lang.Exception\n" + 
7691
		"java.lang.Exception\n" +
7623
		"java.lang.IllegalMonitorStateException\n" + 
7692
		"java.lang.IllegalMonitorStateException\n" +
7624
		"java.lang.InterruptedException\n" + 
7693
		"java.lang.InterruptedException\n" +
7625
		"java.lang.Object\n" + 
7694
		"java.lang.Object\n" +
7626
		"java.lang.RuntimeException\n" + 
7695
		"java.lang.RuntimeException\n" +
7627
		"java.lang.String\n" + 
7696
		"java.lang.String\n" +
7628
		"java.lang.Throwable",
7697
		"java.lang.Throwable",
7629
		requestor
7698
		requestor
7630
	);
7699
	);
Lines 7681-7688 Link Here
7681
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
7750
		IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
7682
		null);
7751
		null);
7683
	assertSearchResults("Wrong types found!",
7752
	assertSearchResults("Wrong types found!",
7684
		"xy.BE_124645\n" + 
7753
		"xy.BE_124645\n" +
7685
		"xy.BX_124645\n" + 
7754
		"xy.BX_124645\n" +
7686
		"xy.BY_124645",
7755
		"xy.BY_124645",
7687
		requestor
7756
		requestor
7688
	);
7757
	);
Lines 7739-7750 Link Here
7739
private void setUpBug164121() throws CoreException {
7808
private void setUpBug164121() throws CoreException {
7740
	workingCopies = new ICompilationUnit[1];
7809
	workingCopies = new ICompilationUnit[1];
7741
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/A.java",
7810
	workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/A.java",
7742
		"class A {\n" + 
7811
		"class A {\n" +
7743
		"     int x(int param) {\n" + 
7812
		"     int x(int param) {\n" +
7744
		"         param = 2 + 2;\n" + 
7813
		"         param = 2 + 2;\n" +
7745
		"         int x = param + 2;\n" + 
7814
		"         int x = param + 2;\n" +
7746
		"         return param - x;\n" + 
7815
		"         return param - x;\n" +
7747
		"     }\n" + 
7816
		"     }\n" +
7748
		"}\n"
7817
		"}\n"
7749
	);
7818
	);
7750
}
7819
}
Lines 7763-7771 Link Here
7763
	ILocalVariable param = getLocalVariable(this.workingCopies[0], "param", "param");
7832
	ILocalVariable param = getLocalVariable(this.workingCopies[0], "param", "param");
7764
	search(param, ALL_OCCURRENCES);
7833
	search(param, ALL_OCCURRENCES);
7765
	assertSearchResults(
7834
	assertSearchResults(
7766
		"src/A.java int A.x(int).param [param] EXACT_MATCH\n" + 
7835
		"src/A.java int A.x(int).param [param] EXACT_MATCH\n" +
7767
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" + 
7836
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" +
7768
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" + 
7837
		"src/A.java int A.x(int) [param] EXACT_MATCH\n" +
7769
		"src/A.java int A.x(int) [param] EXACT_MATCH"
7838
		"src/A.java int A.x(int) [param] EXACT_MATCH"
7770
	);
7839
	);
7771
}
7840
}
Lines 7787-7793 Link Here
7787
	collector.showAccuracy = true;
7856
	collector.showAccuracy = true;
7788
	search(type, REFERENCES, getJavaSearchScopeBugs(), collector);
7857
	search(type, REFERENCES, getJavaSearchScopeBugs(), collector);
7789
	assertSearchResults(
7858
	assertSearchResults(
7790
		"lib/b164791.jar test.<anonymous> EXACT_MATCH\n" + 
7859
		"lib/b164791.jar test.<anonymous> EXACT_MATCH\n" +
7791
		"lib/b164791.jar test.<anonymous> EXACT_MATCH",
7860
		"lib/b164791.jar test.<anonymous> EXACT_MATCH",
7792
		collector
7861
		collector
7793
	);
7862
	);
Lines 7801-7807 Link Here
7801
public void testBug166348() throws CoreException {
7870
public void testBug166348() throws CoreException {
7802
	search("Test166348", TYPE, DECLARATIONS);
7871
	search("Test166348", TYPE, DECLARATIONS);
7803
	assertSearchResults(
7872
	assertSearchResults(
7804
		"lib/b166348.jar pack.Test166348 [No source] EXACT_MATCH\n" + 
7873
		"lib/b166348.jar pack.Test166348 [No source] EXACT_MATCH\n" +
7805
		"lib/b166348.jar test.Test166348 [No source] EXACT_MATCH"
7874
		"lib/b166348.jar test.Test166348 [No source] EXACT_MATCH"
7806
	);
7875
	);
7807
}
7876
}
Lines 7892-7906 Link Here
7892
		createJavaProject("P2", new String[] {""}, new String[] {"JCL_LIB", "/P1/bin"}, "");
7961
		createJavaProject("P2", new String[] {""}, new String[] {"JCL_LIB", "/P1/bin"}, "");
7893
		workingCopies = new ICompilationUnit[2];
7962
		workingCopies = new ICompilationUnit[2];
7894
		workingCopies[0] = getWorkingCopy("/P2/Test1.java",
7963
		workingCopies[0] = getWorkingCopy("/P2/Test1.java",
7895
			"public class Test1 {\n" + 
7964
			"public class Test1 {\n" +
7896
			"  void bar() {\n" + 
7965
			"  void bar() {\n" +
7897
			"    p.Y.foo();\n" + 
7966
			"    p.Y.foo();\n" +
7898
			"    new p.X();\n" + // cause AbortCompilation here
7967
			"    new p.X();\n" + // cause AbortCompilation here
7899
			"  }\n" + 
7968
			"  }\n" +
7900
			"}"
7969
			"}"
7901
		);
7970
		);
7902
		workingCopies[1] = getWorkingCopy("/P2/Test2.java",
7971
		workingCopies[1] = getWorkingCopy("/P2/Test2.java",
7903
			"public class Test2 {\n" + 
7972
			"public class Test2 {\n" +
7904
			"  void foo() {}\n" +
7973
			"  void foo() {}\n" +
7905
			"  void bar() {\n" +
7974
			"  void bar() {\n" +
7906
			"    foo();\n" +
7975
			"    foo();\n" +
Lines 7953-8045 Link Here
7953
public void testBug185452() throws CoreException {
8022
public void testBug185452() throws CoreException {
7954
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
8023
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
7955
	search(
8024
	search(
7956
		"*", 
8025
		"*",
7957
		PACKAGE,
8026
		PACKAGE,
7958
		DECLARATIONS, 
8027
		DECLARATIONS,
7959
		SearchEngine.createWorkspaceScope(), 
8028
		SearchEngine.createWorkspaceScope(),
7960
		packageCollector);
8029
		packageCollector);
7961
	assertSearchResults(
8030
	assertSearchResults(
7962
		""+ getExternalJCLPathString("1.5") + " \n" + 
8031
		""+ getExternalJCLPathString("1.5") + " \n" +
7963
		""+ getExternalJCLPathString("1.5") + " java\n" + 
8032
		""+ getExternalJCLPathString("1.5") + " java\n" +
7964
		""+ getExternalJCLPathString("1.5") + " java.io\n" + 
8033
		""+ getExternalJCLPathString("1.5") + " java.io\n" +
7965
		""+ getExternalJCLPathString("1.5") + " java.lang\n" + 
8034
		""+ getExternalJCLPathString("1.5") + " java.lang\n" +
7966
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation\n" + 
8035
		""+ getExternalJCLPathString("1.5") + " java.lang.annotation\n" +
7967
		"lib \n" + 
8036
		"lib \n" +
7968
		"lib/JavaSearch15.jar  [No source]\n" + 
8037
		"lib/JavaSearch15.jar  [No source]\n" +
7969
		"lib/JavaSearch15.jar g1 [No source]\n" + 
8038
		"lib/JavaSearch15.jar g1 [No source]\n" +
7970
		"lib/JavaSearch15.jar g1.t [No source]\n" + 
8039
		"lib/JavaSearch15.jar g1.t [No source]\n" +
7971
		"lib/JavaSearch15.jar g1.t.s [No source]\n" + 
8040
		"lib/JavaSearch15.jar g1.t.s [No source]\n" +
7972
		"lib/JavaSearch15.jar g1.t.s.def [No source]\n" + 
8041
		"lib/JavaSearch15.jar g1.t.s.def [No source]\n" +
7973
		"lib/JavaSearch15.jar g5 [No source]\n" + 
8042
		"lib/JavaSearch15.jar g5 [No source]\n" +
7974
		"lib/JavaSearch15.jar g5.c [No source]\n" + 
8043
		"lib/JavaSearch15.jar g5.c [No source]\n" +
7975
		"lib/JavaSearch15.jar g5.c.def [No source]\n" + 
8044
		"lib/JavaSearch15.jar g5.c.def [No source]\n" +
7976
		"lib/JavaSearch15.jar g5.m [No source]\n" + 
8045
		"lib/JavaSearch15.jar g5.m [No source]\n" +
7977
		"lib/JavaSearch15.jar g5.m.def [No source]\n" + 
8046
		"lib/JavaSearch15.jar g5.m.def [No source]\n" +
7978
		"lib/b110422.jar  [No source]\n" + 
8047
		"lib/b110422.jar  [No source]\n" +
7979
		"lib/b110422.jar b110422 [No source]\n" + 
8048
		"lib/b110422.jar b110422 [No source]\n" +
7980
		"lib/b123679.jar  [No source]\n" + 
8049
		"lib/b123679.jar  [No source]\n" +
7981
		"lib/b123679.jar pack [No source]\n" + 
8050
		"lib/b123679.jar pack [No source]\n" +
7982
		"lib/b123679.jar test [No source]\n" + 
8051
		"lib/b123679.jar test [No source]\n" +
7983
		"lib/b124469.jar  [No source]\n" + 
8052
		"lib/b124469.jar  [No source]\n" +
7984
		"lib/b124469.jar pack [No source]\n" + 
8053
		"lib/b124469.jar pack [No source]\n" +
7985
		"lib/b124469.jar test [No source]\n" + 
8054
		"lib/b124469.jar test [No source]\n" +
7986
		"lib/b124645.jar  [No source]\n" + 
8055
		"lib/b124645.jar  [No source]\n" +
7987
		"lib/b124645.jar test [No source]\n" + 
8056
		"lib/b124645.jar test [No source]\n" +
7988
		"lib/b124645.jar xy [No source]\n" + 
8057
		"lib/b124645.jar xy [No source]\n" +
7989
		"lib/b125178.jar  [No source]\n" + 
8058
		"lib/b125178.jar  [No source]\n" +
7990
		"lib/b125178.jar pack [No source]\n" + 
8059
		"lib/b125178.jar pack [No source]\n" +
7991
		"lib/b125178.jar pack.age [No source]\n" + 
8060
		"lib/b125178.jar pack.age [No source]\n" +
7992
		"lib/b126330.jar  [No source]\n" + 
8061
		"lib/b126330.jar  [No source]\n" +
7993
		"lib/b128877.jar  [No source]\n" + 
8062
		"lib/b128877.jar  [No source]\n" +
7994
		"lib/b128877.jar pack [No source]\n" + 
8063
		"lib/b128877.jar pack [No source]\n" +
7995
		"lib/b137984.jar  [No source]\n" + 
8064
		"lib/b137984.jar  [No source]\n" +
7996
		"lib/b140156.jar  [No source]\n" + 
8065
		"lib/b140156.jar  [No source]\n" +
7997
		"lib/b164791.jar  [No source]\n" + 
8066
		"lib/b164791.jar  [No source]\n" +
7998
		"lib/b164791.jar pack [No source]\n" + 
8067
		"lib/b164791.jar pack [No source]\n" +
7999
		"lib/b164791.jar test [No source]\n" + 
8068
		"lib/b164791.jar test [No source]\n" +
8000
		"lib/b166348.jar  [No source]\n" + 
8069
		"lib/b166348.jar  [No source]\n" +
8001
		"lib/b166348.jar pack [No source]\n" + 
8070
		"lib/b166348.jar pack [No source]\n" +
8002
		"lib/b166348.jar test [No source]\n" + 
8071
		"lib/b166348.jar test [No source]\n" +
8003
		"lib/b86293.jar  [No source]\n" + 
8072
		"lib/b86293.jar  [No source]\n" +
8004
		"lib/b87627.jar  [No source]\n" + 
8073
		"lib/b87627.jar  [No source]\n" +
8005
		"lib/b87627.jar b87627 [No source]\n" + 
8074
		"lib/b87627.jar b87627 [No source]\n" +
8006
		"lib/b89848 b89848\n" + 
8075
		"lib/b89848 b89848\n" +
8007
		"lib/b95152.jar  [No source]\n" + 
8076
		"lib/b95152.jar  [No source]\n" +
8008
		"lib/b95152.jar b95152 [No source]\n" + 
8077
		"lib/b95152.jar b95152 [No source]\n" +
8009
		"lib/test75816.jar  [No source]\n" + 
8078
		"lib/test75816.jar  [No source]\n" +
8010
		"lib/test81556.jar  [No source]\n" + 
8079
		"lib/test81556.jar  [No source]\n" +
8011
		"lib/test81556.jar b81556 [No source]\n" + 
8080
		"lib/test81556.jar b81556 [No source]\n" +
8012
		"lib/test81556.jar b81556.b [No source]\n" + 
8081
		"lib/test81556.jar b81556.b [No source]\n" +
8013
		"src \n" + 
8082
		"src \n" +
8014
		"src/b108088 b108088\n" + 
8083
		"src/b108088 b108088\n" +
8015
		"src/b123679 b123679\n" + 
8084
		"src/b123679 b123679\n" +
8016
		"src/b123679/pack b123679.pack\n" + 
8085
		"src/b123679/pack b123679.pack\n" +
8017
		"src/b123679/test b123679.test\n" + 
8086
		"src/b123679/test b123679.test\n" +
8018
		"src/b124645 b124645\n" + 
8087
		"src/b124645 b124645\n" +
8019
		"src/b124645/test b124645.test\n" + 
8088
		"src/b124645/test b124645.test\n" +
8020
		"src/b124645/xy b124645.xy\n" + 
8089
		"src/b124645/xy b124645.xy\n" +
8021
		"src/b127628 b127628\n" + 
8090
		"src/b127628 b127628\n" +
8022
		"src/b137984 b137984\n" + 
8091
		"src/b137984 b137984\n" +
8023
		"src/b163984 b163984\n" + 
8092
		"src/b142044 b142044\n" +
8024
		"src/b81556 b81556\n" + 
8093
		"src/b163984 b163984\n" +
8025
		"src/b81556/a b81556.a\n" + 
8094
		"src/b81556 b81556\n" +
8026
		"src/b86380 b86380\n" + 
8095
		"src/b81556/a b81556.a\n" +
8096
		"src/b86380 b86380\n" +
8027
		"src/b95794 b95794",
8097
		"src/b95794 b95794",
8028
		packageCollector);
8098
		packageCollector);
8029
}
8099
}
8030
8100
8031
/**
8101
/**
8032
 * @bug 194185 [search] for package declarations finds also subpackages
8102
 * @bug 194185 [search] for package declarations finds also subpackages
8033
 * @test Ensure that exact package is found when no 
8103
 * @test Ensure that exact package is found when no
8034
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=194185"
8104
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=194185"
8035
 */
8105
 */
8036
public void testBug194185() throws CoreException {
8106
public void testBug194185() throws CoreException {
8037
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
8107
	JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
8038
	search(
8108
	search(
8039
		"java", 
8109
		"java",
8040
		PACKAGE,
8110
		PACKAGE,
8041
		DECLARATIONS, 
8111
		DECLARATIONS,
8042
		SearchEngine.createWorkspaceScope(), 
8112
		SearchEngine.createWorkspaceScope(),
8043
		packageCollector);
8113
		packageCollector);
8044
	assertSearchResults(
8114
	assertSearchResults(
8045
		""+ getExternalJCLPathString("1.5") + " java",
8115
		""+ getExternalJCLPathString("1.5") + " java",
(-)workspace/JavaSearchBugs/src/b142044/X142044_AB.java (+3 lines)
Added Link Here
1
package b142044;
2
public class X142044_AB implements I142044_A, I142044_B {
3
}
(-)workspace/JavaSearchBugs/src/b142044/I142044_B.java (+3 lines)
Added Link Here
1
package b142044;
2
public interface I142044_B {
3
}
(-)workspace/JavaSearchBugs/src/b142044/X142044.java (+6 lines)
Added Link Here
1
package b142044;
2
public class X142044 {
3
	class XX1 implements I142044_A {}
4
	class XX2 implements I142044_B {}
5
	class XX12 implements I142044_A, I142044_B {}
6
}
(-)workspace/JavaSearchBugs/src/b142044/I142044_A.java (+3 lines)
Added Link Here
1
package b142044;
2
public interface I142044_A {
3
}
(-)workspace/JavaSearchBugs/src/b142044/X142044_B.java (+3 lines)
Added Link Here
1
package b142044;
2
public class X142044_B implements I142044_B {
3
}
(-)workspace/JavaSearchBugs/src/b142044/X142044_A.java (+3 lines)
Added Link Here
1
package b142044;
2
public class X142044_A implements I142044_A {
3
}

Return to bug 142044