public override IEnumerable <IModel> VisitBinaryExpression(BinaryExpressionSyntax node)
        {
            BinaryExpressionBase model = null;

            switch (node.Kind)
            {
            case SyntaxKind.AddAssignExpression:
            case SyntaxKind.AndAssignExpression:
            case SyntaxKind.AssignExpression:
            case SyntaxKind.DivideAssignExpression:
            case SyntaxKind.ExclusiveOrAssignExpression:
            case SyntaxKind.LeftShiftAssignExpression:
            case SyntaxKind.ModuloAssignExpression:
            case SyntaxKind.MultiplyAssignExpression:
            case SyntaxKind.OrAssignExpression:
            case SyntaxKind.RightShiftAssignExpression:
            case SyntaxKind.SubtractAssignExpression:
                var assignment   = Create <AssignmentExpression>(node);
                var lastLeftNode = node.Left.DescendantNodesAndSelf().OfType <IdentifierNameSyntax>().Last();
                assignment.Assignee = TransformToSingle <IdentifierName>(lastLeftNode);
                model = assignment;
                break;

            case SyntaxKind.AsExpression:
                model = Create <AsTypeExpression>(node);
                break;

            case SyntaxKind.IsExpression:
                model = Create <IsTypeExpression>(node);
                break;

            default:
                model = Create <BinaryExpression>(node);
                break;
            }

            model.LeftExpression  = TransformToSingle <ExpressionModel>(node.Left);
            model.RightExpression = TransformToSingle <ExpressionModel>(node.Right);
            model.Operator        = node.OperatorToken.ValueText;

            yield return(model);
        }
Example #2
0
 public void TestEvaluateAggregatesWithNullResultSelector()
 {
     Assert.That(
         () => BinaryExpressionBase.EvaluateAggregates(null, Mock.Of <IExpression>(), new Dictionary <string, object>(), null),
         Throws.ArgumentNullException);
 }