Bug 88313 [quick fix] Quickfix for qualifying field and inheritance
I'm using I20050219-1500. I have a Java project with the following two files: A.java 1 package xyz; 2 3 public class A 4 { 5 protected Object someObject = new Object(); 6 } B.java 1 package xyz; 2 3 public class B extends A 4 { 5 public void someCode() { 6 Object obj = new Object() { 7 public String toString() { 8 return someObject.getClass().getName(); 9 } 10 }; 11 } 12 } and the compiler settings are such that I get a warning for 'Unqualified access to instance field'. Now I get a warning and a quickfix to 'Qualify with A.this' at line 8. I trigger the quickfix and the result is 8 return A.this.someObject.getClass().getName(); which gives a compiler error ('No enclosing instance').
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
CUCorrectionProposal nlsProposal= new CUCorrectionProposal(label, cu, 6, image);
			nlsProposal.getTextChange().getEdit().addChild(edit);
			proposals.add(nlsProposal);
		}
	}
	
	/*
	 * Fix instance accesses and indirect (static) accesses to static fields/methods
	 */
	public static void addCorrectAccessToStaticProposals(IInvocationContext context, IProblemLocation problem, Collection proposals) throws CoreException {
		ICompilationUnit cu= context.getCompilationUnit();
		CompilationUnit astRoot= context.getASTRoot();
		ASTNode selectedNode= problem.getCoveringNode(astRoot);
		if (selectedNode == null) {
			return;
		} 
		
		String[] args= problem.getProblemArguments();
		if (selectedNode instanceof QualifiedName && args.length == 2) {
			String field= args[1];
			QualifiedName qualified= (QualifiedName) selectedNode;
			while (!field.equals(qualified.getName().getIdentifier()) && qualified.getQualifier() instanceof QualifiedName) {
				qualified= (QualifiedName) qualified.getQualifier();
			}
			selectedNode= qualified;
			problem= new ProblemLocation(qualified.getStartPosition(), qualified.getLength(), problem.getProblemId(), args, problem.isError());
		}
		
		
		Expression qualifier= null;