public void Visit(Equal eq)
 {
     eq.Left.Accept(this);
     _sb.Append("==");
     _noTypeFlag = true;
     Debug.Assert(eq.Left.SmclType.Equals(eq.Right.SmclType));
     if (!_noTypeFlag)
         _sb.Append(eq.Left.SmclType).Append(' ');
     eq.Right.Accept(this);
     _noTypeFlag = false;
 }
 public void Visit(Equal eq)
 {
     eq.Left.Accept(this);
     _sb.Append("==");
     //if (eq.SmclType != null) {
         Debug.Assert(eq.Left.SmclType.Equals(eq.Right.SmclType));
         _sb.Append(eq.Left.SmclType).Append(' ');
     //}
     eq.Right.Accept(this);
 }
 public void Visit(Equal eq)
 {
     eq.Left.Accept(this);
     eq.Right.Accept(this);
     if (!eq.Left.SmclType.Equals(eq.Right.SmclType))
         throw new TypeCheckingException("Both operands of == must have the same type");
     eq.SmclType = BoolType;
 }