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; }