Clang: Use completion through backend process

This makes us independent of libclang crashes for completion.
Re-parsing for highlighting still happens in the Qt Creator process.

Run in verbose mode:
    qtc.clangcodemodel.ipc=true

Run tests:
    -test "ClangCodeModel"

Task-number: QTCREATORBUG-14108
Task-number: QTCREATORBUG-12819
Change-Id: Id3e95bd2afdb6508bbd1d35fddc69534a909b905
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2015-05-08 15:48:17 +02:00
parent 264132da27
commit 23b8a3b2e8
59 changed files with 3820 additions and 634 deletions

View File

@@ -38,15 +38,20 @@
#include <cpptools/semantichighlighter.h>
#include <QFutureWatcher>
#include <QPointer>
namespace ClangCodeModel {
namespace Internal {
class ModelManagerSupportClang;
class ClangEditorDocumentProcessor : public CppTools::BaseEditorDocumentProcessor
{
Q_OBJECT
public:
ClangEditorDocumentProcessor(TextEditor::TextDocument *document);
ClangEditorDocumentProcessor(ModelManagerSupportClang *modelManagerSupport,
TextEditor::TextDocument *document);
~ClangEditorDocumentProcessor();
// BaseEditorDocumentProcessor interface
@@ -61,6 +66,8 @@ private slots:
void onParserFinished();
private:
QPointer<ModelManagerSupportClang> m_modelManagerSupport;
ClangEditorDocumentParser m_parser;
QFutureWatcher<void> m_parserWatcher;
unsigned m_parserRevision;
@@ -69,6 +76,7 @@ private:
CppTools::BuiltinEditorDocumentProcessor m_builtinProcessor;
};
} // namespace Internal
} // namespace ClangCodeModel
#endif // CLANGEDITORDOCUMENTPROCESSOR_H