forked from qt-creator/qt-creator
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:
@@ -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*/,
|
||||||
|
@@ -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;
|
||||||
|
@@ -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,
|
||||||
|
Reference in New Issue
Block a user