### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java,v retrieving revision 1.421 diff -u -r1.421 CompletionEngine.java --- codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java 5 Nov 2010 13:40:19 -0000 1.421 +++ codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java 23 Nov 2010 10:15:54 -0000 @@ -5980,10 +5980,23 @@ for (int f = fields.length; --f >=0;) { FieldBinding field = fields[f]; FieldDeclaration fieldDeclaration = field.sourceField(); - if (fieldDeclaration != null && fieldDeclaration.initialization != null) { - // We're asking for a proposal inside this field's initialization. So record its id - fieldBeingCompletedId = field.id; - break; + // We maybe asking for a proposal inside this field's initialization. So record its id + ASTNode astNode = this.parser.assistNode; + if(fieldDeclaration != null && fieldDeclaration.initialization != null && astNode != null) { + if (fieldDeclaration.initialization.sourceEnd > 0) { + if (fieldDeclaration.initialization.sourceStart <= astNode.sourceStart && + astNode.sourceEnd <= fieldDeclaration.initialization.sourceEnd) { + // completion is inside a field initializer + fieldBeingCompletedId = field.id; + break; + } + } else { // The sourceEnd may not yet be set + CompletionNodeDetector detector = new CompletionNodeDetector(astNode, fieldDeclaration.initialization); + if (detector.containsCompletionNode()) { // completion is inside a field initializer + fieldBeingCompletedId = field.id; + break; + } + } } } // Inherited fields which are hidden by subclasses are filtered out