//Operation changes the operand type public SemanticBinaryOperator(TokenType tokenType, SemanticBinaryOperatorKind kind, Type leftType, Type rightType, Type type) { RightType = rightType; TokenType = tokenType; Kind = kind; LeftType = leftType; Type = type; }
private SemanticBinaryOperator(TokenType tokenType, SemanticBinaryOperatorKind kind, Type operandType, Type resultType) : this(tokenType, kind, operandType, operandType, resultType) { }
//Operation doesn't change the operand type private SemanticBinaryOperator(TokenType tokenType, SemanticBinaryOperatorKind kind, Type type) : this(tokenType, kind, type, type, type) { }