protected override EvaluationResult EvaluateImpl(SyntaxNode node)
{
var declarationSyntax = (TypeDeclarationSyntax)node;
var addAssignments = declarationSyntax
.DescendantNodes()
.Where(x => x.Kind() == SyntaxKind.AddAssignmentExpression)
.Cast<AssignmentExpressionSyntax>()
.AsArray();
var subtractAssignments = declarationSyntax.DescendantNodes()
.Where(x => x.Kind() == SyntaxKind.SubtractAssignmentExpression)
.Cast<AssignmentExpressionSyntax>()
.AsArray();
var assignmentExpressionSyntaxes = addAssignments.DistinctBy(x => x.ToFullString()).AsArray();
if (assignmentExpressionSyntaxes.Count() != subtractAssignments.DistinctBy(x => x.ToFullString()).Count())
{
var unmatched = assignmentExpressionSyntaxes.Where(x => !MatchingAssignmentExpressionExists(x, subtractAssignments));
var snippet = string.Join(Environment.NewLine, unmatched.Select(x => x.ToFullString()));
return new EvaluationResult
{
Snippet = snippet
};
}
return null;
}