forked from qt-creator/qt-creator
Clang: Don't reparse before code completion
Task-number: QTCREATORBUG-15365 Change-Id: I37f623449fa95268f1a0a5d5e66d75df0582c183 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
committed by
Nikolai Kosjar
parent
2186e42697
commit
514a96c75f
@@ -66,7 +66,7 @@
|
|||||||
namespace ClangBackEnd {
|
namespace ClangBackEnd {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const int delayedDocumentAnnotationsTimerInterval = 300;
|
const int delayedDocumentAnnotationsTimerInterval = 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangIpcServer::ClangIpcServer()
|
ClangIpcServer::ClangIpcServer()
|
||||||
|
@@ -173,12 +173,19 @@ CXIndex TranslationUnit::index() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
CXTranslationUnit TranslationUnit::cxTranslationUnit() const
|
CXTranslationUnit TranslationUnit::cxTranslationUnit() const
|
||||||
|
{
|
||||||
|
cxTranslationUnitWithoutReparsing();
|
||||||
|
reparseTranslationUnitIfFilesAreChanged();
|
||||||
|
|
||||||
|
return d->translationUnit;
|
||||||
|
}
|
||||||
|
|
||||||
|
CXTranslationUnit TranslationUnit::cxTranslationUnitWithoutReparsing() const
|
||||||
{
|
{
|
||||||
checkIfNull();
|
checkIfNull();
|
||||||
checkIfFileExists();
|
checkIfFileExists();
|
||||||
removeTranslationUnitIfProjectPartWasChanged();
|
removeTranslationUnitIfProjectPartWasChanged();
|
||||||
createTranslationUnitIfNeeded();
|
createTranslationUnitIfNeeded();
|
||||||
reparseTranslationUnitIfFilesAreChanged();
|
|
||||||
|
|
||||||
return d->translationUnit;
|
return d->translationUnit;
|
||||||
}
|
}
|
||||||
|
@@ -97,6 +97,7 @@ public:
|
|||||||
|
|
||||||
CXIndex index() const;
|
CXIndex index() const;
|
||||||
CXTranslationUnit cxTranslationUnit() const;
|
CXTranslationUnit cxTranslationUnit() const;
|
||||||
|
CXTranslationUnit cxTranslationUnitWithoutReparsing() const;
|
||||||
CXUnsavedFile * cxUnsavedFiles() const;
|
CXUnsavedFile * cxUnsavedFiles() const;
|
||||||
uint unsavedFilesCount() const;
|
uint unsavedFilesCount() const;
|
||||||
|
|
||||||
|
@@ -49,7 +49,7 @@ CodeCompleter::CodeCompleter(TranslationUnit translationUnit)
|
|||||||
|
|
||||||
CodeCompletions CodeCompleter::complete(uint line, uint column)
|
CodeCompletions CodeCompleter::complete(uint line, uint column)
|
||||||
{
|
{
|
||||||
ClangCodeCompleteResults completeResults(clang_codeCompleteAt(translationUnit.cxTranslationUnit(),
|
ClangCodeCompleteResults completeResults(clang_codeCompleteAt(translationUnit.cxTranslationUnitWithoutReparsing(),
|
||||||
translationUnit.filePath().constData(),
|
translationUnit.filePath().constData(),
|
||||||
line,
|
line,
|
||||||
column,
|
column,
|
||||||
|
@@ -225,7 +225,7 @@ TEST_F(CodeCompleter, DISABLED_FunctionInChangedIncludedHeader)
|
|||||||
CodeCompletion::FunctionCompletionKind)));
|
CodeCompletion::FunctionCompletionKind)));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CodeCompleter, FunctionInChangedIncludedHeaderWithUnsavedContentInMainFile)
|
TEST_F(CodeCompleter, DISABLED_FunctionInChangedIncludedHeaderWithUnsavedContentInMainFile) // it's not that bad because we reparse anyway
|
||||||
{
|
{
|
||||||
unsavedFiles.createOrUpdate({unsavedMainFileContainer});
|
unsavedFiles.createOrUpdate({unsavedMainFileContainer});
|
||||||
translationUnits.update({unsavedMainFileContainer});
|
translationUnits.update({unsavedMainFileContainer});
|
||||||
|
Reference in New Issue
Block a user