ClangCodeModel: Enable clangd's new "dirty headers" flag, if possible

This feature will be availabe with LLVM 14,
see https://reviews.llvm.org/D95046.

Task-number: QTCREATORBUG-26810
Change-Id: I0a6797a836c56f5b72cca34be8f2d3edf8ac7359
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2022-01-18 12:29:12 +01:00
parent 13af635b5e
commit cfae24a6e5
3 changed files with 4 additions and 1 deletions

View File

@@ -613,6 +613,8 @@ static BaseClientInterface *clientInterface(Project *project, const Utils::FileP
cmd.addArg("--compile-commands-dir=" + jsonDbDir.toString()); cmd.addArg("--compile-commands-dir=" + jsonDbDir.toString());
if (clangdLogServer().isDebugEnabled()) if (clangdLogServer().isDebugEnabled())
cmd.addArgs({"--log=verbose", "--pretty"}); cmd.addArgs({"--log=verbose", "--pretty"});
if (settings.clangdVersion() >= QVersionNumber(14))
cmd.addArg("--use-dirty-headers");
const auto interface = new StdIOClientInterface; const auto interface = new StdIOClientInterface;
interface->setCommandLine(cmd); interface->setCommandLine(cmd);
return interface; return interface;

View File

@@ -335,7 +335,7 @@ ClangdSettings::ClangdSettings()
bool ClangdSettings::useClangd() const bool ClangdSettings::useClangd() const
{ {
return m_data.useClangd && clangdVersion(clangdFilePath()) >= QVersionNumber(13); return m_data.useClangd && clangdVersion() >= QVersionNumber(13);
} }
void ClangdSettings::setDefaultClangdPath(const FilePath &filePath) void ClangdSettings::setDefaultClangdPath(const FilePath &filePath)

View File

@@ -147,6 +147,7 @@ public:
Data data() const { return m_data; } Data data() const { return m_data; }
static QVersionNumber clangdVersion(const Utils::FilePath &clangdFilePath); static QVersionNumber clangdVersion(const Utils::FilePath &clangdFilePath);
QVersionNumber clangdVersion() const { return clangdVersion(clangdFilePath()); }
#ifdef WITH_TESTS #ifdef WITH_TESTS
static void setUseClangd(bool use); static void setUseClangd(bool use);