From cd8ff54b008d775df19a607f203ef2ac1655d4bc Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 26 Sep 2022 14:15:40 +0200 Subject: [PATCH] DiffEditor: Use DiffSide enum inside ChunkData Change-Id: Ic10fe9faa6b6ccefcbf4c062663dedefa6bf5872 Reviewed-by: Orgad Shaneh --- src/plugins/diffeditor/diffeditorplugin.cpp | 59 +++++++------------ src/plugins/diffeditor/diffutils.cpp | 10 ++-- src/plugins/diffeditor/diffutils.h | 3 +- .../diffeditor/sidebysidediffeditorwidget.cpp | 8 +-- .../diffeditor/unifieddiffeditorwidget.cpp | 16 ++--- 5 files changed, 38 insertions(+), 58 deletions(-) diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp index 7d97880357e..7fb8abcbac6 100644 --- a/src/plugins/diffeditor/diffeditorplugin.cpp +++ b/src/plugins/diffeditor/diffeditorplugin.cpp @@ -843,8 +843,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testMakePatch() QCOMPARE(resultFileData.chunks.count(), 1); for (int j = 0; j < resultFileData.chunks.count(); j++) { const ChunkData &resultChunkData = resultFileData.chunks.at(j); - QCOMPARE(resultChunkData.leftStartingLineNumber, sourceChunk.leftStartingLineNumber); - QCOMPARE(resultChunkData.rightStartingLineNumber, sourceChunk.rightStartingLineNumber); + QCOMPARE(resultChunkData.startingLineNumber[LeftSide], sourceChunk.startingLineNumber[LeftSide]); + QCOMPARE(resultChunkData.startingLineNumber[RightSide], sourceChunk.startingLineNumber[RightSide]); QCOMPARE(resultChunkData.contextChunk, sourceChunk.contextChunk); QCOMPARE(resultChunkData.rows.count(), sourceChunk.rows.count()); for (int k = 0; k < sourceChunk.rows.count(); k++) { @@ -949,8 +949,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData1.leftFileInfo = DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "eab9e9b"); fileData1.rightFileInfo = DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "082c135"); ChunkData chunkData1; - chunkData1.leftStartingLineNumber = 186; - chunkData1.rightStartingLineNumber = 186; + chunkData1.startingLineNumber = {186, 186}; QList rows1; rows1 << RowData(_(" m_controller = m_document->controller();")); rows1 << RowData(_(" m_guiController = new DiffEditorGuiController(m_controller, this);")); @@ -968,8 +967,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData2.leftFileInfo = DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("2f641c9")); fileData2.rightFileInfo = DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("f8ff795")); ChunkData chunkData2; - chunkData2.leftStartingLineNumber = 463; - chunkData2.rightStartingLineNumber = 463; + chunkData2.startingLineNumber = {463, 463}; QList rows2; rows2 << RowData(_(" return diffText;")); rows2 << RowData(_("}")); @@ -991,8 +989,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData3.rightFileInfo = DiffFileInfo("new", "257cc56"); fileData3.fileOperation = FileData::NewFile; ChunkData chunkData3; - chunkData3.leftStartingLineNumber = -1; - chunkData3.rightStartingLineNumber = 0; + chunkData3.startingLineNumber = {-1, 0}; QList rows3; rows3 << RowData(TextLineData::Separator, _("foo")); TextLineData textLineData3(TextLineData::TextLine); @@ -1005,8 +1002,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData4.rightFileInfo = DiffFileInfo("deleted", "0000000"); fileData4.fileOperation = FileData::DeleteFile; ChunkData chunkData4; - chunkData4.leftStartingLineNumber = 0; - chunkData4.rightStartingLineNumber = -1; + chunkData4.startingLineNumber = {0, -1}; QList rows4; rows4 << RowData(_("foo"), TextLineData::Separator); TextLineData textLineData4(TextLineData::TextLine); @@ -1029,8 +1025,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData7.rightFileInfo = DiffFileInfo("file b.txt", "9876543"); fileData7.fileOperation = FileData::CopyFile; ChunkData chunkData7; - chunkData7.leftStartingLineNumber = 19; - chunkData7.rightStartingLineNumber = 19; + chunkData7.startingLineNumber = {19, 19}; QList rows7; rows7 << RowData(_("A")); rows7 << RowData(_("B"), _("C")); @@ -1069,8 +1064,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567"); fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543"); fileData1.fileOperation = FileData::ChangeFile; - chunkData1.leftStartingLineNumber = 49; - chunkData1.rightStartingLineNumber = 49; + chunkData1.startingLineNumber = {49, 49}; rows1.clear(); rows1 << RowData(_("A")); rows1 << RowData(_("B")); @@ -1100,8 +1094,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567"); fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543"); fileData1.fileOperation = FileData::ChangeFile; - chunkData1.leftStartingLineNumber = 0; - chunkData1.rightStartingLineNumber = 0; + chunkData1.startingLineNumber = {0, 0}; rows1.clear(); rows1 << RowData(_("ABCD")); rows1 << RowData(TextLineData::Separator, _("")); @@ -1136,8 +1129,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData1.leftFileInfo = DiffFileInfo("difftest.txt", "1234567"); fileData1.rightFileInfo = DiffFileInfo("difftest.txt", "9876543"); fileData1.fileOperation = FileData::ChangeFile; - chunkData1.leftStartingLineNumber = 1; - chunkData1.rightStartingLineNumber = 1; + chunkData1.startingLineNumber = {1, 1}; rows1.clear(); rows1 << RowData(_("A")); rows1 << RowData(_("B")); @@ -1146,8 +1138,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() rows1 << RowData(_("")); chunkData1.rows = rows1; - chunkData2.leftStartingLineNumber = 8; - chunkData2.rightStartingLineNumber = 8; + chunkData2.startingLineNumber = {8, 8}; rows2.clear(); rows2 << RowData(_("")); rows2 << RowData(_("D")); @@ -1179,8 +1170,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567"); fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543"); fileData1.fileOperation = FileData::ChangeFile; - chunkData1.leftStartingLineNumber = 0; - chunkData1.rightStartingLineNumber = 0; + chunkData1.startingLineNumber = {0, 0}; rows1.clear(); rows1 << RowData(_("ABCD")); rows1 << RowData(TextLineData::Separator, _("")); @@ -1226,8 +1216,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData2.leftFileInfo = DiffFileInfo("src/plugins/texteditor/basetextdocumentlayout.cpp", "0121933"); fileData2.rightFileInfo = DiffFileInfo("src/plugins/texteditor/textdocumentlayout.cpp", "01cc3a0"); fileData2.fileOperation = FileData::RenameFile; - chunkData2.leftStartingLineNumber = 1; - chunkData2.rightStartingLineNumber = 1; + chunkData2.startingLineNumber = {1, 1}; rows2.clear(); rows2 << RowData(_("A")); rows2 << RowData(_("B")); @@ -1257,8 +1246,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData1 = FileData(); fileData1.leftFileInfo = DiffFileInfo("src/shared/qbs"); fileData1.rightFileInfo = DiffFileInfo("src/shared/qbs"); - chunkData1.leftStartingLineNumber = 0; - chunkData1.rightStartingLineNumber = 0; + chunkData1.startingLineNumber = {0, 0}; rows1.clear(); rows1 << RowData(_("Subproject commit eda76354077a427d692fee05479910de31040d3f"), _("Subproject commit eda76354077a427d692fee05479910de31040d3f-dirty")); @@ -1294,8 +1282,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() fileData1.rightFileInfo = DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "c5132b4"); fileData1.fileOperation = FileData::NewFile; chunkData1 = ChunkData(); - chunkData1.leftStartingLineNumber = -1; - chunkData1.rightStartingLineNumber = 0; + chunkData1.startingLineNumber = {-1, 0}; rows1.clear(); rows1 << RowData(TextLineData::Separator, _("XXX")); rows1 << RowData(TextLineData::Separator, TextLineData(TextLineData::TextLine)); @@ -1366,8 +1353,7 @@ rename to new.sh fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); chunkData1 = ChunkData(); - chunkData1.leftStartingLineNumber = -1; - chunkData1.rightStartingLineNumber = 124; + chunkData1.startingLineNumber = {-1, 124}; fileData1.chunks << chunkData1; QList fileDataList21; fileDataList21 << fileData1; @@ -1386,8 +1372,7 @@ rename to new.sh fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); chunkData1 = ChunkData(); - chunkData1.leftStartingLineNumber = 0; - chunkData1.rightStartingLineNumber = -1; + chunkData1.startingLineNumber = {0, -1}; fileData1.chunks << chunkData1; QList fileDataList22; fileDataList22 << fileData1; @@ -1406,8 +1391,7 @@ rename to new.sh fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); chunkData1 = ChunkData(); - chunkData1.leftStartingLineNumber = 119; - chunkData1.rightStartingLineNumber = 119; + chunkData1.startingLineNumber = {119, 119}; fileData1.chunks << chunkData1; QList fileDataList23; fileDataList23 << fileData1; @@ -1437,8 +1421,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch() for (int j = 0; j < origFileData.chunks.count(); j++) { const ChunkData &origChunkData = origFileData.chunks.at(j); const ChunkData &resultChunkData = resultFileData.chunks.at(j); - QCOMPARE(resultChunkData.leftStartingLineNumber, origChunkData.leftStartingLineNumber); - QCOMPARE(resultChunkData.rightStartingLineNumber, origChunkData.rightStartingLineNumber); + QCOMPARE(resultChunkData.startingLineNumber[LeftSide], origChunkData.startingLineNumber[LeftSide]); + QCOMPARE(resultChunkData.startingLineNumber[RightSide], origChunkData.startingLineNumber[RightSide]); QCOMPARE(resultChunkData.contextChunk, origChunkData.contextChunk); QCOMPARE(resultChunkData.rows.count(), origChunkData.rows.count()); for (int k = 0; k < origChunkData.rows.count(); k++) { @@ -1467,8 +1451,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testFilterPatch_data() ChunkData chunk; chunk.contextInfo = "void DiffEditor::ctor()"; chunk.contextChunk = false; - chunk.leftStartingLineNumber = 49; - chunk.rightStartingLineNumber = 49; + chunk.startingLineNumber = {49, 49}; return chunk; }; auto appendRow = [](ChunkData *chunk, const QString &left, const QString &right) { diff --git a/src/plugins/diffeditor/diffutils.cpp b/src/plugins/diffeditor/diffutils.cpp index d12b34b6c21..1dbaf6c73c3 100644 --- a/src/plugins/diffeditor/diffutils.cpp +++ b/src/plugins/diffeditor/diffutils.cpp @@ -288,8 +288,7 @@ FileData DiffUtils::calculateContextData(const ChunkData &originalData, int cont const bool contextChunk = hiddenRows.contains(i); ChunkData chunkData; chunkData.contextChunk = contextChunk; - chunkData.leftStartingLineNumber = leftLineNumber; - chunkData.rightStartingLineNumber = rightLineNumber; + chunkData.startingLineNumber = {leftLineNumber, rightLineNumber}; while (i < originalData.rows.size()) { if (contextChunk != hiddenRows.contains(i)) break; @@ -430,11 +429,11 @@ QString DiffUtils::makePatch(const ChunkData &chunkData, } const QString chunkLine = "@@ -" - + QString::number(chunkData.leftStartingLineNumber + 1) + + QString::number(chunkData.startingLineNumber[LeftSide] + 1) + ',' + QString::number(leftLineCount) + " +" - + QString::number(chunkData.rightStartingLineNumber + 1) + + QString::number(chunkData.startingLineNumber[RightSide] + 1) + ',' + QString::number(rightLineCount) + " @@" @@ -778,8 +777,7 @@ static bool detectChunkData(QStringView chunkDiff, ChunkData *chunkData, QString if (!ok) return false; - chunkData->leftStartingLineNumber = leftLineNumber - 1; - chunkData->rightStartingLineNumber = rightLineNumber - 1; + chunkData->startingLineNumber = {leftLineNumber - 1, rightLineNumber - 1}; chunkData->contextInfo = optionalHint.toString(); return true; diff --git a/src/plugins/diffeditor/diffutils.h b/src/plugins/diffeditor/diffutils.h index 75618c6bf06..f321349ff31 100644 --- a/src/plugins/diffeditor/diffutils.h +++ b/src/plugins/diffeditor/diffutils.h @@ -76,8 +76,7 @@ class DIFFEDITOR_EXPORT ChunkData { public: QList rows; QString contextInfo; - int leftStartingLineNumber = 0; - int rightStartingLineNumber = 0; + std::array startingLineNumber{}; bool contextChunk = false; }; diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index 7a032e80516..1d093752176 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -913,8 +913,8 @@ void SideBySideDiffEditorWidget::showDiff() for (int j = 0; j < contextFileData.chunks.count(); j++) { const ChunkData &chunkData = contextFileData.chunks.at(j); - int leftLineNumber = chunkData.leftStartingLineNumber; - int rightLineNumber = chunkData.rightStartingLineNumber; + int leftLineNumber = chunkData.startingLineNumber[LeftSide]; + int rightLineNumber = chunkData.startingLineNumber[RightSide]; if (!chunkData.contextChunk) { const int skippedLines = leftLineNumber - lastLeftLineNumber - 1; @@ -1059,8 +1059,8 @@ void SideBySideDiffEditorWidget::slotLeftJumpToOriginalFileRequested( // (when Working tree has changed in meantime) will not work properly. for (const ChunkData &chunkData : fileData.chunks) { - int leftLineNumber = chunkData.leftStartingLineNumber; - int rightLineNumber = chunkData.rightStartingLineNumber; + int leftLineNumber = chunkData.startingLineNumber[LeftSide]; + int rightLineNumber = chunkData.startingLineNumber[RightSide]; for (int j = 0; j < chunkData.rows.count(); j++) { const RowData rowData = chunkData.rows.at(j); diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index a3b6282eba4..fcd52c6d910 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -362,7 +362,7 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData if (!line.isEmpty()) { setLineNumber(LeftSide, *blockNumber + blockCount + 1, - chunkData.leftStartingLineNumber + leftLineCount + 1, + chunkData.startingLineNumber[LeftSide] + leftLineCount + 1, leftRowsBuffer.at(j)); blockCount += blockDelta; ++leftLineCount; @@ -404,7 +404,7 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData if (!line.isEmpty()) { setLineNumber(RightSide, *blockNumber + blockCount + 1, - chunkData.rightStartingLineNumber + rightLineCount + 1, + chunkData.startingLineNumber[RightSide] + rightLineCount + 1, rightRowsBuffer.at(j)); blockCount += blockDelta; ++rightLineCount; @@ -425,9 +425,9 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData if (!line.isEmpty()) { setLineNumber(LeftSide, *blockNumber + blockCount + 1, - chunkData.leftStartingLineNumber + leftLineCount + 1, i); + chunkData.startingLineNumber[LeftSide] + leftLineCount + 1, i); setLineNumber(RightSide, *blockNumber + blockCount + 1, - chunkData.rightStartingLineNumber + rightLineCount + 1, i); + chunkData.startingLineNumber[RightSide] + rightLineCount + 1, i); blockCount += line.count('\n'); ++leftLineCount; ++rightLineCount; @@ -450,11 +450,11 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData } const QString chunkLine = "@@ -" - + QString::number(chunkData.leftStartingLineNumber + 1) + + QString::number(chunkData.startingLineNumber[LeftSide] + 1) + ',' + QString::number(leftLineCount) + " +" - + QString::number(chunkData.rightStartingLineNumber+ 1) + + QString::number(chunkData.startingLineNumber[RightSide]+ 1) + ',' + QString::number(rightLineCount) + " @@" @@ -688,8 +688,8 @@ void UnifiedDiffEditorWidget::jumpToOriginalFile(const QTextCursor &cursor) if (leftFileName == rightFileName) { for (const ChunkData &chunkData : fileData.chunks) { - int newLeftLineNumber = chunkData.leftStartingLineNumber; - int newRightLineNumber = chunkData.rightStartingLineNumber; + int newLeftLineNumber = chunkData.startingLineNumber[LeftSide]; + int newRightLineNumber = chunkData.startingLineNumber[RightSide]; for (const RowData &rowData : chunkData.rows) { if (rowData.leftLine.textLineType == TextLineData::TextLine)