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
edit.addChild(new InsertEdit(expr.getStartPosition(), String.valueOf('(')));
					edit.addChild(new InsertEdit(ASTNodes.getExclusiveEnd(left), String.valueOf(')')));
				}
				ASTNode rigth= visitor.compareExpression.getRightOperand();
				int selEnd= ASTNodes.getExclusiveEnd(expr);
				if (selEnd > ASTNodes.getExclusiveEnd(rigth)) {
					edit.addChild(new InsertEdit(rigth.getStartPosition(), String.valueOf('(')));
					edit.addChild(new InsertEdit(selEnd, String.valueOf(')')));
				}
			}
		}
	}
	
	private static boolean isBitOperation(InfixExpression.Operator op) {
		return op == InfixExpression.Operator.AND || op == InfixExpression.Operator.OR || op == InfixExpression.Operator.XOR;
	}
	private static class CompareInBitWiseOpFinder extends ASTVisitor{
		public InfixExpression compareExpression= null;
		
		public boolean visit(InfixExpression e) {
			InfixExpression.Operator op= e.getOperator();
			if (isBitOperation(op)) {
				return true;
			} else if (op == InfixExpression.Operator.EQUALS || op == InfixExpression.Operator.NOT_EQUALS) {
				compareExpression= e;
				return false;
			}
			return false;
		}
	}