001 package escjava.translate; 002 003 import javafe.ast.*; 004 005 public class RepHelper { 006 007 public TypeDecl td; 008 public ASTNode a; 009 010 public RepHelper(TypeDecl td, FieldDecl fd) { 011 this.td = td; 012 this.a = fd; 013 } 014 015 public RepHelper(TypeDecl td, RoutineDecl rd) { 016 this.td = td; 017 this.a = rd; 018 } 019 020 public RepHelper(/*@ non_null @*/ FieldAccess fa) { 021 this.a = fa.decl; 022 ObjectDesignator od = fa.od; 023 Type t = null; 024 if (od instanceof ExprObjectDesignator) { 025 t = javafe.tc.FlowInsensitiveChecks.getType( 026 ((ExprObjectDesignator)od).expr ); 027 } else if (od instanceof TypeObjectDesignator) { 028 t = ((TypeObjectDesignator)od).type; 029 } 030 if (t instanceof javafe.tc.TypeSig) 031 this.td = ((javafe.tc.TypeSig)t).getTypeDecl(); 032 } 033 034 public boolean equals(Object o) { 035 if (!(o instanceof RepHelper)) return false; 036 RepHelper r = (RepHelper)o; 037 return td == r.td && a == r.a; 038 } 039 040 public int hashCode() { 041 return (td==null?0:td.hashCode()) + (a==null?0:a.hashCode()); 042 } 043 }