From d7b648abdb4bb27dcd65df1545c0b11b4f9ed896 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 7 Mar 2016 16:20:50 +0100 Subject: [PATCH] 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 --- .../clangbackend/ipcsource/clangtranslationunit.h | 3 ++- .../clangbackend/ipcsource/codecompleter.cpp | 15 ++++++++++++--- src/tools/clangbackend/ipcsource/codecompleter.h | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/tools/clangbackend/ipcsource/clangtranslationunit.h b/src/tools/clangbackend/ipcsource/clangtranslationunit.h index 467c9346523..9a311b62bfd 100644 --- a/src/tools/clangbackend/ipcsource/clangtranslationunit.h +++ b/src/tools/clangbackend/ipcsource/clangtranslationunit.h @@ -139,6 +139,8 @@ public: SkippedSourceRanges skippedSourceRanges() const; + static uint defaultOptions(); + private: void setDirty(); void checkIfNull() const; @@ -152,7 +154,6 @@ private: void reparseTranslationUnit() const; void reparseTranslationUnitIfFilesAreChanged() const; void updateIncludeFilePaths() const; - static uint defaultOptions(); static void includeCallback(CXFile included_file, CXSourceLocation * /*inclusion_stack*/, unsigned /*include_len*/, diff --git a/src/tools/clangbackend/ipcsource/codecompleter.cpp b/src/tools/clangbackend/ipcsource/codecompleter.cpp index 691686d0479..7381ac2d27f 100644 --- a/src/tools/clangbackend/ipcsource/codecompleter.cpp +++ b/src/tools/clangbackend/ipcsource/codecompleter.cpp @@ -84,15 +84,13 @@ ClangCodeCompleteResults CodeCompleter::complete(uint line, CXUnsavedFile *unsavedFiles, unsigned unsavedFileCount) { - const auto options = CXCodeComplete_IncludeMacros | CXCodeComplete_IncludeCodePatterns; - return clang_codeCompleteAt(translationUnit.cxTranslationUnitWithoutReparsing(), translationUnit.filePath().constData(), line, column, unsavedFiles, unsavedFileCount, - options); + defaultOptions()); } 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(), '.'); } +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 results; diff --git a/src/tools/clangbackend/ipcsource/codecompleter.h b/src/tools/clangbackend/ipcsource/codecompleter.h index 99749414f4b..260ac4d581c 100644 --- a/src/tools/clangbackend/ipcsource/codecompleter.h +++ b/src/tools/clangbackend/ipcsource/codecompleter.h @@ -50,6 +50,8 @@ public: // for tests bool hasDotAt(uint line, uint column) const; private: + uint defaultOptions() const; + ClangCodeCompleteResults complete(uint line, uint column, CXUnsavedFile *unsavedFiles,