diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs index f2a9b22be94..316e23e0133 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs @@ -14,7 +14,7 @@ protected readonly struct DiffEdit public int? NewTextPosition { get; } public int Length { get; } - public DiffEdit(DiffEditKind kind, int position, int? newTextPosition, int length) + private DiffEdit(DiffEditKind kind, int position, int? newTextPosition, int length) { Kind = kind; Position = position; @@ -46,5 +46,8 @@ public static DiffEdit Insert(int position, int newTextPosition, int length = 1) public static DiffEdit Delete(int position, int length = 1) => new(DiffEditKind.Delete, position, newTextPosition: null, length); + + public DiffEdit Offset(int positionOffset, int newTextPositionOffset) + => new(Kind, positionOffset + Position, newTextPositionOffset + NewTextPosition, Length); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs index 0af958a41c7..aa183f55c0f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs @@ -54,9 +54,7 @@ protected List ComputeDiff() // Update the resultant edits with the appropriate offsets for (var i = 0; i < edits.Count; i++) { - var edit = edits[i]; - - edits[i] = new DiffEdit(edit.Kind, _oldSourceOffset + edit.Position, _newSourceOffset + edit.NewTextPosition, edit.Length); + edits[i] = edits[i].Offset(_oldSourceOffset, _newSourceOffset); } return edits;