public ResolveResult ResolveAssignment(AssignmentOperatorType op, ResolveResult lhs, ResolveResult rhs)
{
var linqOp = AssignmentExpression.GetLinqNodeType(op, this.CheckForOverflow);
var bop = AssignmentExpression.GetCorrespondingBinaryOperator(op);
if (bop == null) {
return new OperatorResolveResult(lhs.Type, linqOp, lhs, this.Convert(rhs, lhs.Type));
}
ResolveResult bopResult = ResolveBinaryOperator(bop.Value, lhs, rhs);
OperatorResolveResult opResult = bopResult as OperatorResolveResult;
if (opResult == null || opResult.Operands.Count != 2)
return bopResult;
return new OperatorResolveResult(lhs.Type, linqOp, opResult.UserDefinedOperatorMethod, opResult.IsLiftedOperator,
new [] { lhs, opResult.Operands[1] });
}
#endregion