Clang: Reparse only if files are changed

Includes are now watched by a file watcher. Unsaved file changes are
watched too. If they are changed the translation units which depend on
them are set to a state which require a reparse. Later the diagnostics
of this units are collected and send back to creator.

Change-Id: I2fb5c7dd6644687f22399edd8d18edd6215c9505
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
Marco Bubke
2015-08-31 12:40:14 +02:00
parent aa6aaee510
commit f2b7371af1
39 changed files with 800 additions and 242 deletions

View File

@@ -30,7 +30,9 @@
#include <clangcodecompleteresults.h>
#include <projectpart.h>
#include <projects.h>
#include <translationunit.h>
#include <translationunits.h>
#include <unsavedfiles.h>
#include <utf8string.h>
@@ -51,8 +53,12 @@ using ClangBackEnd::ProjectPart;
TEST(ClangCodeCompleteResults, GetData)
{
ProjectPart projectPart(Utf8StringLiteral("projectPartId"));
UnsavedFiles unsavedFiles;
TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), unsavedFiles, projectPart);
ClangBackEnd::ProjectParts projects;
ClangBackEnd::UnsavedFiles unsavedFiles;
ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles};
TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"),
projectPart,
translationUnits);
CXCodeCompleteResults *cxCodeCompleteResults = clang_codeCompleteAt(translationUnit.cxTranslationUnit(), translationUnit.filePath().constData(), 49, 1, 0, 0, 0);
ClangCodeCompleteResults codeCompleteResults(cxCodeCompleteResults);
@@ -72,8 +78,12 @@ TEST(ClangCodeCompleteResults, GetInvalidData)
TEST(ClangCodeCompleteResults, MoveClangCodeCompleteResults)
{
ProjectPart projectPart(Utf8StringLiteral("projectPartId"));
UnsavedFiles unsavedFiles;
TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), unsavedFiles, projectPart);
ClangBackEnd::ProjectParts projects;
ClangBackEnd::UnsavedFiles unsavedFiles;
ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles};
TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"),
projectPart,
translationUnits);
CXCodeCompleteResults *cxCodeCompleteResults = clang_codeCompleteAt(translationUnit.cxTranslationUnit(), translationUnit.filePath().constData(), 49, 1, 0, 0, 0);
ClangCodeCompleteResults codeCompleteResults(cxCodeCompleteResults);