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"; }
 }