View | Details | Raw Unified | Return to bug 128073
Collapse All | Expand All

(-)workspace/Completion/src3/test0061/Test.java (-7 lines)
Removed Link Here
1
package test0061;
2
import static pkgstaticimport.QQType4.zzvarzz2;
3
public class Test {
4
	void foo() {
5
		zzvarzz
6
	}
7
}
(-)workspace/Completion/src3/test0058/Test.java (-7 lines)
Removed Link Here
1
package test0058;
2
import static pkgstaticimport.QQType4.*;
3
public class Test {
4
	void foo() {
5
		zzvarzz
6
	}
7
}
(-)workspace/Completion/src3/test0063/Test.java (-8 lines)
Removed Link Here
1
package test0061;
2
import static pkgstaticimport.QQType4.zzvarzz2;
3
import static pkgstaticimport.QQType4.*;
4
public class Test {
5
	void foo() {
6
		zzvarzz
7
	}
8
}
(-)workspace/Completion/src3/test0065/Test.java (-7 lines)
Removed Link Here
1
package test0065;
2
import static pkgstaticimport.QQType7.*;
3
public class Test {
4
	void foo() {
5
		zzfoozz
6
	}
7
}
(-)src/org/eclipse/jdt/core/tests/model/CompletionTests.java (-13 / +62 lines)
Lines 232-239 Link Here
232
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
232
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
233
	
233
	
234
		assertResults(
234
		assertResults(
235
				"foo1[METHOD_REF]{foo1(), Ldeprecation.ZZZType1;, ()V, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}\n" +
235
				"foo1[METHOD_REF]{foo1(), Ldeprecation.ZZZType1;, ()V, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
236
				"foo2[METHOD_REF]{foo2(), Ldeprecation.ZZZType1;, ()V, foo2, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
236
				"foo2[METHOD_REF]{foo2(), Ldeprecation.ZZZType1;, ()V, foo2, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
237
				requestor.getResults());
237
				requestor.getResults());
238
	} finally {
238
	} finally {
239
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
239
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
Lines 274-280 Link Here
274
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
274
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
275
	
275
	
276
		assertResults(
276
		assertResults(
277
				"foo1[METHOD_REF]{foo1(), Ldeprecation.ZZZType1;, ()V, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
277
				"foo1[METHOD_REF]{foo1(), Ldeprecation.ZZZType1;, ()V, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
278
				requestor.getResults());
278
				requestor.getResults());
279
	} finally {
279
	} finally {
280
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
280
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
Lines 394-401 Link Here
394
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
394
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
395
	
395
	
396
		assertResults(
396
		assertResults(
397
				"foo1[FIELD_REF]{foo1, Ldeprecation.ZZZType1;, I, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}\n" +
397
				"foo1[FIELD_REF]{foo1, Ldeprecation.ZZZType1;, I, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
398
				"foo2[FIELD_REF]{foo2, Ldeprecation.ZZZType1;, I, foo2, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
398
				"foo2[FIELD_REF]{foo2, Ldeprecation.ZZZType1;, I, foo2, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
399
				requestor.getResults());
399
				requestor.getResults());
400
	} finally {
400
	} finally {
401
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
401
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
Lines 436-442 Link Here
436
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
436
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
437
	
437
	
438
		assertResults(
438
		assertResults(
439
				"foo1[FIELD_REF]{foo1, Ldeprecation.ZZZType1;, I, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
439
				"foo1[FIELD_REF]{foo1, Ldeprecation.ZZZType1;, I, foo1, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
440
				requestor.getResults());
440
				requestor.getResults());
441
	} finally {
441
	} finally {
442
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
442
		options.put(JavaCore.CODEASSIST_DEPRECATION_CHECK, timeout);
Lines 1685-1691 Link Here
1685
    this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
1685
    this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
1686
1686
1687
	assertResults(
1687
	assertResults(
1688
		"B1.Inner1[TYPE_REF]{Inner1, , LB1$Inner1;, null, null, "+(R_DEFAULT + R_INTERESTING + R_CASE+ R_NON_RESTRICTED) +"}",
1688
		"B1.Inner1[TYPE_REF]{Inner1, , LB1$Inner1;, null, null, "+(R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) +"}",
1689
		requestor.getResults());
1689
		requestor.getResults());
1690
}
1690
}
1691
1691
Lines 4042-4048 Link Here
4042
		cu.codeComplete(cursorLocation, requestor);
4042
		cu.codeComplete(cursorLocation, requestor);
4043
4043
4044
		assertEquals(
4044
		assertEquals(
4045
			"element:this    completion:this    relevance:"+(R_DEFAULT + R_INTERESTING + R_CASE+ R_NON_RESTRICTED),
4045
			"element:this    completion:this    relevance:"+(R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED),
4046
			requestor.getResults());
4046
			requestor.getResults());
4047
}
4047
}
4048
public void testCompletionKeywordThis7() throws JavaModelException {
4048
public void testCompletionKeywordThis7() throws JavaModelException {
Lines 6626-6632 Link Here
6626
		cu.codeComplete(cursorLocation, requestor);
6626
		cu.codeComplete(cursorLocation, requestor);
6627
6627
6628
		assertEquals(
6628
		assertEquals(
6629
			"element:this    completion:this    relevance:"+(R_DEFAULT + R_INTERESTING + R_CASE+ R_NON_RESTRICTED),
6629
			"element:this    completion:this    relevance:"+(R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED),
6630
			requestor.getResults());
6630
			requestor.getResults());
6631
}
6631
}
6632
public void testCompletionKeywordThis14() throws JavaModelException {
6632
public void testCompletionKeywordThis14() throws JavaModelException {
Lines 6664-6672 Link Here
6664
    this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
6664
    this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
6665
6665
6666
	assertResults(
6666
	assertResults(
6667
			"CompletionKeywordThis15.InnerClass[TYPE_REF]{InnerClass, , LCompletionKeywordThis15$InnerClass;, null, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}\n" +
6667
			"CompletionKeywordThis15.InnerClass[TYPE_REF]{InnerClass, , LCompletionKeywordThis15$InnerClass;, null, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
6668
			"class[FIELD_REF]{class, null, Ljava.lang.Class;, class, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}\n"+
6668
			"class[FIELD_REF]{class, null, Ljava.lang.Class;, class, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n"+
6669
			"this[KEYWORD]{this, null, null, this, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
6669
			"this[KEYWORD]{this, null, null, this, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
6670
		requestor.getResults());
6670
		requestor.getResults());
6671
}
6671
}
6672
public void testCompletionKeywordSuper7() throws JavaModelException {
6672
public void testCompletionKeywordSuper7() throws JavaModelException {
Lines 9992-9998 Link Here
9992
	cu.codeComplete(cursorLocation, requestor);
9992
	cu.codeComplete(cursorLocation, requestor);
9993
9993
9994
	assertEquals(
9994
	assertEquals(
9995
		"element:class    completion:class    relevance:"+(R_DEFAULT + R_INTERESTING + R_CASE+ R_NON_RESTRICTED),
9995
		"element:class    completion:class    relevance:"+(R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED),
9996
		requestor.getResults());
9996
		requestor.getResults());
9997
}
9997
}
9998
public void testCompletionArraysCloneMethod() throws JavaModelException {
9998
public void testCompletionArraysCloneMethod() throws JavaModelException {
Lines 12390-12393 Link Here
12390
			"label2[LABEL_REF]{label2, null, null, label2, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
12390
			"label2[LABEL_REF]{label2, null, null, label2, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
12391
			requestor.getResults());
12391
			requestor.getResults());
12392
}
12392
}
12393
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=22072
12394
public void testStaticMembers1() throws JavaModelException {
12395
	this.workingCopies = new ICompilationUnit[3];
12396
	this.workingCopies[0] = getWorkingCopy(
12397
		"/Completion/src/test/Test.java",
12398
		"package test;"+
12399
		"public class Test {\n" + 
12400
		"  void foo() {\n" + 
12401
 		"    StaticMembers.\n" + 
12402
		"  }\n" + 
12403
		"}\n");
12404
	
12405
	this.workingCopies[1] = getWorkingCopy(
12406
		"/Completion/src/test/StaticMembers.java",
12407
		"package test;"+
12408
		"public class StaticMembers extends SuperStaticMembers {\n" + 
12409
		"  public static int staticField;\n" + 
12410
 		"  public static int staticMethod() {}\n" + 
12411
		"  public class Clazz {}\n" + 
12412
		"  public static class StaticClazz {}\n" + 
12413
		"}\n");
12414
	
12415
	this.workingCopies[2] = getWorkingCopy(
12416
			"/Completion/src/test/SuperStaticMembers.java",
12417
			"package test;"+
12418
			"public class SuperStaticMembers {\n" + 
12419
			"  public static int superStaticField;\n" + 
12420
	 		"  public static int supeStaticMethod() {}\n" + 
12421
			"  public class SuperClazz {}\n" + 
12422
			"  public static class SuperStaticClazz {}\n" + 
12423
			"}\n");
12424
12425
	CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
12426
	String str = this.workingCopies[0].getSource();
12427
	String completeBehind = "StaticMembers.";
12428
	int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
12429
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
12430
12431
	assertResults(
12432
			"supeStaticMethod[METHOD_REF]{supeStaticMethod(), Ltest.SuperStaticMembers;, ()I, supeStaticMethod, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}\n" +
12433
			"superStaticField[FIELD_REF]{superStaticField, Ltest.SuperStaticMembers;, I, superStaticField, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}\n" +
12434
			"StaticMembers.Clazz[TYPE_REF]{Clazz, test, Ltest.StaticMembers$Clazz;, null, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
12435
			"StaticMembers.StaticClazz[TYPE_REF]{StaticClazz, test, Ltest.StaticMembers$StaticClazz;, null, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
12436
			"class[FIELD_REF]{class, null, Ljava.lang.Class;, class, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
12437
			"staticField[FIELD_REF]{staticField, Ltest.StaticMembers;, I, staticField, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
12438
			"staticMethod[METHOD_REF]{staticMethod(), Ltest.StaticMembers;, ()I, staticMethod, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}\n" +
12439
			"this[KEYWORD]{this, null, null, this, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
12440
			requestor.getResults());
12441
}
12393
}
12442
}
(-)src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java (-42 / +108 lines)
Lines 1519-1535 Link Here
1519
		
1519
		
1520
		qqTypes = this.getExternalQQTypes();
1520
		qqTypes = this.getExternalQQTypes();
1521
		
1521
		
1522
		this.workingCopies = new ICompilationUnit[1];
1523
		this.workingCopies[0] = getWorkingCopy(
1524
			"/Completion/src3/test0058/Test.java",
1525
			"package test0058;\n"+
1526
			"import static pkgstaticimport.QQType4.*;\n"+
1527
			"public class Test {\n"+
1528
			"	void foo() {\n"+
1529
			"		zzvarzz\n"+
1530
			"	}\n"+
1531
			"}");
1532
1522
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1533
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1523
		ICompilationUnit cu= getCompilationUnit("Completion", "src3", "test0058", "Test.java");
1534
		String str = this.workingCopies[0].getSource();
1524
	
1525
		String str = cu.getSource();
1526
		String completeBehind = "zzvarzz";
1535
		String completeBehind = "zzvarzz";
1527
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1536
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1528
		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
1537
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
1529
	
1538
1530
		assertResults(
1539
		assertResults(
1531
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
1540
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
1532
				requestor.getResults());
1541
				requestor.getResults());
1542
	
1533
	} finally {
1543
	} finally {
1534
		this.discardWorkingCopies(qqTypes);
1544
		this.discardWorkingCopies(qqTypes);
1535
		
1545
		
Lines 1562-1576 Link Here
1562
				"	int zzvarzz7;\n"+
1572
				"	int zzvarzz7;\n"+
1563
				"	static int zzvarzz8;\n"+
1573
				"	static int zzvarzz8;\n"+
1564
				"}");
1574
				"}");
1565
		
1566
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1567
		ICompilationUnit cu= getCompilationUnit("Completion", "src3", "test0059", "Test.java");
1568
	
1575
	
1569
		String str = cu.getSource();
1576
		this.workingCopies = new ICompilationUnit[1];
1577
		this.workingCopies[0] = getWorkingCopy(
1578
			"/Completion/src3/test0059/Test.java",
1579
			"package test0059;\n"+
1580
			"import static test0059.QQType5.*;\n"+
1581
			"public class Test {\n"+
1582
			"	void foo() {\n"+
1583
			"		zzvarzz\n"+
1584
			"	}\n"+
1585
			"}");
1586
1587
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1588
		String str = this.workingCopies[0].getSource();
1570
		String completeBehind = "zzvarzz";
1589
		String completeBehind = "zzvarzz";
1571
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1590
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1572
		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
1591
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
1573
	
1592
		
1574
		assertResults(
1593
		assertResults(
1575
				"zzvarzz2[FIELD_REF]{zzvarzz2, Ltest0059.QQType5;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
1594
				"zzvarzz2[FIELD_REF]{zzvarzz2, Ltest0059.QQType5;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
1576
				"zzvarzz4[FIELD_REF]{zzvarzz4, Ltest0059.QQType5;, I, zzvarzz4, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
1595
				"zzvarzz4[FIELD_REF]{zzvarzz4, Ltest0059.QQType5;, I, zzvarzz4, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
Lines 1626-1638 Link Here
1626
		
1645
		
1627
		qqTypes = this.getExternalQQTypes();
1646
		qqTypes = this.getExternalQQTypes();
1628
		
1647
		
1648
		this.workingCopies = new ICompilationUnit[1];
1649
		this.workingCopies[0] = getWorkingCopy(
1650
			"/Completion/src3/test0061/Test.java",
1651
			"package test0061;\n" +
1652
			"import static pkgstaticimport.QQType4.zzvarzz2;\n" +
1653
			"public class Test {\n" +
1654
			"	void foo() {\n" +
1655
			"		zzvarzz\n" +
1656
			"	}\n" +
1657
			"}");
1658
1629
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1659
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1630
		ICompilationUnit cu= getCompilationUnit("Completion", "src3", "test0061", "Test.java");
1660
		String str = this.workingCopies[0].getSource();
1631
	
1632
		String str = cu.getSource();
1633
		String completeBehind = "zzvarzz";
1661
		String completeBehind = "zzvarzz";
1634
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1662
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1635
		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
1663
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
1636
	
1664
	
1637
		assertResults(
1665
		assertResults(
1638
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
1666
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
Lines 1654-1666 Link Here
1654
		
1682
		
1655
		qqTypes = this.getExternalQQTypes();
1683
		qqTypes = this.getExternalQQTypes();
1656
		
1684
		
1685
		this.workingCopies = new ICompilationUnit[1];
1686
		this.workingCopies[0] = getWorkingCopy(
1687
			"/Completion/src3/test0062/Test.java",
1688
			"package test0062;\n" +
1689
			"import static pkgstaticimport.QQType4.*;\n" +
1690
			"import static pkgstaticimport.QQType4.zzvarzz2;\n" +
1691
			"public class Test {\n" +
1692
			"	void foo() {\n" +
1693
			"		zzvarzz\n" +
1694
			"	}\n" +
1695
			"}");
1696
1657
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1697
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1658
		ICompilationUnit cu= getCompilationUnit("Completion", "src3", "test0062", "Test.java");
1698
		String str = this.workingCopies[0].getSource();
1659
	
1660
		String str = cu.getSource();
1661
		String completeBehind = "zzvarzz";
1699
		String completeBehind = "zzvarzz";
1662
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1700
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1663
		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
1701
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
1664
	
1702
	
1665
		assertResults(
1703
		assertResults(
1666
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
1704
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
Lines 1682-1694 Link Here
1682
		
1720
		
1683
		qqTypes = this.getExternalQQTypes();
1721
		qqTypes = this.getExternalQQTypes();
1684
		
1722
		
1723
		this.workingCopies = new ICompilationUnit[1];
1724
		this.workingCopies[0] = getWorkingCopy(
1725
			"/Completion/src3/test0063/Test.java",
1726
			"package test0063;\n" +
1727
			"import static pkgstaticimport.QQType4.zzvarzz2;\n" +
1728
			"import static pkgstaticimport.QQType4.*;\n" +
1729
			"public class Test {\n" +
1730
			"	void foo() {\n" +
1731
			"		zzvarzz\n" +
1732
			"	}\n" +
1733
			"}");
1734
1685
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1735
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1686
		ICompilationUnit cu= getCompilationUnit("Completion", "src3", "test0063", "Test.java");
1736
		String str = this.workingCopies[0].getSource();
1687
	
1688
		String str = cu.getSource();
1689
		String completeBehind = "zzvarzz";
1737
		String completeBehind = "zzvarzz";
1690
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1738
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1691
		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
1739
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
1692
	
1740
	
1693
		assertResults(
1741
		assertResults(
1694
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
1742
				"zzvarzz2[FIELD_REF]{zzvarzz2, Lpkgstaticimport.QQType4;, I, zzvarzz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
Lines 1737-1751 Link Here
1737
		JavaCore.setOptions(options);
1785
		JavaCore.setOptions(options);
1738
		
1786
		
1739
		qqTypes = this.getExternalQQTypes();
1787
		qqTypes = this.getExternalQQTypes();
1740
		
1741
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1742
		ICompilationUnit cu= getCompilationUnit("Completion", "src3", "test0065", "Test.java");
1743
	
1788
	
1744
		String str = cu.getSource();
1789
		this.workingCopies = new ICompilationUnit[1];
1790
		this.workingCopies[0] = getWorkingCopy(
1791
			"/Completion/src3/test0065/Test.java",
1792
			"package test0065;\n" +
1793
			"import static pkgstaticimport.QQType7.*;\n" +
1794
			"public class Test {\n" +
1795
			"	void foo() {\n" +
1796
			"		zzfoozz\n" +
1797
			"	}\n" +
1798
			"}");
1799
1800
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1801
		String str = this.workingCopies[0].getSource();
1745
		String completeBehind = "zzfoozz";
1802
		String completeBehind = "zzfoozz";
1746
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1803
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1747
		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
1804
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
1748
	
1805
		
1749
		assertResults(
1806
		assertResults(
1750
				"zzfoozz2[METHOD_REF]{zzfoozz2(), Lpkgstaticimport.QQType7;, ()V, zzfoozz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
1807
				"zzfoozz2[METHOD_REF]{zzfoozz2(), Lpkgstaticimport.QQType7;, ()V, zzfoozz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}",
1751
				requestor.getResults());
1808
				requestor.getResults());
Lines 1781-1795 Link Here
1781
				"	void zzfoozz7(){};\n"+
1838
				"	void zzfoozz7(){};\n"+
1782
				"	static void zzfoozz8(){};\n"+
1839
				"	static void zzfoozz8(){};\n"+
1783
				"}");
1840
				"}");
1784
		
1785
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1786
		ICompilationUnit cu= getCompilationUnit("Completion", "src3", "test0066", "Test.java");
1787
	
1841
	
1788
		String str = cu.getSource();
1842
		this.workingCopies = new ICompilationUnit[1];
1843
		this.workingCopies[0] = getWorkingCopy(
1844
			"/Completion/src3/test0066/Test.java",
1845
			"package test0066;\n" +
1846
			"import static test0066.QQType8.*;\n" +
1847
			"public class Test {\n" +
1848
			"	void foo() {\n" +
1849
			"		zzfoozz\n" +
1850
			"	}\n" +
1851
			"}");
1852
1853
		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2();
1854
		String str = this.workingCopies[0].getSource();
1789
		String completeBehind = "zzfoozz";
1855
		String completeBehind = "zzfoozz";
1790
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1856
		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
1791
		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
1857
		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
1792
	
1858
		
1793
		assertResults(
1859
		assertResults(
1794
				"zzfoozz2[METHOD_REF]{zzfoozz2(), Ltest0066.QQType8;, ()V, zzfoozz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
1860
				"zzfoozz2[METHOD_REF]{zzfoozz2(), Ltest0066.QQType8;, ()V, zzfoozz2, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
1795
				"zzfoozz4[METHOD_REF]{zzfoozz4(), Ltest0066.QQType8;, ()V, zzfoozz4, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
1861
				"zzfoozz4[METHOD_REF]{zzfoozz4(), Ltest0066.QQType8;, ()V, zzfoozz4, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}\n" +
Lines 7303-7309 Link Here
7303
            result.context);
7369
            result.context);
7304
7370
7305
	assertResults(
7371
	assertResults(
7306
			"class[FIELD_REF]{class, null, Ljava.lang.Class<Ltest0228/Test;>;, class, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
7372
			"class[FIELD_REF]{class, null, Ljava.lang.Class<Ltest0228/Test;>;, class, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
7307
			result.proposals);
7373
			result.proposals);
7308
}
7374
}
7309
/*
7375
/*
Lines 7328-7334 Link Here
7328
            result.context);
7394
            result.context);
7329
7395
7330
	assertResults(
7396
	assertResults(
7331
			"class[FIELD_REF]{class, null, Ljava.lang.Class<Ltest0229/Test;>;, class, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
7397
			"class[FIELD_REF]{class, null, Ljava.lang.Class<Ltest0229/Test;>;, class, null, " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
7332
			result.proposals);
7398
			result.proposals);
7333
}
7399
}
7334
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=96944
7400
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=96944
Lines 8224-8230 Link Here
8224
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8290
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8225
8291
8226
	assertResults(
8292
	assertResults(
8227
			"zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
8293
			"zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
8228
			requestor.getResults());
8294
			requestor.getResults());
8229
}
8295
}
8230
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
8296
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
Lines 8443-8449 Link Here
8443
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8509
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8444
8510
8445
	assertResults(
8511
	assertResults(
8446
			"zzz2[METHOD_REF]{zzz2(), Ltest.Test;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
8512
			"zzz2[METHOD_REF]{zzz2(), Ltest.Test;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
8447
			requestor.getResults());
8513
			requestor.getResults());
8448
}
8514
}
8449
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
8515
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
Lines 8474-8480 Link Here
8474
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8540
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8475
8541
8476
	assertResults(
8542
	assertResults(
8477
			"zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
8543
			"zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
8478
			requestor.getResults());
8544
			requestor.getResults());
8479
}
8545
}
8480
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
8546
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
Lines 8536-8542 Link Here
8536
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8602
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8537
8603
8538
	assertResults(
8604
	assertResults(
8539
			"zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, <T:Ljava.lang.Object;>(TT;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
8605
			"zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, <T:Ljava.lang.Object;>(TT;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
8540
			requestor.getResults());
8606
			requestor.getResults());
8541
}
8607
}
8542
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
8608
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
Lines 8617-8623 Link Here
8617
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8683
	this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
8618
8684
8619
	assertResults(
8685
	assertResults(
8620
			"zzz2[METHOD_REF]{zzz2(), Ltest.Test;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}",
8686
			"zzz2[METHOD_REF]{zzz2(), Ltest.Test;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
8621
			requestor.getResults());
8687
			requestor.getResults());
8622
}
8688
}
8623
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=133491
8689
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=133491
(-)workspace/Completion/src3/test0062/Test.java (-8 lines)
Removed Link Here
1
package test0062;
2
import static pkgstaticimport.QQType4.*;
3
import static pkgstaticimport.QQType4.zzvarzz2;
4
public class Test {
5
	void foo() {
6
		zzvarzz
7
	}
8
}
(-)workspace/Completion/src3/test0066/Test.java (-7 lines)
Removed Link Here
1
package test0066;
2
import static test0066.QQType8.*;
3
public class Test {
4
	void foo() {
5
		zzfoozz
6
	}
7
}
(-)workspace/Completion/src3/test0059/Test.java (-7 lines)
Removed Link Here
1
package test0059;
2
import static test0059.QQType5.*;
3
public class Test {
4
	void foo() {
5
		zzvarzz
6
	}
7
}
(-)codeassist/org/eclipse/jdt/internal/codeassist/RelevanceConstants.java (-1 / +1 lines)
Lines 39-43 Link Here
39
	int R_TRUE_OR_FALSE = 1;
39
	int R_TRUE_OR_FALSE = 1;
40
	int R_INLINE_TAG = 31;
40
	int R_INLINE_TAG = 31;
41
	int R_VALUE_TAG = 31;
41
	int R_VALUE_TAG = 31;
42
42
	int R_NON_INHERITED = 2;
43
}
43
}
(-)codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java (-9 / +45 lines)
Lines 807-813 Link Here
807
				findTypesAndPackages(this.completionToken, scope);
807
				findTypesAndPackages(this.completionToken, scope);
808
				if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
808
				if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
809
					if (this.completionToken != null && this.completionToken.length != 0) {
809
					if (this.completionToken != null && this.completionToken.length != 0) {
810
						findKeywords(this.completionToken, singleNameReference.possibleKeywords, false);
810
						findKeywords(this.completionToken, singleNameReference.possibleKeywords, false, false);
811
					} else {
811
					} else {
812
						findTrueOrFalseKeywords(singleNameReference.possibleKeywords);
812
						findTrueOrFalseKeywords(singleNameReference.possibleKeywords);
813
					}
813
					}
Lines 854-859 Link Here
854
					false,
854
					false,
855
					false,
855
					false,
856
					false,
856
					false,
857
					false,
857
					!this.assistNodeIsConstructor,
858
					!this.assistNodeIsConstructor,
858
					null,
859
					null,
859
					new ObjectVector());
860
					new ObjectVector());
Lines 886-891 Link Here
886
							scope,
887
							scope,
887
							scope.enclosingSourceType(),
888
							scope.enclosingSourceType(),
888
							false,
889
							false,
890
							true,
889
							new ObjectVector());
891
							new ObjectVector());
890
				}
892
				}
891
				if (!this.requestor.isIgnored(CompletionProposal.FIELD_REF)) {
893
				if (!this.requestor.isIgnored(CompletionProposal.FIELD_REF)) {
Lines 898-909 Link Here
898
						((scope instanceof MethodScope && !((MethodScope)scope).isStatic)
900
						((scope instanceof MethodScope && !((MethodScope)scope).isStatic)
899
						|| ((methodScope = scope.enclosingMethodScope()) != null && !methodScope.isStatic))) {
901
						|| ((methodScope = scope.enclosingMethodScope()) != null && !methodScope.isStatic))) {
900
					if (this.completionToken.length > 0) {
902
					if (this.completionToken.length > 0) {
901
						findKeywords(this.completionToken, new char[][]{Keywords.THIS}, false);
903
						findKeywords(this.completionToken, new char[][]{Keywords.THIS}, false, true);
902
					} else {
904
					} else {
903
						int relevance = computeBaseRelevance();
905
						int relevance = computeBaseRelevance();
904
						relevance += computeRelevanceForInterestingProposal();
906
						relevance += computeRelevanceForInterestingProposal();
905
						relevance += computeRelevanceForCaseMatching(this.completionToken, Keywords.THIS);
907
						relevance += computeRelevanceForCaseMatching(this.completionToken, Keywords.THIS);
906
						relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); // no access restriction for keywords
908
						relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); // no access restriction for keywords
909
						relevance += R_NON_INHERITED;
910
						
907
						this.noProposal = false;
911
						this.noProposal = false;
908
						if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
912
						if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
909
							CompletionProposal proposal = this.createProposal(CompletionProposal.KEYWORD, this.actualCompletionPosition);
913
							CompletionProposal proposal = this.createProposal(CompletionProposal.KEYWORD, this.actualCompletionPosition);
Lines 981-986 Link Here
981
						scope,
985
						scope,
982
						scope.enclosingSourceType(),
986
						scope.enclosingSourceType(),
983
						false,
987
						false,
988
						false,
984
						new ObjectVector());
989
						new ObjectVector());
985
				}
990
				}
986
			} else if (qualifiedBinding instanceof PackageBinding) {
991
			} else if (qualifiedBinding instanceof PackageBinding) {
Lines 998-1004 Link Here
998
			this.completionToken = access.token;
1003
			this.completionToken = access.token;
999
			
1004
			
1000
			if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
1005
			if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
1001
				findKeywords(this.completionToken, new char[][]{Keywords.NEW}, false);
1006
				findKeywords(this.completionToken, new char[][]{Keywords.NEW}, false, false);
1002
			}
1007
			}
1003
			
1008
			
1004
			findFieldsAndMethods(
1009
			findFieldsAndMethods(
Lines 1143-1149 Link Here
1143
		} else if (astNode instanceof CompletionOnKeyword) {
1148
		} else if (astNode instanceof CompletionOnKeyword) {
1144
			if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
1149
			if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
1145
				CompletionOnKeyword keyword = (CompletionOnKeyword)astNode;
1150
				CompletionOnKeyword keyword = (CompletionOnKeyword)astNode;
1146
				findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), keyword.canCompleteEmptyToken());
1151
				findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), keyword.canCompleteEmptyToken(), false);
1147
			}
1152
			}
1148
		} else if (astNode instanceof CompletionOnParameterizedQualifiedTypeReference) {
1153
		} else if (astNode instanceof CompletionOnParameterizedQualifiedTypeReference) {
1149
			if (!this.requestor.isIgnored(CompletionProposal.TYPE_REF)) {
1154
			if (!this.requestor.isIgnored(CompletionProposal.TYPE_REF)) {
Lines 1164-1169 Link Here
1164
					scope,
1169
					scope,
1165
					scope.enclosingSourceType(),
1170
					scope.enclosingSourceType(),
1166
					false,
1171
					false,
1172
					false,
1167
					new ObjectVector());
1173
					new ObjectVector());
1168
			}
1174
			}
1169
		} else if (astNode instanceof CompletionOnMarkerAnnotationName) {
1175
		} else if (astNode instanceof CompletionOnMarkerAnnotationName) {
Lines 1196-1201 Link Here
1196
						scope,
1202
						scope,
1197
						scope.enclosingSourceType(),
1203
						scope.enclosingSourceType(),
1198
						false,
1204
						false,
1205
						false,
1199
						new ObjectVector());
1206
						new ObjectVector());
1200
				}
1207
				}
1201
			}
1208
			}
Lines 1305-1310 Link Here
1305
							scope,
1312
							scope,
1306
							scope.enclosingSourceType(),
1313
							scope.enclosingSourceType(),
1307
							false,
1314
							false,
1315
							false,
1308
							new ObjectVector());
1316
							new ObjectVector());
1309
					}
1317
					}
1310
				} else if (qualifiedBinding instanceof PackageBinding) {
1318
				} else if (qualifiedBinding instanceof PackageBinding) {
Lines 1723-1729 Link Here
1723
							if(!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
1731
							if(!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
1724
								setSourceRange(importReference.sourceStart, importReference.sourceEnd);
1732
								setSourceRange(importReference.sourceStart, importReference.sourceEnd);
1725
								CompletionOnKeyword keyword = (CompletionOnKeyword)importReference;
1733
								CompletionOnKeyword keyword = (CompletionOnKeyword)importReference;
1726
								findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), false);
1734
								findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), false, false);
1727
							}
1735
							}
1728
							if(this.noProposal && this.problem != null) {
1736
							if(this.noProposal && this.problem != null) {
1729
								this.requestor.completionFailure(this.problem);
1737
								this.requestor.completionFailure(this.problem);
Lines 1990-1995 Link Here
1990
			relevance += computeRelevanceForCaseMatching(token, classField);
1998
			relevance += computeRelevanceForCaseMatching(token, classField);
1991
			relevance += computeRelevanceForExpectingType(scope.getJavaLangClass());
1999
			relevance += computeRelevanceForExpectingType(scope.getJavaLangClass());
1992
			relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); //no access restriction for class field 
2000
			relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); //no access restriction for class field 
2001
			relevance += R_NON_INHERITED;
1993
			
2002
			
1994
			this.noProposal = false;
2003
			this.noProposal = false;
1995
			if(!this.requestor.isIgnored(CompletionProposal.FIELD_REF)) {
2004
			if(!this.requestor.isIgnored(CompletionProposal.FIELD_REF)) {
Lines 2548-2553 Link Here
2548
			relevance += computeRelevanceForStatic(onlyStaticFields, field.isStatic());
2557
			relevance += computeRelevanceForStatic(onlyStaticFields, field.isStatic());
2549
			relevance += computeRelevanceForQualification(prefixRequired);
2558
			relevance += computeRelevanceForQualification(prefixRequired);
2550
			relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE);
2559
			relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE);
2560
			if (onlyStaticFields && this.insideQualifiedReference) {
2561
				relevance += computeRelevanceForInheritance(receiverType, field.declaringClass);
2562
			}
2551
			
2563
			
2552
			this.noProposal = false;
2564
			this.noProposal = false;
2553
			// Standard proposal
2565
			// Standard proposal
Lines 3139-3145 Link Here
3139
3151
3140
	// what about onDemand types? Ignore them since it does not happen!
3152
	// what about onDemand types? Ignore them since it does not happen!
3141
	// import p1.p2.A.*;
3153
	// import p1.p2.A.*;
3142
	private void findKeywords(char[] keyword, char[][] choices, boolean canCompleteEmptyToken) {
3154
	private void findKeywords(char[] keyword, char[][] choices, boolean canCompleteEmptyToken, boolean staticFieldsAndMethodOnly) {
3143
		if(choices == null || choices.length == 0) return;
3155
		if(choices == null || choices.length == 0) return;
3144
		
3156
		
3145
		int length = keyword.length;
3157
		int length = keyword.length;
Lines 3152-3157 Link Here
3152
					relevance += computeRelevanceForInterestingProposal();
3164
					relevance += computeRelevanceForInterestingProposal();
3153
					relevance += computeRelevanceForCaseMatching(keyword, choices[i]);
3165
					relevance += computeRelevanceForCaseMatching(keyword, choices[i]);
3154
					relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); // no access restriction for keywors
3166
					relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); // no access restriction for keywors
3167
					if (staticFieldsAndMethodOnly && this.insideQualifiedReference) relevance += R_NON_INHERITED;
3155
					
3168
					
3156
					if(CharOperation.equals(choices[i], Keywords.TRUE) || CharOperation.equals(choices[i], Keywords.FALSE)) {
3169
					if(CharOperation.equals(choices[i], Keywords.TRUE) || CharOperation.equals(choices[i], Keywords.FALSE)) {
3157
						relevance += computeRelevanceForExpectingType(TypeBinding.BOOLEAN);
3170
						relevance += computeRelevanceForExpectingType(TypeBinding.BOOLEAN);
Lines 3291-3297 Link Here
3291
		}
3304
		}
3292
		System.arraycopy(keywords, 0, keywords = new char[count][], 0, count);
3305
		System.arraycopy(keywords, 0, keywords = new char[count][], 0, count);
3293
		
3306
		
3294
		findKeywords(token, keywords, false);
3307
		findKeywords(token, keywords, false, false);
3295
	}
3308
	}
3296
3309
3297
	// Helper method for findMemberTypes(char[], ReferenceBinding, Scope)
3310
	// Helper method for findMemberTypes(char[], ReferenceBinding, Scope)
Lines 3302-3307 Link Here
3302
		ReferenceBinding receiverType,
3315
		ReferenceBinding receiverType,
3303
		SourceTypeBinding invocationType,
3316
		SourceTypeBinding invocationType,
3304
		boolean staticOnly,
3317
		boolean staticOnly,
3318
		boolean staticFieldsAndMethodOnly,
3305
		boolean fromStaticImport,
3319
		boolean fromStaticImport,
3306
		boolean checkQualification,
3320
		boolean checkQualification,
3307
		Scope scope) {
3321
		Scope scope) {
Lines 3404-3409 Link Here
3404
			if(!insideQualifiedReference) {
3418
			if(!insideQualifiedReference) {
3405
				relevance += computeRelevanceForQualification(isQualified);
3419
				relevance += computeRelevanceForQualification(isQualified);
3406
			}
3420
			}
3421
			if (staticFieldsAndMethodOnly && this.insideQualifiedReference) relevance += R_NON_INHERITED; // This criterion doesn't concern types and is added to be balanced with field and method relevance.
3407
3422
3408
			if (memberType.isClass()) {
3423
			if (memberType.isClass()) {
3409
				relevance += computeRelevanceForClass();
3424
				relevance += computeRelevanceForClass();
Lines 3427-3432 Link Here
3427
		Scope scope,
3442
		Scope scope,
3428
		SourceTypeBinding typeInvocation,
3443
		SourceTypeBinding typeInvocation,
3429
		boolean staticOnly,
3444
		boolean staticOnly,
3445
		boolean staticFieldsAndMethodOnly,
3430
		ObjectVector typesFound)  {
3446
		ObjectVector typesFound)  {
3431
		findMemberTypes(
3447
		findMemberTypes(
3432
				typeName,
3448
				typeName,
Lines 3434-3439 Link Here
3434
				scope,
3450
				scope,
3435
				typeInvocation,
3451
				typeInvocation,
3436
				staticOnly,
3452
				staticOnly,
3453
				staticFieldsAndMethodOnly,
3437
				false,
3454
				false,
3438
				false,
3455
				false,
3439
				false,
3456
				false,
Lines 3446-3451 Link Here
3446
		Scope scope,
3463
		Scope scope,
3447
		SourceTypeBinding typeInvocation,
3464
		SourceTypeBinding typeInvocation,
3448
		boolean staticOnly,
3465
		boolean staticOnly,
3466
		boolean staticFieldsAndMethodOnly,
3449
		boolean fromStaticImport,
3467
		boolean fromStaticImport,
3450
		boolean checkQualification,
3468
		boolean checkQualification,
3451
		boolean proposeAllMemberTypes,
3469
		boolean proposeAllMemberTypes,
Lines 3469-3474 Link Here
3469
				receiverType,
3487
				receiverType,
3470
				typeInvocation,
3488
				typeInvocation,
3471
				staticOnly,
3489
				staticOnly,
3490
				staticFieldsAndMethodOnly,
3472
				fromStaticImport,
3491
				fromStaticImport,
3473
				checkQualification,
3492
				checkQualification,
3474
				scope);
3493
				scope);
Lines 3504-3509 Link Here
3504
				receiverType,
3523
				receiverType,
3505
				typeInvocation,
3524
				typeInvocation,
3506
				staticOnly,
3525
				staticOnly,
3526
				staticFieldsAndMethodOnly,
3507
				fromStaticImport,
3527
				fromStaticImport,
3508
				checkQualification,
3528
				checkQualification,
3509
				scope);
3529
				scope);
Lines 3521-3526 Link Here
3521
						scope,
3541
						scope,
3522
						typeInvocation,
3542
						typeInvocation,
3523
						staticOnly,
3543
						staticOnly,
3544
						staticFieldsAndMethodOnly,
3524
						fromStaticImport,
3545
						fromStaticImport,
3525
						typesFound);
3546
						typesFound);
3526
				}
3547
				}
Lines 3537-3542 Link Here
3537
					receiverType,
3558
					receiverType,
3538
					typeInvocation,
3559
					typeInvocation,
3539
					staticOnly,
3560
					staticOnly,
3561
					staticFieldsAndMethodOnly,
3540
					fromStaticImport,
3562
					fromStaticImport,
3541
					checkQualification,
3563
					checkQualification,
3542
					scope);
3564
					scope);
Lines 3600-3605 Link Here
3600
		Scope scope,
3622
		Scope scope,
3601
		SourceTypeBinding typeInvocation,
3623
		SourceTypeBinding typeInvocation,
3602
		boolean staticOnly,
3624
		boolean staticOnly,
3625
		boolean staticFieldsAndMethodOnly,
3603
		boolean fromStaticImport,
3626
		boolean fromStaticImport,
3604
		ObjectVector typesFound) {
3627
		ObjectVector typesFound) {
3605
3628
Lines 3617-3622 Link Here
3617
				receiverType,
3640
				receiverType,
3618
				typeInvocation,
3641
				typeInvocation,
3619
				staticOnly,
3642
				staticOnly,
3643
				staticFieldsAndMethodOnly,
3620
				fromStaticImport,
3644
				fromStaticImport,
3621
				true,
3645
				true,
3622
				scope);
3646
				scope);
Lines 3636-3641 Link Here
3636
				scope,
3660
				scope,
3637
				typeInvocation,
3661
				typeInvocation,
3638
				staticOnly,
3662
				staticOnly,
3663
				staticFieldsAndMethodOnly,
3639
				fromStaticImport,
3664
				fromStaticImport,
3640
				typesFound);
3665
				typesFound);
3641
		}
3666
		}
Lines 3981-3986 Link Here
3981
			relevance += computeRelevanceForStatic(onlyStaticMethods, method.isStatic());
4006
			relevance += computeRelevanceForStatic(onlyStaticMethods, method.isStatic());
3982
			relevance += computeRelevanceForQualification(prefixRequired);
4007
			relevance += computeRelevanceForQualification(prefixRequired);
3983
			relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE);
4008
			relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE);
4009
			if (onlyStaticMethods && this.insideQualifiedReference) {
4010
				relevance += computeRelevanceForInheritance(receiverType, method.declaringClass);
4011
			}
3984
			
4012
			
3985
			this.noProposal = false;
4013
			this.noProposal = false;
3986
			// Standard proposal
4014
			// Standard proposal
Lines 4247-4252 Link Here
4247
		} 
4275
		} 
4248
		return 0;
4276
		return 0;
4249
	}
4277
	}
4278
	
4279
	private int computeRelevanceForInheritance(ReferenceBinding receiverType, ReferenceBinding declaringClass) {
4280
		if (receiverType == declaringClass) return R_NON_INHERITED;
4281
		return 0;
4282
	}
4283
	
4250
	int computeRelevanceForInterestingProposal(){
4284
	int computeRelevanceForInterestingProposal(){
4251
		return computeRelevanceForInterestingProposal(null);
4285
		return computeRelevanceForInterestingProposal(null);
4252
	}
4286
	}
Lines 4891-4897 Link Here
4891
4925
4892
				case Scope.CLASS_SCOPE :
4926
				case Scope.CLASS_SCOPE :
4893
					SourceTypeBinding enclosingSourceType = scope.enclosingSourceType();
4927
					SourceTypeBinding enclosingSourceType = scope.enclosingSourceType();
4894
					findMemberTypes(typeName, enclosingSourceType, scope, currentType, false, false, false, proposeAllMemberTypes, nextTypeToIgnore, typesFound);
4928
					findMemberTypes(typeName, enclosingSourceType, scope, currentType, false, false, false, false, proposeAllMemberTypes, nextTypeToIgnore, typesFound);
4895
					nextTypeToIgnore = enclosingSourceType;
4929
					nextTypeToIgnore = enclosingSourceType;
4896
					if (typeLength == 0)
4930
					if (typeLength == 0)
4897
						return; // do not search outside the class scope if no prefix was provided
4931
						return; // do not search outside the class scope if no prefix was provided
Lines 5065-5070 Link Here
5065
							scope.enclosingSourceType(),
5099
							scope.enclosingSourceType(),
5066
							false,
5100
							false,
5067
							false,
5101
							false,
5102
							false,
5068
							typesFound);
5103
							typesFound);
5069
				}
5104
				}
5070
				
5105
				
Lines 5219-5225 Link Here
5219
		} else {
5254
		} else {
5220
			if(!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
5255
			if(!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
5221
				if (this.assistNodeInJavadoc == 0 || (this.assistNodeInJavadoc & CompletionOnJavadoc.BASE_TYPES) != 0) {
5256
				if (this.assistNodeInJavadoc == 0 || (this.assistNodeInJavadoc & CompletionOnJavadoc.BASE_TYPES) != 0) {
5222
					findKeywords(token, BASE_TYPE_NAMES, false);
5257
					findKeywords(token, BASE_TYPE_NAMES, false, false);
5223
				}
5258
				}
5224
			}
5259
			}
5225
			if(proposeType) {
5260
			if(proposeType) {
Lines 5365-5370 Link Here
5365
									scope,
5400
									scope,
5366
									scope.enclosingSourceType(),
5401
									scope.enclosingSourceType(),
5367
									true,
5402
									true,
5403
									false,
5368
									true,
5404
									true,
5369
									true,
5405
									true,
5370
									proposeAllMemberTypes,
5406
									proposeAllMemberTypes,

Return to bug 128073