areFileEditsInputsEquivalent function

bool areFileEditsInputsEquivalent(
  1. String filePath1,
  2. List<FileEdit> edits1,
  3. String filePath2,
  4. List<FileEdit> edits2,
)

Check if two file edit inputs are equivalent.

Implementation

bool areFileEditsInputsEquivalent(
  String filePath1,
  List<FileEdit> edits1,
  String filePath2,
  List<FileEdit> edits2,
) {
  if (filePath1 != filePath2) return false;

  // Fast path: literal equality
  if (edits1.length == edits2.length) {
    var allMatch = true;
    for (var i = 0; i < edits1.length; i++) {
      if (edits1[i].oldString != edits2[i].oldString ||
          edits1[i].newString != edits2[i].newString ||
          edits1[i].replaceAll != edits2[i].replaceAll) {
        allMatch = false;
        break;
      }
    }
    if (allMatch) return true;
  }

  // Semantic comparison (requires file read)
  var fileContent = '';
  try {
    fileContent = File(filePath1).readAsStringSync();
  } catch (_) {}

  return areFileEditsEquivalent(edits1, edits2, fileContent);
}