diff --git a/src/plugins/clangtools/documentclangtoolrunner.cpp b/src/plugins/clangtools/documentclangtoolrunner.cpp index a73df0e89b7..7cae31be1c2 100644 --- a/src/plugins/clangtools/documentclangtoolrunner.cpp +++ b/src/plugins/clangtools/documentclangtoolrunner.cpp @@ -218,30 +218,21 @@ void DocumentClangToolRunner::run() runNext(); } -QPair getClangIncludeDirAndVersion(ClangToolRunner *runner) -{ - static QMap> cache; - const FilePath tool = runner->executable(); - auto it = cache.find(tool); - if (it == cache.end()) - it = cache.insert(tool, getClangIncludeDirAndVersion(tool)); - return it.value(); -} - void DocumentClangToolRunner::runNext() { if (m_currentRunner) m_currentRunner.release()->deleteLater(); m_currentRunner.reset(m_runnerCreators.isEmpty() ? nullptr : m_runnerCreators.takeFirst()()); if (m_currentRunner) { - auto [clangIncludeDir, clangVersion] = getClangIncludeDirAndVersion(m_currentRunner.get()); + const auto [clangIncludeDir, clangVersion] = getClangIncludeDirAndVersion( + m_currentRunner->executable()); qCDebug(LOG) << Q_FUNC_INFO << m_currentRunner->executable() << clangIncludeDir << clangVersion << m_fileInfo.file; if (m_currentRunner->executable().isEmpty() || clangIncludeDir.isEmpty() || clangVersion.isEmpty() || (m_document->isModified() && !m_currentRunner->supportsVFSOverlay())) { runNext(); } else { - AnalyzeUnit unit(m_fileInfo, clangIncludeDir, clangVersion); + const AnalyzeUnit unit(m_fileInfo, clangIncludeDir, clangVersion); QTC_ASSERT(FilePath::fromString(unit.file).exists(), runNext(); return;); m_currentRunner->setVFSOverlay(vfso().overlayFilePath().toString()); if (!m_currentRunner->run(unit.file, unit.arguments)) diff --git a/src/plugins/clangtools/executableinfo.cpp b/src/plugins/clangtools/executableinfo.cpp index c914832d8ce..ffdd635b5f1 100644 --- a/src/plugins/clangtools/executableinfo.cpp +++ b/src/plugins/clangtools/executableinfo.cpp @@ -214,7 +214,7 @@ QString queryVersion(const FilePath &clangToolPath, QueryFailMode failMode) return {}; } -QPair getClangIncludeDirAndVersion(const FilePath &clangToolPath) +static QPair clangIncludeDirAndVersion(const FilePath &clangToolPath) { const FilePath dynamicResourceDir = queryResourceDir(clangToolPath); const QString dynamicVersion = queryVersion(clangToolPath, QueryFailMode::Noisy); @@ -223,6 +223,15 @@ QPair getClangIncludeDirAndVersion(const FilePath &clangToolP return {dynamicResourceDir / "include", dynamicVersion}; } +QPair getClangIncludeDirAndVersion(const FilePath &clangToolPath) +{ + static QMap> cache; + auto it = cache.find(clangToolPath); + if (it == cache.end()) + it = cache.insert(clangToolPath, clangIncludeDirAndVersion(clangToolPath)); + return it.value(); +} + QHash> ClazyStandaloneInfo::cache; } // namespace Internal