forked from qt-creator/qt-creator
Clang: Remove project tracking on clangbackend side
...as it is not needed. Just provide the compilation arguments as part of the Document. As a side effect, re-initializing the backend after a crash is cheaper and will not freeze the UI anymore (referenced bug). Task-number: QTCREATORBUG-21097 Change-Id: I866e25ef1fd5e4d318df16612a7564469e6baa11 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -80,9 +80,6 @@ public:
|
||||
void documentsClosed(const DocumentsClosedMessage &) override {}
|
||||
void documentVisibilityChanged(const DocumentVisibilityChangedMessage &) override {}
|
||||
|
||||
void projectPartsUpdated(const ProjectPartsUpdatedMessage &) override {}
|
||||
void projectPartsRemoved(const ProjectPartsRemovedMessage &) override {}
|
||||
|
||||
void unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &) override {}
|
||||
void unsavedFilesRemoved(const UnsavedFilesRemovedMessage &) override {}
|
||||
|
||||
@@ -137,42 +134,6 @@ void BackendCommunicator::initializeBackend()
|
||||
m_backendStartTimeOut.start(backEndStartTimeOutInMs);
|
||||
}
|
||||
|
||||
static QStringList projectPartOptions(const CppTools::ProjectPart::Ptr &projectPart)
|
||||
{
|
||||
const QStringList options = ClangCodeModel::Utils::createClangOptions(projectPart,
|
||||
CppTools::ProjectFile::Unsupported); // No language option
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
static ProjectPartContainer toProjectPartContainer(
|
||||
const CppTools::ProjectPart::Ptr &projectPart)
|
||||
{
|
||||
const QStringList options = projectPartOptions(projectPart);
|
||||
|
||||
return ProjectPartContainer(projectPart->id(), Utf8StringVector(options));
|
||||
}
|
||||
|
||||
static QVector<ProjectPartContainer> toProjectPartContainers(
|
||||
const QVector<CppTools::ProjectPart::Ptr> projectParts)
|
||||
{
|
||||
QVector<ProjectPartContainer> projectPartContainers;
|
||||
projectPartContainers.reserve(projectParts.size());
|
||||
|
||||
foreach (const CppTools::ProjectPart::Ptr &projectPart, projectParts)
|
||||
projectPartContainers << toProjectPartContainer(projectPart);
|
||||
|
||||
return projectPartContainers;
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdatedForFallback()
|
||||
{
|
||||
const auto projectPart = CppTools::CppModelManager::instance()->fallbackProjectPart();
|
||||
const auto projectPartContainer = toProjectPartContainer(projectPart);
|
||||
|
||||
projectPartsUpdated({projectPartContainer});
|
||||
}
|
||||
|
||||
namespace {
|
||||
Utf8String currentCppEditorDocumentFilePath()
|
||||
{
|
||||
@@ -253,15 +214,6 @@ void BackendCommunicator::documentVisibilityChanged(const Utf8String ¤tEdi
|
||||
m_sender->documentVisibilityChanged(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdatedForCurrentProjects()
|
||||
{
|
||||
using namespace CppTools;
|
||||
|
||||
const QList<ProjectInfo> projectInfos = CppModelManager::instance()->projectInfos();
|
||||
foreach (const ProjectInfo &projectInfo, projectInfos)
|
||||
projectPartsUpdated(projectInfo.projectParts());
|
||||
}
|
||||
|
||||
void BackendCommunicator::restoreCppEditorDocuments()
|
||||
{
|
||||
resetCppEditorDocumentProcessors();
|
||||
@@ -289,12 +241,6 @@ void BackendCommunicator::unsavedFilesUpdatedForUiHeaders()
|
||||
}
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdated(const QVector<CppTools::ProjectPart::Ptr> projectParts)
|
||||
{
|
||||
const auto projectPartContainers = toProjectPartContainers(projectParts);
|
||||
projectPartsUpdated(projectPartContainers);
|
||||
}
|
||||
|
||||
void BackendCommunicator::documentsChangedFromCppEditorDocument(const QString &filePath)
|
||||
{
|
||||
const CppTools::CppEditorDocumentHandle *document = ClangCodeModel::Utils::cppDocument(filePath);
|
||||
@@ -316,7 +262,6 @@ void BackendCommunicator::documentsChanged(const QString &filePath,
|
||||
const bool hasUnsavedContent = true;
|
||||
|
||||
documentsChanged({{filePath,
|
||||
Utf8String(),
|
||||
Utf8String::fromByteArray(contents),
|
||||
hasUnsavedContent,
|
||||
documentRevision}});
|
||||
@@ -330,7 +275,6 @@ void BackendCommunicator::unsavedFilesUpdated(const QString &filePath,
|
||||
|
||||
// TODO: Send new only if changed
|
||||
unsavedFilesUpdated({{filePath,
|
||||
Utf8String(),
|
||||
Utf8String::fromByteArray(contents),
|
||||
hasUnsavedContent,
|
||||
documentRevision}});
|
||||
@@ -412,10 +356,8 @@ void BackendCommunicator::documentsChangedWithRevisionCheck(Core::IDocument *doc
|
||||
{
|
||||
const auto textDocument = qobject_cast<TextDocument*>(document);
|
||||
const auto filePath = textDocument->filePath().toString();
|
||||
const QString projectPartId = CppTools::CppToolsBridge::projectPartIdForFile(filePath);
|
||||
|
||||
documentsChangedWithRevisionCheck(FileContainer(filePath,
|
||||
projectPartId,
|
||||
Utf8StringVector(),
|
||||
textDocument->document()->revision()));
|
||||
}
|
||||
@@ -510,8 +452,6 @@ void BackendCommunicator::logError(const QString &text)
|
||||
|
||||
void BackendCommunicator::initializeBackendWithCurrentData()
|
||||
{
|
||||
projectPartsUpdatedForFallback();
|
||||
projectPartsUpdatedForCurrentProjects();
|
||||
unsavedFilesUpdatedForUiHeaders();
|
||||
restoreCppEditorDocuments();
|
||||
documentVisibilityChanged();
|
||||
@@ -537,19 +477,6 @@ void BackendCommunicator::documentsClosed(const FileContainers &fileContainers)
|
||||
m_sender->documentsClosed(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdated(
|
||||
const ProjectPartContainers &projectPartContainers)
|
||||
{
|
||||
const ProjectPartsUpdatedMessage message(projectPartContainers);
|
||||
m_sender->projectPartsUpdated(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsRemoved(const QStringList &projectPartIds)
|
||||
{
|
||||
const ProjectPartsRemovedMessage message((Utf8StringVector(projectPartIds)));
|
||||
m_sender->projectPartsRemoved(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::unsavedFilesUpdated(const FileContainers &fileContainers)
|
||||
{
|
||||
const UnsavedFilesUpdatedMessage message(fileContainers);
|
||||
@@ -566,14 +493,12 @@ void BackendCommunicator::requestCompletions(ClangCompletionAssistProcessor *ass
|
||||
const QString &filePath,
|
||||
quint32 line,
|
||||
quint32 column,
|
||||
const QString &projectFilePath,
|
||||
qint32 funcNameStartLine,
|
||||
qint32 funcNameStartColumn)
|
||||
{
|
||||
const RequestCompletionsMessage message(filePath,
|
||||
line,
|
||||
column,
|
||||
projectFilePath,
|
||||
funcNameStartLine,
|
||||
funcNameStartColumn);
|
||||
m_sender->requestCompletions(message);
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
|
||||
#include <clangsupport/clangcodemodelconnectionclient.h>
|
||||
#include <clangsupport/filecontainer.h>
|
||||
#include <clangsupport/projectpartcontainer.h>
|
||||
|
||||
#include <QFuture>
|
||||
#include <QObject>
|
||||
@@ -56,7 +55,6 @@ class BackendCommunicator : public QObject
|
||||
public:
|
||||
using FileContainer = ClangBackEnd::FileContainer;
|
||||
using FileContainers = QVector<ClangBackEnd::FileContainer>;
|
||||
using ProjectPartContainers = QVector<ClangBackEnd::ProjectPartContainer>;
|
||||
using LocalUseMap = CppTools::SemanticInfo::LocalUseMap;
|
||||
|
||||
public:
|
||||
@@ -76,11 +74,6 @@ public:
|
||||
void documentsClosed(const FileContainers &fileContainers);
|
||||
void documentVisibilityChanged();
|
||||
|
||||
void projectPartsUpdated(const QVector<CppTools::ProjectPart::Ptr> projectParts);
|
||||
void projectPartsUpdated(const ProjectPartContainers &projectPartContainers);
|
||||
void projectPartsUpdatedForFallback();
|
||||
void projectPartsRemoved(const QStringList &projectPartIds);
|
||||
|
||||
void unsavedFilesUpdated(Core::IDocument *document);
|
||||
void unsavedFilesUpdated(const QString &filePath,
|
||||
const QByteArray &contents,
|
||||
@@ -93,7 +86,6 @@ public:
|
||||
const QString &filePath,
|
||||
quint32 line,
|
||||
quint32 column,
|
||||
const QString &projectFilePath,
|
||||
qint32 funcNameStartLine = -1,
|
||||
qint32 funcNameStartColumn = -1);
|
||||
void requestAnnotations(const ClangBackEnd::FileContainer &fileContainer);
|
||||
@@ -119,7 +111,6 @@ public:
|
||||
private:
|
||||
void initializeBackend();
|
||||
void initializeBackendWithCurrentData();
|
||||
void projectPartsUpdatedForCurrentProjects();
|
||||
void restoreCppEditorDocuments();
|
||||
void resetCppEditorDocumentProcessors();
|
||||
void unsavedFilesUpdatedForUiHeaders();
|
||||
|
||||
@@ -199,16 +199,9 @@ void BackendReceiver::annotations(const AnnotationsMessage &message)
|
||||
<< message.skippedPreprocessorRanges.size() << "skipped preprocessor ranges";
|
||||
|
||||
auto processor = ClangEditorDocumentProcessor::get(message.fileContainer.filePath);
|
||||
|
||||
if (!processor)
|
||||
return;
|
||||
|
||||
const QString projectPartId = message.fileContainer.projectPartId;
|
||||
const QString filePath = message.fileContainer.filePath;
|
||||
const QString documentProjectPartId = CppTools::CppToolsBridge::projectPartIdForFile(filePath);
|
||||
if (projectPartId != documentProjectPartId)
|
||||
return;
|
||||
|
||||
const quint32 documentRevision = message.fileContainer.documentRevision;
|
||||
if (message.onlyTokenInfos) {
|
||||
processor->updateTokenInfos(message.tokenInfos, documentRevision);
|
||||
|
||||
@@ -71,20 +71,6 @@ void BackendSender::documentsClosed(const DocumentsClosedMessage &message)
|
||||
m_connection->serverProxy().documentsClosed(message);
|
||||
}
|
||||
|
||||
void BackendSender::projectPartsUpdated(const ProjectPartsUpdatedMessage &message)
|
||||
{
|
||||
QTC_CHECK(m_connection->isConnected());
|
||||
qCDebugIpc() << message;
|
||||
m_connection->serverProxy().projectPartsUpdated(message);
|
||||
}
|
||||
|
||||
void BackendSender::projectPartsRemoved(const ProjectPartsRemovedMessage &message)
|
||||
{
|
||||
QTC_CHECK(m_connection->isConnected());
|
||||
qCDebugIpc() << message;
|
||||
m_connection->serverProxy().projectPartsRemoved(message);
|
||||
}
|
||||
|
||||
void BackendSender::unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message)
|
||||
{
|
||||
QTC_CHECK(m_connection->isConnected());
|
||||
|
||||
@@ -44,9 +44,6 @@ public:
|
||||
void documentsClosed(const ClangBackEnd::DocumentsClosedMessage &message) override;
|
||||
void documentVisibilityChanged(const ClangBackEnd::DocumentVisibilityChangedMessage &message) override;
|
||||
|
||||
void projectPartsUpdated(const ClangBackEnd::ProjectPartsUpdatedMessage &message) override;
|
||||
void projectPartsRemoved(const ClangBackEnd::ProjectPartsRemovedMessage &message) override;
|
||||
|
||||
void unsavedFilesUpdated(const ClangBackEnd::UnsavedFilesUpdatedMessage &message) override;
|
||||
void unsavedFilesRemoved(const ClangBackEnd::UnsavedFilesRemovedMessage &message) override;
|
||||
|
||||
|
||||
@@ -577,7 +577,6 @@ void ClangCompletionAssistProcessor::sendFileContent(const QByteArray &customFil
|
||||
|
||||
BackendCommunicator &communicator = m_interface->communicator();
|
||||
communicator.documentsChanged({{m_interface->fileName(),
|
||||
Utf8String(),
|
||||
Utf8String::fromByteArray(info.unsavedContent),
|
||||
info.isDocumentModified,
|
||||
uint(m_interface->textDocument()->revision())}});
|
||||
@@ -658,12 +657,10 @@ bool ClangCompletionAssistProcessor::sendCompletionRequest(int position,
|
||||
|
||||
const Position cursorPosition = extractLineColumn(position);
|
||||
const Position functionNameStart = extractLineColumn(functionNameStartPosition);
|
||||
const QString projectPartId = CppTools::CppToolsBridge::projectPartIdForFile(filePath);
|
||||
communicator.requestCompletions(this,
|
||||
filePath,
|
||||
uint(cursorPosition.line),
|
||||
uint(cursorPosition.column),
|
||||
projectPartId,
|
||||
functionNameStart.line,
|
||||
functionNameStart.column);
|
||||
setLastCompletionPosition(filePath, position);
|
||||
|
||||
@@ -143,7 +143,7 @@ void ClangEditorDocumentProcessor::semanticRehighlight()
|
||||
m_semanticHighlighter.updateFormatMapFromFontSettings();
|
||||
|
||||
if (m_projectPart)
|
||||
requestAnnotationsFromBackend(m_projectPart->id());
|
||||
requestAnnotationsFromBackend();
|
||||
}
|
||||
|
||||
CppTools::SemanticInfo ClangEditorDocumentProcessor::recalculateSemanticInfo()
|
||||
@@ -588,8 +588,7 @@ private:
|
||||
};
|
||||
} // namespace
|
||||
|
||||
void ClangEditorDocumentProcessor::updateBackendDocument(
|
||||
CppTools::ProjectPart &projectPart)
|
||||
void ClangEditorDocumentProcessor::updateBackendDocument(CppTools::ProjectPart &projectPart)
|
||||
{
|
||||
// On registration we send the document content immediately as an unsaved
|
||||
// file, because
|
||||
@@ -605,10 +604,17 @@ void ClangEditorDocumentProcessor::updateBackendDocument(
|
||||
return;
|
||||
}
|
||||
|
||||
const QStringList projectPartOptions = ClangCodeModel::Utils::createClangOptions(
|
||||
projectPart,
|
||||
CppTools::ProjectFile::Unsupported); // No language option as FileOptionsBuilder adds it.
|
||||
|
||||
const FileOptionsBuilder fileOptions(filePath(), projectPart);
|
||||
m_diagnosticConfigId = fileOptions.diagnosticConfigId();
|
||||
|
||||
const QStringList compilationArguments = projectPartOptions + fileOptions.options();
|
||||
|
||||
m_communicator.documentsOpened(
|
||||
{fileContainerWithOptionsAndDocumentContent(projectPart, fileOptions.options())});
|
||||
{fileContainerWithOptionsAndDocumentContent(compilationArguments)});
|
||||
ClangCodeModel::Utils::setLastSentDocumentRevision(filePath(), revision());
|
||||
}
|
||||
|
||||
@@ -621,16 +627,14 @@ void ClangEditorDocumentProcessor::closeBackendDocument()
|
||||
void ClangEditorDocumentProcessor::updateBackendDocumentIfProjectPartExists()
|
||||
{
|
||||
if (m_projectPart) {
|
||||
const ClangBackEnd::FileContainer fileContainer = fileContainerWithDocumentContent(
|
||||
m_projectPart->id());
|
||||
const ClangBackEnd::FileContainer fileContainer = fileContainerWithDocumentContent();
|
||||
m_communicator.documentsChangedWithRevisionCheck(fileContainer);
|
||||
}
|
||||
}
|
||||
|
||||
void ClangEditorDocumentProcessor::requestAnnotationsFromBackend(const QString &projectpartId)
|
||||
void ClangEditorDocumentProcessor::requestAnnotationsFromBackend()
|
||||
{
|
||||
const auto fileContainer = fileContainerWithDocumentContent(projectpartId);
|
||||
|
||||
const auto fileContainer = fileContainerWithDocumentContent();
|
||||
m_communicator.requestAnnotations(fileContainer);
|
||||
}
|
||||
|
||||
@@ -660,12 +664,7 @@ ClangEditorDocumentProcessor::creatorForHeaderErrorDiagnosticWidget(
|
||||
ClangBackEnd::FileContainer ClangEditorDocumentProcessor::simpleFileContainer(
|
||||
const QByteArray &codecName) const
|
||||
{
|
||||
Utf8String projectPartId;
|
||||
if (m_projectPart)
|
||||
projectPartId = m_projectPart->id();
|
||||
|
||||
return ClangBackEnd::FileContainer(filePath(),
|
||||
projectPartId,
|
||||
Utf8String(),
|
||||
false,
|
||||
revision(),
|
||||
@@ -673,21 +672,19 @@ ClangBackEnd::FileContainer ClangEditorDocumentProcessor::simpleFileContainer(
|
||||
}
|
||||
|
||||
ClangBackEnd::FileContainer ClangEditorDocumentProcessor::fileContainerWithOptionsAndDocumentContent(
|
||||
CppTools::ProjectPart &projectPart, const QStringList &fileOptions) const
|
||||
const QStringList &compilationArguments) const
|
||||
{
|
||||
return ClangBackEnd::FileContainer(filePath(),
|
||||
projectPart.id(),
|
||||
Utf8StringVector(fileOptions),
|
||||
Utf8StringVector(compilationArguments),
|
||||
textDocument()->toPlainText(),
|
||||
true,
|
||||
revision());
|
||||
}
|
||||
|
||||
ClangBackEnd::FileContainer
|
||||
ClangEditorDocumentProcessor::fileContainerWithDocumentContent(const QString &projectpartId) const
|
||||
ClangEditorDocumentProcessor::fileContainerWithDocumentContent() const
|
||||
{
|
||||
return ClangBackEnd::FileContainer(filePath(),
|
||||
projectpartId,
|
||||
textDocument()->toPlainText(),
|
||||
true,
|
||||
revision());
|
||||
|
||||
@@ -118,14 +118,14 @@ private:
|
||||
void updateBackendProjectPartAndDocument();
|
||||
void updateBackendDocument(CppTools::ProjectPart &projectPart);
|
||||
void updateBackendDocumentIfProjectPartExists();
|
||||
void requestAnnotationsFromBackend(const QString &projectpartId);
|
||||
void requestAnnotationsFromBackend();
|
||||
|
||||
HeaderErrorDiagnosticWidgetCreator creatorForHeaderErrorDiagnosticWidget(
|
||||
const ClangBackEnd::DiagnosticContainer &firstHeaderErrorDiagnostic);
|
||||
ClangBackEnd::FileContainer simpleFileContainer(const QByteArray &codecName = QByteArray()) const;
|
||||
ClangBackEnd::FileContainer fileContainerWithOptionsAndDocumentContent(
|
||||
CppTools::ProjectPart &projectPart, const QStringList &fileOptions) const;
|
||||
ClangBackEnd::FileContainer fileContainerWithDocumentContent(const QString &projectpartId) const;
|
||||
const QStringList &compilationArguments) const;
|
||||
ClangBackEnd::FileContainer fileContainerWithDocumentContent() const;
|
||||
|
||||
private:
|
||||
TextEditor::TextDocument &m_document;
|
||||
|
||||
@@ -50,8 +50,6 @@
|
||||
#include <projectexplorer/session.h>
|
||||
|
||||
#include <clangsupport/filecontainer.h>
|
||||
#include <clangsupport/projectpartcontainer.h>
|
||||
#include <clangsupport/projectpartsupdatedmessage.h>
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
@@ -107,8 +105,6 @@ ModelManagerSupportClang::ModelManagerSupportClang()
|
||||
CppTools::CppCodeModelSettings *settings = CppTools::codeModelSettings().data();
|
||||
connect(settings, &CppTools::CppCodeModelSettings::clangDiagnosticConfigsInvalidated,
|
||||
this, &ModelManagerSupportClang::onDiagnosticConfigsInvalidated);
|
||||
|
||||
m_communicator.projectPartsUpdatedForFallback();
|
||||
}
|
||||
|
||||
ModelManagerSupportClang::~ModelManagerSupportClang()
|
||||
@@ -411,17 +407,16 @@ void ModelManagerSupportClang::onProjectPartsUpdated(ProjectExplorer::Project *p
|
||||
const CppTools::ProjectInfo projectInfo = cppModelManager()->projectInfo(project);
|
||||
QTC_ASSERT(projectInfo.isValid(), return);
|
||||
|
||||
m_communicator.projectPartsUpdated(projectInfo.projectParts());
|
||||
m_communicator.projectPartsUpdatedForFallback();
|
||||
QStringList projectPartIds;
|
||||
for (const CppTools::ProjectPart::Ptr &projectPart : projectInfo.projectParts())
|
||||
projectPartIds.append(projectPart->id());
|
||||
onProjectPartsRemoved(projectPartIds);
|
||||
}
|
||||
|
||||
void ModelManagerSupportClang::onProjectPartsRemoved(const QStringList &projectPartIds)
|
||||
{
|
||||
if (!projectPartIds.isEmpty()) {
|
||||
closeBackendDocumentsWithProjectParts(projectPartIds);
|
||||
m_communicator.projectPartsRemoved(projectPartIds);
|
||||
m_communicator.projectPartsUpdatedForFallback();
|
||||
}
|
||||
if (!projectPartIds.isEmpty())
|
||||
reinitializeBackendDocuments(projectPartIds);
|
||||
}
|
||||
|
||||
static ClangEditorDocumentProcessors clangProcessorsWithDiagnosticConfig(
|
||||
@@ -445,8 +440,7 @@ clangProcessorsWithProjectParts(const QStringList &projectPartIds)
|
||||
});
|
||||
}
|
||||
|
||||
void ModelManagerSupportClang::closeBackendDocumentsWithProjectParts(
|
||||
const QStringList &projectPartIds)
|
||||
void ModelManagerSupportClang::reinitializeBackendDocuments(const QStringList &projectPartIds)
|
||||
{
|
||||
const auto processors = clangProcessorsWithProjectParts(projectPartIds);
|
||||
foreach (ClangEditorDocumentProcessor *processor, processors) {
|
||||
|
||||
@@ -109,7 +109,7 @@ private:
|
||||
|
||||
void onDiagnosticConfigsInvalidated(const QVector<Core::Id> &configIds);
|
||||
|
||||
void closeBackendDocumentsWithProjectParts(const QStringList &projectPartIds);
|
||||
void reinitializeBackendDocuments(const QStringList &projectPartIds);
|
||||
|
||||
void connectTextDocumentToTranslationUnit(TextEditor::TextDocument *textDocument);
|
||||
void connectTextDocumentToUnsavedFiles(TextEditor::TextDocument *textDocument);
|
||||
|
||||
@@ -63,26 +63,6 @@ using namespace CppTools;
|
||||
namespace ClangCodeModel {
|
||||
namespace Utils {
|
||||
|
||||
/**
|
||||
* @brief Creates list of message-line arguments required for correct parsing
|
||||
* @param pPart Null if file isn't part of any project
|
||||
* @param fileName Path to file, non-empty
|
||||
*/
|
||||
QStringList createClangOptions(const ProjectPart::Ptr &pPart, const QString &fileName)
|
||||
{
|
||||
ProjectFile::Kind fileKind = ProjectFile::Unclassified;
|
||||
if (!pPart.isNull())
|
||||
foreach (const ProjectFile &file, pPart->files)
|
||||
if (file.path == fileName) {
|
||||
fileKind = file.kind;
|
||||
break;
|
||||
}
|
||||
if (fileKind == ProjectFile::Unclassified)
|
||||
fileKind = ProjectFile::classify(fileName);
|
||||
|
||||
return createClangOptions(pPart, fileKind);
|
||||
}
|
||||
|
||||
class LibClangOptionsBuilder final : public CompilerOptionsBuilder
|
||||
{
|
||||
public:
|
||||
@@ -122,16 +102,10 @@ private:
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Creates list of message-line arguments required for correct parsing
|
||||
* @param pPart Null if file isn't part of any project
|
||||
* @param fileKind Determines language and source/header state
|
||||
*/
|
||||
QStringList createClangOptions(const ProjectPart::Ptr &pPart, ProjectFile::Kind fileKind)
|
||||
QStringList createClangOptions(const ProjectPart &projectPart, ProjectFile::Kind fileKind)
|
||||
{
|
||||
if (!pPart)
|
||||
return QStringList();
|
||||
return LibClangOptionsBuilder(*pPart).build(fileKind, CompilerOptionsBuilder::PchUsage::None);
|
||||
return LibClangOptionsBuilder(projectPart)
|
||||
.build(fileKind, CompilerOptionsBuilder::PchUsage::None);
|
||||
}
|
||||
|
||||
ProjectPart::Ptr projectPartForFile(const QString &filePath)
|
||||
|
||||
@@ -50,10 +50,8 @@ namespace Utils {
|
||||
CppTools::CppEditorDocumentHandle *cppDocument(const QString &filePath);
|
||||
void setLastSentDocumentRevision(const QString &filePath, uint revision);
|
||||
|
||||
QStringList createClangOptions(const CppTools::ProjectPart::Ptr &pPart,
|
||||
QStringList createClangOptions(const CppTools::ProjectPart &projectPart,
|
||||
CppTools::ProjectFile::Kind fileKind);
|
||||
QStringList createClangOptions(const CppTools::ProjectPart::Ptr &pPart,
|
||||
const QString &fileName = QString());
|
||||
|
||||
CppTools::ProjectPart::Ptr projectPartForFile(const QString &filePath);
|
||||
CppTools::ProjectPart::Ptr projectPartForFileBasedOnProcessor(const QString &filePath);
|
||||
|
||||
Reference in New Issue
Block a user