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
try {
			return JavaModelUtil.findType(project, typeName);
		} catch (JavaModelException e) {
			JavaPlugin.log(e);
		}
		return null;
	}
	private Image getImageForType(IType type) {
		String imageName= JavaPluginImages.IMG_OBJS_CLASS; 
		if (type != null) {
			try {
				if (type.isAnnotation()) {
					imageName= JavaPluginImages.IMG_OBJS_ANNOTATION;
				} else if (type.isInterface()) {
					imageName= JavaPluginImages.IMG_OBJS_INTERFACE;
				}
			} catch (JavaModelException e) {
				JavaPlugin.log(e);
			}
		}
		return JavaPluginImages.get(imageName);
	}
	protected boolean updateReplacementString(IDocument document, char trigger, int offset, ImportsStructure impStructure) throws CoreException, BadLocationException {
		String replacementString= getReplacementString();
		
		StringBuffer buf= new StringBuffer("new A("); 
		buf.append(replacementString);
		if (!replacementString.endsWith(")")) { 
			buf.append(')');
		}