private EXPR BindBinaryOperation(
CSharpBinaryOperationBinder payload,
ArgumentObject[] arguments,
Dictionary<int, LocalVariableSymbol> dictionary)
{
if (arguments.Length != 2)
{
throw Error.BindBinaryOperatorRequireTwoArguments();
}
ExpressionKind ek = Operators.GetExpressionKind(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));
EXPR arg1 = CreateArgumentEXPR(arguments[0], dictionary[0]);
EXPR arg2 = CreateArgumentEXPR(arguments[1], dictionary[1]);
arg1.errorString = Operators.GetDisplayName(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));
arg2.errorString = Operators.GetDisplayName(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));
if (ek > ExpressionKind.EK_MULTIOFFSET)
{
ek = (ExpressionKind)(ek - ExpressionKind.EK_MULTIOFFSET);
}
return _binder.BindStandardBinop(ek, arg1, arg2);
}
#endregion