forked from qt-creator/qt-creator
CMakePM: Add failure logging for add|rename|removeFiles
Task-number: QTCREATORBUG-29914 Change-Id: I404a3efb8cabafba6036eb1bc07d19f18af17cd8 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
committed by
Alessandro Portale
parent
f06b821f58
commit
48a3a12b01
@@ -281,8 +281,11 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
|||||||
return target.title == targetName;
|
return target.title == targetName;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (target.backtrace.isEmpty())
|
if (target.backtrace.isEmpty()) {
|
||||||
|
qCCritical(cmakeBuildSystemLog) << "target.backtrace for" << targetName << "is empty. "
|
||||||
|
<< "The location where to add the files is unknown.";
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const FilePath targetCMakeFile = target.backtrace.last().path;
|
const FilePath targetCMakeFile = target.backtrace.last().path;
|
||||||
const int targetDefinitionLine = target.backtrace.last().line;
|
const int targetDefinitionLine = target.backtrace.last().line;
|
||||||
@@ -298,6 +301,8 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
|||||||
if (!cmakeListFile.ParseString(fileContent->toStdString(),
|
if (!cmakeListFile.ParseString(fileContent->toStdString(),
|
||||||
targetCMakeFile.fileName().toStdString(),
|
targetCMakeFile.fileName().toStdString(),
|
||||||
errorString)) {
|
errorString)) {
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< targetCMakeFile.path() << "failed to parse! Error:" << errorString;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -308,8 +313,11 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
|||||||
return func.Line() == targetDefinitionLine;
|
return func.Line() == targetDefinitionLine;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (function == cmakeListFile.Functions.end())
|
if (function == cmakeListFile.Functions.end()) {
|
||||||
|
qCCritical(cmakeBuildSystemLog) << "Function that defined the target" << targetName
|
||||||
|
<< "could not be found at" << targetDefinitionLine;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Special case: when qt_add_executable and qt_add_qml_module use the same target name
|
// Special case: when qt_add_executable and qt_add_qml_module use the same target name
|
||||||
// then qt_add_qml_module function should be used
|
// then qt_add_qml_module function should be used
|
||||||
@@ -383,13 +391,20 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
|||||||
Core::EditorManager::openEditorAt({targetCMakeFile, line, column + extraChars},
|
Core::EditorManager::openEditorAt({targetCMakeFile, line, column + extraChars},
|
||||||
Constants::CMAKE_EDITOR_ID,
|
Constants::CMAKE_EDITOR_ID,
|
||||||
Core::EditorManager::DoNotMakeVisible));
|
Core::EditorManager::DoNotMakeVisible));
|
||||||
if (!editor)
|
if (!editor) {
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "BaseTextEditor cannot be obtained for" << targetCMakeFile.path() << line
|
||||||
|
<< int(column + extraChars);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
editor->insert(snippet);
|
editor->insert(snippet);
|
||||||
editor->editorWidget()->autoIndent();
|
editor->editorWidget()->autoIndent();
|
||||||
if (!Core::DocumentManager::saveDocument(editor->document()))
|
if (!Core::DocumentManager::saveDocument(editor->document())) {
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "Changes to" << targetCMakeFile.path() << "could not be saved.";
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (notAdded)
|
if (notAdded)
|
||||||
notAdded->clear();
|
notAdded->clear();
|
||||||
@@ -536,6 +551,9 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
|
|||||||
if (filePos) {
|
if (filePos) {
|
||||||
if (!filePos.value().cmakeFile.exists()) {
|
if (!filePos.value().cmakeFile.exists()) {
|
||||||
badFiles << file;
|
badFiles << file;
|
||||||
|
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "File" << filePos.value().cmakeFile.path() << "does not exist.";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,6 +566,11 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
|
|||||||
Core::EditorManager::DoNotMakeVisible));
|
Core::EditorManager::DoNotMakeVisible));
|
||||||
if (!editor) {
|
if (!editor) {
|
||||||
badFiles << file;
|
badFiles << file;
|
||||||
|
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "BaseTextEditor cannot be obtained for"
|
||||||
|
<< filePos.value().cmakeFile.path() << filePos.value().argumentPosition.Line
|
||||||
|
<< int(filePos.value().argumentPosition.Column - 1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,6 +585,10 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
|
|||||||
editor->editorWidget()->autoIndent();
|
editor->editorWidget()->autoIndent();
|
||||||
if (!Core::DocumentManager::saveDocument(editor->document())) {
|
if (!Core::DocumentManager::saveDocument(editor->document())) {
|
||||||
badFiles << file;
|
badFiles << file;
|
||||||
|
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "Changes to" << filePos.value().cmakeFile.path()
|
||||||
|
<< "could not be saved.";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -625,8 +652,11 @@ bool CMakeBuildSystem::renameFile(Node *context,
|
|||||||
";");
|
";");
|
||||||
|
|
||||||
auto fileToRename = m_filesToBeRenamed.take(key);
|
auto fileToRename = m_filesToBeRenamed.take(key);
|
||||||
if (!fileToRename.cmakeFile.exists())
|
if (!fileToRename.cmakeFile.exists()) {
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "File" << fileToRename.cmakeFile.path() << "does not exist.";
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
BaseTextEditor *editor = qobject_cast<BaseTextEditor *>(
|
BaseTextEditor *editor = qobject_cast<BaseTextEditor *>(
|
||||||
Core::EditorManager::openEditorAt({fileToRename.cmakeFile,
|
Core::EditorManager::openEditorAt({fileToRename.cmakeFile,
|
||||||
@@ -635,8 +665,12 @@ bool CMakeBuildSystem::renameFile(Node *context,
|
|||||||
- 1)},
|
- 1)},
|
||||||
Constants::CMAKE_EDITOR_ID,
|
Constants::CMAKE_EDITOR_ID,
|
||||||
Core::EditorManager::DoNotMakeVisible));
|
Core::EditorManager::DoNotMakeVisible));
|
||||||
if (!editor)
|
if (!editor) {
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "BaseTextEditor cannot be obtained for" << fileToRename.cmakeFile.path()
|
||||||
|
<< fileToRename.argumentPosition.Line << int(fileToRename.argumentPosition.Column);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// If quotes were used for the source file, skip the starting quote
|
// If quotes were used for the source file, skip the starting quote
|
||||||
if (fileToRename.argumentPosition.Delim == cmListFileArgument::Quoted)
|
if (fileToRename.argumentPosition.Delim == cmListFileArgument::Quoted)
|
||||||
@@ -646,8 +680,11 @@ bool CMakeBuildSystem::renameFile(Node *context,
|
|||||||
editor->replace(fileToRename.relativeFileName.length(), newRelPathName);
|
editor->replace(fileToRename.relativeFileName.length(), newRelPathName);
|
||||||
|
|
||||||
editor->editorWidget()->autoIndent();
|
editor->editorWidget()->autoIndent();
|
||||||
if (!Core::DocumentManager::saveDocument(editor->document()))
|
if (!Core::DocumentManager::saveDocument(editor->document())) {
|
||||||
|
qCCritical(cmakeBuildSystemLog).noquote()
|
||||||
|
<< "Changes to" << fileToRename.cmakeFile.path() << "could not be saved.";
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user