public virtual Differences VisitLabeledStatement(LabeledStatement lStatement1, LabeledStatement lStatement2){ Differences differences = new Differences(lStatement1, lStatement2); if (lStatement1 == null || lStatement2 == null){ if (lStatement1 != lStatement2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++; return differences; } LabeledStatement changes = (LabeledStatement)lStatement2.Clone(); LabeledStatement deletions = (LabeledStatement)lStatement2.Clone(); LabeledStatement insertions = (LabeledStatement)lStatement2.Clone(); Differences diff = this.VisitIdentifier(lStatement1.Label, lStatement2.Label); if (diff == null){Debug.Assert(false); return differences;} changes.Label = diff.Changes as Identifier; deletions.Label = diff.Deletions as Identifier; insertions.Label = diff.Insertions as Identifier; Debug.Assert(diff.Changes == changes.Label && diff.Deletions == deletions.Label && diff.Insertions == insertions.Label); differences.NumberOfDifferences += diff.NumberOfDifferences; differences.NumberOfSimilarities += diff.NumberOfSimilarities; diff = this.VisitStatement(lStatement1.Statement, lStatement2.Statement); if (diff == null){Debug.Assert(false); return differences;} changes.Statement = diff.Changes as Statement; deletions.Statement = diff.Deletions as Statement; insertions.Statement = diff.Insertions as Statement; Debug.Assert(diff.Changes == changes.Statement && diff.Deletions == deletions.Statement && diff.Insertions == insertions.Statement); 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 VisitLabeledStatement(LabeledStatement lStatement) { if (lStatement == null) return null; return base.VisitLabeledStatement((LabeledStatement)lStatement.Clone()); }