Test & fix for Bug 315373 - [assist] completion proposes callout override with nothing to override
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/model/org/eclipse/objectteams/otdt/tests/model/OTCompletionTests.java b/testplugins/org.eclipse.objectteams.otdt.tests/model/org/eclipse/objectteams/otdt/tests/model/OTCompletionTests.java
index 619f967..c1fcbeb 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/model/org/eclipse/objectteams/otdt/tests/model/OTCompletionTests.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/model/org/eclipse/objectteams/otdt/tests/model/OTCompletionTests.java
@@ -447,7 +447,7 @@
this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "toString[METHOD_SPEC]{String toString();, Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+
+ "toString[METHOD_SPEC]{String toString();, LCompletionBaseclass;, ()Ljava.lang.String;, toString, null, "+
(R_DEFAULT+R_RESOLVED+R_INTERESTING+R_EXACT_EXPECTED_TYPE+R_CASE+R_UNQUALIFIED+R_NON_RESTRICTED)+"}",
requestor.getResults());
}
@@ -469,7 +469,7 @@
this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "toString[METHOD_SPEC]{toString();, Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+
+ "toString[METHOD_SPEC]{toString();, LCompletionBaseclass;, ()Ljava.lang.String;, toString, null, "+
(R_DEFAULT+R_RESOLVED+R_INTERESTING+R_CASE+R_UNQUALIFIED+R_NON_RESTRICTED)+"}",
requestor.getResults());
}
@@ -577,7 +577,7 @@
this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "toString[METHOD_SPEC]{toString;, Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+
+ "toString[METHOD_SPEC]{toString;, LCompletionBaseclass;, ()Ljava.lang.String;, toString, null, "+
(R_DEFAULT+R_RESOLVED+R_INTERESTING+R_CASE+R_UNQUALIFIED+R_NON_RESTRICTED)+"}",
requestor.getResults());
}
@@ -628,6 +628,35 @@
(R_DEFAULT+R_RESOLVED+R_INTERESTING+R_CASE+R_UNQUALIFIED+R_NON_RESTRICTED)+"}",
requestor.getResults());
}
+// same as above but without a typed prefix
+public void testCompletionCalloutDeclaration1a() throws JavaModelException {
+ this.wc = getWorkingCopy(
+ "/Completion/src/CompletionTeam1.java",
+ "public team class CompletionTeam1 {\n" +
+ "public class CompletionRole playedBy CompletionBaseclass {\n" +
+ "/*here*/ \n"+
+ "}");
+
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ String str = this.wc.getSource();
+ String completeBehind = "/*here*/ ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
+
+ String[] results = requestor.getStringsResult();
+ assertTrue("Expect more than one proposal", results.length > 1);
+ for (int i = 0; i < results.length; i++) {
+ if (results[i].startsWith("fubar")) {
+ assertEquals("Expected proposal",
+ "fubar[CALLOUT_DECLARATION]{long fubar(int fred, String zork) -> long fubar(int fred, String zork);, LCompletionBaseclass;, (ILjava.lang.String;)J, fubar, (fred, zork), " +
+ (R_DEFAULT+R_RESOLVED+R_INTERESTING+R_CASE+R_UNQUALIFIED+R_NON_RESTRICTED)+"}",
+ results[i]);
+ return; // enough seen
+ }
+ }
+ fail("Expected proposal not found");
+}
// callout-override
public void testCompletionCalloutDeclaration2() throws JavaModelException {
this.wc = getWorkingCopy(
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/workspace/Completion/src/CompletionBaseclass.java b/testplugins/org.eclipse.objectteams.otdt.tests/workspace/Completion/src/CompletionBaseclass.java
index 1d1b4b2..5385420 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/workspace/Completion/src/CompletionBaseclass.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/workspace/Completion/src/CompletionBaseclass.java
@@ -5,4 +5,5 @@
public boolean check() { return true; }
private int fred;
private String frood;
+ public String toString() { return "Base"; }
}