| 1 19 20 package jode.expr; 21 import jode.type.Type; 22 import jode.type.NullType; 23 import jode.type.ClassInterfacesType; 24 import jode.bytecode.FieldInfo; 25 import jode.bytecode.ClassInfo; 26 import jode.bytecode.Reference; 27 import jode.decompiler.MethodAnalyzer; 28 import jode.decompiler.ClassAnalyzer; 29 import jode.decompiler.MethodAnalyzer; 30 import jode.decompiler.FieldAnalyzer; 31 import jode.decompiler.TabbedPrintWriter; 32 import jode.decompiler.Scope; 33 34 public class GetFieldOperator extends FieldOperator { 35 public GetFieldOperator(MethodAnalyzer methodAnalyzer, boolean staticFlag, 36 Reference ref) { 37 super(methodAnalyzer, staticFlag, ref); 38 } 39 40 public Expression simplify() { 41 if (!staticFlag) { 42 subExpressions[0] = subExpressions[0].simplify(); 43 subExpressions[0].parent = this; 44 if (subExpressions[0] instanceof ThisOperator) { 45 FieldAnalyzer field = getField(); 46 51 if (field != null && field.isSynthetic()) { 52 Expression constant = field.getConstant(); 53 if (constant instanceof ThisOperator 54 || constant instanceof OuterLocalOperator) 55 return constant; 56 } 57 } 58 } 59 return this; 60 } 61 62 public boolean opEquals(Operator o) { 63 return o instanceof GetFieldOperator 64 && ((GetFieldOperator)o).ref.equals(ref); 65 } 66 } 67 | Popular Tags |