public bool Equals(Struct other) { if (kind == Kinds.Arr) { return(other.kind == Kinds.Arr && elemType.Equals(other.elemType)); } return(this == other); // must be same type node }
public bool Equals(Symbol sym) { if (kind != sym.kind || name != sym.name || !type.Equals(sym.type)) { return(false); } switch (kind) { case Kinds.Const: return(val == sym.val); case Kinds.Arg: case Kinds.Local: return(adr == sym.adr); case Kinds.Meth: return(nArgs == sym.nArgs && nLocs == sym.nLocs && EqualsCompleteList(locals, sym.locals)); } return(true); }