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

Collapse All | Expand All

(-)codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java (+26 lines)
Lines 5947-5952 Link Here
5947
5947
5948
			if (this.options.checkVisibility
5948
			if (this.options.checkVisibility
5949
				&& !field.canBeSeenBy(receiverType, invocationSite, scope))	continue next;
5949
				&& !field.canBeSeenBy(receiverType, invocationSite, scope))	continue next;
5950
			
5951
			int ptr = this.uninterestingBindingsPtr;
5952
			// Cases where the binding is uninteresting eg. for completion occurring inside a field declaration,
5953
			// the field binding is uninteresting and shouldn't be proposed.
5954
			while (ptr >= 0) {
5955
				if (this.uninterestingBindings[ptr] == field) {
5956
					ptr = Integer.MAX_VALUE;
5957
					break;
5958
				}
5959
				ptr--;
5960
			}
5961
			if (ptr == Integer.MAX_VALUE)
5962
				continue next;
5950
5963
5951
			boolean prefixRequired = false;
5964
			boolean prefixRequired = false;
5952
5965
Lines 11312-11317 Link Here
11312
11325
11313
							if (local.isSecret())
11326
							if (local.isSecret())
11314
								continue next;
11327
								continue next;
11328
							
11329
							int ptr = this.uninterestingBindingsPtr;
11330
							// Cases where the binding is uninteresting eg. for completion occurring inside a local var
11331
							// declaration, the local var binding is uninteresting and shouldn't be proposed.
11332
							while (ptr >= 0) {
11333
								if (this.uninterestingBindings[ptr] == local) {
11334
									ptr = Integer.MAX_VALUE;
11335
									break;
11336
								}
11337
								ptr--;
11338
							}
11339
							if (ptr == Integer.MAX_VALUE)
11340
								continue next;
11315
11341
11316
							for (int f = 0; f < localsFound.size; f++) {
11342
							for (int f = 0; f < localsFound.size; f++) {
11317
								LocalVariableBinding otherLocal =
11343
								LocalVariableBinding otherLocal =
(-)src/org/eclipse/jdt/core/tests/model/CompletionTests.java (-7 / +52 lines)
Lines 4894-4900 Link Here
4894
4894
4895
	if(CompletionEngine.NO_TYPE_COMPLETION_ON_EMPTY_TOKEN) {
4895
	if(CompletionEngine.NO_TYPE_COMPLETION_ON_EMPTY_TOKEN) {
4896
		assertEquals(
4896
		assertEquals(
4897
			"element:a    completion:a    relevance:"+(R_DEFAULT + R_RESOLVED + R_CASE + R_EXACT_EXPECTED_TYPE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4898
			"element:clone    completion:clone()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4897
			"element:clone    completion:clone()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4899
			"element:equals    completion:equals()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4898
			"element:equals    completion:equals()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4900
			"element:finalize    completion:finalize()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
4899
			"element:finalize    completion:finalize()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
Lines 4912-4918 Link Here
4912
		assertEquals(
4911
		assertEquals(
4913
			"element:A    completion:A    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_EXACT_EXPECTED_TYPE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4912
			"element:A    completion:A    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_EXACT_EXPECTED_TYPE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4914
			"element:CompletionEmptyTypeName2    completion:CompletionEmptyTypeName2    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4913
			"element:CompletionEmptyTypeName2    completion:CompletionEmptyTypeName2    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4915
			"element:a    completion:a    relevance:"+(R_DEFAULT + R_RESOLVED + R_CASE + R_EXACT_EXPECTED_TYPE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4916
			"element:clone    completion:clone()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4914
			"element:clone    completion:clone()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4917
			"element:equals    completion:equals()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4915
			"element:equals    completion:equals()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4918
			"element:finalize    completion:finalize()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
4916
			"element:finalize    completion:finalize()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
Lines 4954-4961 Link Here
4954
			"element:toString    completion:toString()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4952
			"element:toString    completion:toString()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4955
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4953
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4956
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4954
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4957
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4955
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED),
4958
			"element:x    completion:x    relevance:"+(R_DEFAULT + R_RESOLVED + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE+ R_NON_RESTRICTED),
4959
			requestor.getResults());
4956
			requestor.getResults());
4960
	} else {
4957
	} else {
4961
		assertEquals(
4958
		assertEquals(
Lines 4974-4981 Link Here
4974
			"element:toString    completion:toString()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4971
			"element:toString    completion:toString()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED)+"\n" +
4975
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
4972
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
4976
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
4973
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
4977
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED)+"\n" +
4974
			"element:wait    completion:wait()    relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_VOID + R_NON_RESTRICTED),
4978
			"element:x    completion:x    relevance:"+(R_DEFAULT + R_RESOLVED + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE+ R_NON_RESTRICTED),
4979
			requestor.getResults());
4975
			requestor.getResults());
4980
	}
4976
	}
4981
}
4977
}
Lines 8333-8339 Link Here
8333
			"getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class;, getClass, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
8329
			"getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class;, getClass, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
8334
			"hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
8330
			"hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
8335
			"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
8331
			"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
8336
			"test[FIELD_REF]{test, Ltest.Test;, Z, test, null, " + (R_DEFAULT + R_RESOLVED + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE + R_NON_RESTRICTED) + "}\n" +
8337
			"equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE + R_NON_RESTRICTED) + "}\n" +
8332
			"equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE + R_NON_RESTRICTED) + "}\n" +
8338
			"false[KEYWORD]{false, null, null, false, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE + R_TRUE_OR_FALSE + R_NON_RESTRICTED) + "}\n" +
8333
			"false[KEYWORD]{false, null, null, false, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE + R_TRUE_OR_FALSE + R_NON_RESTRICTED) + "}\n" +
8339
			"true[KEYWORD]{true, null, null, true, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE + R_TRUE_OR_FALSE + R_NON_RESTRICTED) + "}",
8334
			"true[KEYWORD]{true, null, null, true, null, " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_EXACT_EXPECTED_TYPE + R_TRUE_OR_FALSE + R_NON_RESTRICTED) + "}",
Lines 21333-21336 Link Here
21333
			"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, null, null, toString, null, replace[" + start1 + ", " + end1 + "], token[" + start1 + ", " + end1 +"], " + relevance1 + "}",
21328
			"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, null, null, toString, null, replace[" + start1 + ", " + end1 + "], token[" + start1 + ", " + end1 +"], " + relevance1 + "}",
21334
			requestor.getResults());
21329
			requestor.getResults());
21335
}
21330
}
21331
21332
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=310427
21333
// To verify that we don't get proposals for the field in whose declaration
21334
// content assist is being invoked
21335
public void testBug310427a() throws JavaModelException {
21336
	this.workingCopies = new ICompilationUnit[1];
21337
	this.workingCopies[0] = getWorkingCopy(
21338
		"/Completion/src/test/Test.java",
21339
		"package test;"+
21340
		"public class Test {\n" +
21341
		"	private int myField1;\n" +
21342
		"   private int myField2 = myFiel;\n" +
21343
		"}\n");
21344
21345
	CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
21346
	String str = this.workingCopies[0].getSource();
21347
	String completeBehind = "private int myField2 = myFiel";
21348
	int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
21349
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
21350
21351
	assertResults(
21352
			"myField1[FIELD_REF]{myField1, Ltest.Test;, I, myField1, null, 57}",
21353
			requestor.getResults());
21354
}
21355
21356
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=310427
21357
// To verify that we don't get proposals for the local variable in whose declaration
21358
// content assist is being invoked
21359
public void testBug310427b() throws JavaModelException {
21360
	this.workingCopies = new ICompilationUnit[1];
21361
	this.workingCopies[0] = getWorkingCopy(
21362
		"/Completion/src/test/Test.java",
21363
		"package test;"+
21364
		"public class Test {\n" +
21365
		"	public static void main() {\n" +
21366
		"		int myVar1 = 1;\n" +
21367
		"		int myVar2 = myVar;\n" +
21368
		"	}\n" +
21369
		"}\n");
21370
21371
	CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
21372
	String str = this.workingCopies[0].getSource();
21373
	String completeBehind = "int myVar2 = myVar";
21374
	int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
21375
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
21376
21377
	assertResults(
21378
			"myVar1[LOCAL_VARIABLE_REF]{myVar1, null, I, myVar1, null, 57}",
21379
			requestor.getResults());
21380
}
21336
}
21381
}

Return to bug 310427