public virtual Differences VisitAssertion(Assertion assertion1, Assertion assertion2){ Differences differences = new Differences(assertion1, assertion2); if (assertion1 == null || assertion2 == null){ if (assertion1 != assertion2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++; return differences; } Assertion changes = (Assertion)assertion2.Clone(); Assertion deletions = (Assertion)assertion2.Clone(); Assertion insertions = (Assertion)assertion2.Clone(); Differences diff = this.VisitExpression(assertion1.Condition, assertion2.Condition); if (diff == null){Debug.Assert(false); return differences;} changes.Condition = diff.Changes as Expression; deletions.Condition = diff.Deletions as Expression; insertions.Condition = diff.Insertions as Expression; Debug.Assert(diff.Changes == changes.Condition && diff.Deletions == deletions.Condition && diff.Insertions == insertions.Condition); differences.NumberOfDifferences += diff.NumberOfDifferences; differences.NumberOfSimilarities += diff.NumberOfSimilarities; if (differences.NumberOfDifferences == 0){ differences.Changes = null; differences.Deletions = null; differences.Insertions = null; }else{ differences.Changes = changes; differences.Deletions = deletions; differences.Insertions = insertions; } return differences; }
public override Statement VisitAssertion(Assertion assertion) { if (assertion == null) return null; return base.VisitAssertion((Assertion)assertion.Clone()); }