private BoundExpression BindBinaryExpression(BinaryExpressionSyntax syntax) { var boundLeft = BindExpression(syntax.Left); var boundRight = BindExpression(syntax.Right); var boundOperator = BoundBinaryOperator.Bind(syntax.OperatorToken.Kind, boundLeft.Type, boundRight.Type); if (boundOperator == null) { _diagnostics.ReportUndefinedBinaryOperator(syntax.OperatorToken.Span, syntax.OperatorToken.Text, boundLeft.Type, boundRight.Type); return(boundLeft); } return(new BoundBinaryExpression(boundLeft, boundOperator, boundRight)); }
private BoundExpression BindBinaryExpression(BinaryExpressionSyntax syntax) { var boundLeft = BindExpression(syntax.Left); var boundRight = BindExpression(syntax.Right); var boundOperator = BoundBinaryOperator.Bind(syntax.OperatorToken.Kind, boundLeft.Type, boundRight.Type); if (boundOperator == null) { _diagnostics.Add($"Binary operator '{syntax.OperatorToken.Text}' is not defined for types {boundLeft.Type} and {boundRight.Type}."); return(boundLeft); } return(new BoundBinaryExpression(boundLeft, boundOperator, boundRight)); }
public static BoundBinaryExpression Binary(SyntaxNode syntax, BoundExpression left, SyntaxKind kind, BoundExpression right) { var op = BoundBinaryOperator.Bind(kind, left.Type, right.Type) !; return(Binary(syntax, left, op, right)); }