Merge remote-tracking branch 'origin/4.6'

Change-Id: I49e8b8442e2b5edffbea19cb2bba97443ebc3d2a
This commit is contained in:
Eike Ziller
2018-01-23 17:06:59 +01:00
195 changed files with 3478 additions and 2854 deletions

View File

@@ -151,7 +151,7 @@ void BackendReceiver::reset()
qDeleteAll(m_assistProcessorsTable.begin(), m_assistProcessorsTable.end());
m_assistProcessorsTable.clear();
// Clean up futures for references
// Clean up futures for references; TODO: Remove duplication
for (ReferencesEntry &entry : m_referencesTable) {
entry.futureInterface.cancel();
entry.futureInterface.reportFinished();
@@ -162,6 +162,11 @@ void BackendReceiver::reset()
futureInterface.reportFinished();
}
m_followTable.clear();
for (QFutureInterface<CppTools::ToolTipInfo> &futureInterface : m_toolTipsTable) {
futureInterface.cancel();
futureInterface.reportFinished();
}
m_toolTipsTable.clear();
}
void BackendReceiver::alive()

View File

@@ -46,7 +46,7 @@ class ClangCompletionAssistProcessor : public CppTools::CppCompletionAssistProce
public:
ClangCompletionAssistProcessor();
~ClangCompletionAssistProcessor();
~ClangCompletionAssistProcessor() override;
TextEditor::IAssistProposal *perform(const TextEditor::AssistInterface *interface) override;

View File

@@ -101,10 +101,8 @@ ClangEditorDocumentProcessor::~ClangEditorDocumentProcessor()
m_parserWatcher.cancel();
m_parserWatcher.waitForFinished();
if (m_projectPart) {
m_communicator.unregisterTranslationUnitsForEditor(
{ClangBackEnd::FileContainer(filePath(), m_projectPart->id())});
}
if (m_projectPart)
unregisterTranslationUnitForEditor();
}
void ClangEditorDocumentProcessor::runImpl(
@@ -384,11 +382,6 @@ QFuture<CppTools::ToolTipInfo> ClangEditorDocumentProcessor::toolTipInfo(const Q
static_cast<quint32>(column));
}
ClangBackEnd::FileContainer ClangEditorDocumentProcessor::fileContainerWithArguments() const
{
return fileContainerWithArguments(m_projectPart.data());
}
void ClangEditorDocumentProcessor::clearDiagnosticsWithFixIts()
{
m_diagnosticManager.clearDiagnosticsWithFixIts();
@@ -442,7 +435,6 @@ void ClangEditorDocumentProcessor::registerTranslationUnitForEditor(CppTools::Pr
if (m_projectPart) {
if (projectPart->id() == m_projectPart->id())
return;
m_communicator.unregisterTranslationUnitsForEditor({fileContainerWithArguments()});
}
m_communicator.registerTranslationUnitsForEditor(
@@ -450,6 +442,13 @@ void ClangEditorDocumentProcessor::registerTranslationUnitForEditor(CppTools::Pr
ClangCodeModel::Utils::setLastSentDocumentRevision(filePath(), revision());
}
void ClangEditorDocumentProcessor::unregisterTranslationUnitForEditor()
{
QTC_ASSERT(m_projectPart, return);
m_communicator.unregisterTranslationUnitsForEditor(
{ClangBackEnd::FileContainer(filePath(), m_projectPart->id())});
}
void ClangEditorDocumentProcessor::updateTranslationUnitIfProjectPartExists()
{
if (m_projectPart) {
@@ -626,17 +625,6 @@ static QStringList fileArguments(const QString &filePath, CppTools::ProjectPart
+ precompiledHeaderOptions(filePath, projectPart);
}
ClangBackEnd::FileContainer
ClangEditorDocumentProcessor::fileContainerWithArguments(CppTools::ProjectPart *projectPart) const
{
const auto projectPartId = projectPart
? Utf8String::fromString(projectPart->id())
: Utf8String();
const QStringList theFileArguments = fileArguments(filePath(), projectPart);
return {filePath(), projectPartId, Utf8StringVector(theFileArguments), revision()};
}
ClangBackEnd::FileContainer
ClangEditorDocumentProcessor::fileContainerWithArgumentsAndDocumentContent(
CppTools::ProjectPart *projectPart) const

View File

@@ -52,7 +52,7 @@ class ClangEditorDocumentProcessor : public CppTools::BaseEditorDocumentProcesso
public:
ClangEditorDocumentProcessor(BackendCommunicator &communicator,
TextEditor::TextDocument *document);
~ClangEditorDocumentProcessor();
~ClangEditorDocumentProcessor() override;
// BaseEditorDocumentProcessor interface
void runImpl(const CppTools::BaseEditorDocumentParser::UpdateParams &updateParams) override;
@@ -92,7 +92,7 @@ public:
int line,
int column) override;
ClangBackEnd::FileContainer fileContainerWithArguments() const;
void unregisterTranslationUnitForEditor();
void clearDiagnosticsWithFixIts();
@@ -110,7 +110,6 @@ private:
HeaderErrorDiagnosticWidgetCreator creatorForHeaderErrorDiagnosticWidget(
const ClangBackEnd::DiagnosticContainer &firstHeaderErrorDiagnostic);
ClangBackEnd::FileContainer simpleFileContainer(const QByteArray &codecName = QByteArray()) const;
ClangBackEnd::FileContainer fileContainerWithArguments(CppTools::ProjectPart *projectPart) const;
ClangBackEnd::FileContainer fileContainerWithArgumentsAndDocumentContent(
CppTools::ProjectPart *projectPart) const;
ClangBackEnd::FileContainer fileContainerWithDocumentContent(const QString &projectpartId) const;

View File

@@ -102,17 +102,16 @@ static QFuture<CppTools::ToolTipInfo> editorDocumentHandlesToolTipInfo(
ClangHoverHandler::ClangHoverHandler()
{
setIsAsyncHandler(true);
}
ClangHoverHandler::~ClangHoverHandler()
{
cancelAsyncCheck();
abort();
}
void ClangHoverHandler::identifyMatchAsync(TextEditorWidget *editorWidget,
int pos,
BaseHoverHandler::ReportPriority report)
void ClangHoverHandler::identifyMatch(TextEditorWidget *editorWidget,
int pos,
BaseHoverHandler::ReportPriority report)
{
// Reset
m_futureWatcher.reset();
@@ -143,10 +142,12 @@ void ClangHoverHandler::identifyMatchAsync(TextEditorWidget *editorWidget,
report(Priority_None); // Ops, something went wrong.
}
void ClangHoverHandler::cancelAsyncCheck()
void ClangHoverHandler::abort()
{
if (m_futureWatcher)
if (m_futureWatcher) {
m_futureWatcher->cancel();
m_futureWatcher.reset();
}
}
#define RETURN_TEXT_FOR_CASE(enumValue) case TextEditor::HelpItem::enumValue: return #enumValue

View File

@@ -40,14 +40,14 @@ public:
ClangHoverHandler();
~ClangHoverHandler() override;
void identifyMatchAsync(TextEditor::TextEditorWidget *editorWidget,
int pos,
ReportPriority report) override;
void identifyMatch(TextEditor::TextEditorWidget *editorWidget,
int pos,
ReportPriority report) override;
void decorateToolTip() override;
void operateTooltip(TextEditor::TextEditorWidget *editorWidget, const QPoint &point) override;
private:
void cancelAsyncCheck() override;
void abort() override;
void processToolTipInfo(const CppTools::ToolTipInfo &info);
private:

View File

@@ -376,7 +376,7 @@ void ModelManagerSupportClang::unregisterTranslationUnitsWithProjectParts(
{
const auto processors = clangProcessorsWithProjectParts(projectPartIds);
foreach (ClangEditorDocumentProcessor *processor, processors) {
m_communicator.unregisterTranslationUnitsForEditor({processor->fileContainerWithArguments()});
processor->unregisterTranslationUnitForEditor();
processor->clearProjectPart();
processor->run();
}

View File

@@ -58,7 +58,7 @@ class ModelManagerSupportClang:
public:
ModelManagerSupportClang();
~ModelManagerSupportClang();
~ModelManagerSupportClang() override;
CppTools::CppCompletionAssistProvider *completionAssistProvider() override;
TextEditor::BaseHoverHandler *createHoverHandler() override;