Bug 98344 smart completion for anonymous inner type of abstract inner class missing methods
I'm using Eclipse 3.1 RC1. First I input the following class into Eclipse: public class Test { abstract class Foo { abstract void doSomething(); } void bar() { Foo f = new Foo(); } } The class does not compile because Foo is abstract. If I put the cursor between the parens of the Foo() constructor call and hit CTRL+SPACE, it brings up an "Override/Implement Methods" dialog box, but in that dialog box I only see the methods for java.lang.Object, not the expected Foo.doSomething() method. If Foo is a separate top-level class and not an inner class, the Foo.doSomething() method shows up in the dialog as expected. It also works if I add an open and close curly brace before the semicolon, and then go to the Source menu and choose Override/Implement Methods.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AnonymousTypeCompletionProposal.java
MethodDeclaration stub= null;
					for (int index= 0; index < keys.length; index++) {
						key= keys[index];
						for (int offset= 0; offset < bindings.length; offset++) {
							if (key.equals(bindings[offset].getKey())) {
								stub= StubUtility2.createImplementationStub(workingCopy, rewrite, structure, bindings[offset], binding.getName(), binding.isInterface(), settings);
								if (stub != null)
									rewriter.insertFirst(stub, null);
								break;
							}
						}
					}
					IDocument document= new Document(workingCopy.getBuffer().getContents());
					try {
						rewrite.rewriteAST(document, fCompilationUnit.getJavaProject().getOptions(true)).apply(document, TextEdit.UPDATE_REGIONS);
						buf.append(document.get(start, document.getLength() - start));
					} catch (MalformedTreeException exception) {
						JavaPlugin.log(exception);
					} catch (BadLocationException exception) {
						JavaPlugin.log(exception);
					}
				}
			}
			return true;
		} finally {
			if (workingCopy != null)
				workingCopy.discardWorkingCopy();
		}
	}
	private IType getDeclaringType(IJavaProject project, String typeName) {