Clang: Make translation unit and code completion options consistent

...otherwise we might run into the following assertion:

Assertion failed: (IncludeBriefComments ==
        this->IncludeBriefCommentsInCodeCompletion), function CodeComplete, file
        ASTUnit.cpp, line 2411.

Change-Id: I4723b600c7ac5aa2b4c1cb1827f51156afb492b8
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2016-03-07 16:20:50 +01:00
parent 768c900990
commit d7b648abdb
3 changed files with 16 additions and 4 deletions

View File

@@ -139,6 +139,8 @@ public:
SkippedSourceRanges skippedSourceRanges() const; SkippedSourceRanges skippedSourceRanges() const;
static uint defaultOptions();
private: private:
void setDirty(); void setDirty();
void checkIfNull() const; void checkIfNull() const;
@@ -152,7 +154,6 @@ private:
void reparseTranslationUnit() const; void reparseTranslationUnit() const;
void reparseTranslationUnitIfFilesAreChanged() const; void reparseTranslationUnitIfFilesAreChanged() const;
void updateIncludeFilePaths() const; void updateIncludeFilePaths() const;
static uint defaultOptions();
static void includeCallback(CXFile included_file, static void includeCallback(CXFile included_file,
CXSourceLocation * /*inclusion_stack*/, CXSourceLocation * /*inclusion_stack*/,
unsigned /*include_len*/, unsigned /*include_len*/,

View File

@@ -84,15 +84,13 @@ ClangCodeCompleteResults CodeCompleter::complete(uint line,
CXUnsavedFile *unsavedFiles, CXUnsavedFile *unsavedFiles,
unsigned unsavedFileCount) unsigned unsavedFileCount)
{ {
const auto options = CXCodeComplete_IncludeMacros | CXCodeComplete_IncludeCodePatterns;
return clang_codeCompleteAt(translationUnit.cxTranslationUnitWithoutReparsing(), return clang_codeCompleteAt(translationUnit.cxTranslationUnitWithoutReparsing(),
translationUnit.filePath().constData(), translationUnit.filePath().constData(),
line, line,
column, column,
unsavedFiles, unsavedFiles,
unsavedFileCount, unsavedFileCount,
options); defaultOptions());
} }
bool CodeCompleter::hasDotAt(uint line, uint column) const bool CodeCompleter::hasDotAt(uint line, uint column) const
@@ -103,6 +101,17 @@ bool CodeCompleter::hasDotAt(uint line, uint column) const
return unsavedFile.hasCharacterAt(location.offset(), '.'); return unsavedFile.hasCharacterAt(location.offset(), '.');
} }
uint CodeCompleter::defaultOptions() const
{
uint options = CXCodeComplete_IncludeMacros
| CXCodeComplete_IncludeCodePatterns;
if (translationUnit.defaultOptions() & CXTranslationUnit_IncludeBriefCommentsInCodeCompletion)
options |= CXCodeComplete_IncludeBriefComments;
return options;
}
ClangCodeCompleteResults CodeCompleter::completeWithArrowInsteadOfDot(uint line, uint column) ClangCodeCompleteResults CodeCompleter::completeWithArrowInsteadOfDot(uint line, uint column)
{ {
ClangCodeCompleteResults results; ClangCodeCompleteResults results;

View File

@@ -50,6 +50,8 @@ public: // for tests
bool hasDotAt(uint line, uint column) const; bool hasDotAt(uint line, uint column) const;
private: private:
uint defaultOptions() const;
ClangCodeCompleteResults complete(uint line, ClangCodeCompleteResults complete(uint line,
uint column, uint column,
CXUnsavedFile *unsavedFiles, CXUnsavedFile *unsavedFiles,