summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2022-08-21 15:54:26 +0300
committerIvan Komissarov <ABBAPOH@gmail.com>2022-08-22 12:16:27 +0000
commitda99fd9fe7176c7a21f4e1fa834e7f7aed24e08e (patch)
tree6ece711095cb8b40420735662301ca5037864f60
parent3a177037a80e579a6767758b40dccd6f1acf3b68 (diff)
downloadqbs-da99fd9fe7176c7a21f4e1fa834e7f7aed24e08e.tar.gz
Minor refactor
Make module provider methods have similar signatures. Also, rename methods to avoid confusion with what they actually do. Change-Id: I8a905667f8f583537837d26c07ba62f093709997 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/lib/corelib/language/moduleloader.cpp2
-rw-r--r--src/lib/corelib/language/moduleproviderloader.cpp36
-rw-r--r--src/lib/corelib/language/moduleproviderloader.h25
3 files changed, 32 insertions, 31 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 574c03bfb..f17a4e200 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -3033,7 +3033,7 @@ Item *ModuleLoader::searchAndLoadModuleFile(ProductContext *productContext,
if (existingPaths.isEmpty()) { // no suitable names found, try to use providers
AccumulatingTimer providersTimer(
m_parameters.logElapsedTime() ? &m_elapsedTimeModuleProviders : nullptr);
- auto result = m_moduleProviderLoader->executeModuleProvider(
+ auto result = m_moduleProviderLoader->executeModuleProviders(
*productContext,
dependsItemLocation,
moduleName,
diff --git a/src/lib/corelib/language/moduleproviderloader.cpp b/src/lib/corelib/language/moduleproviderloader.cpp
index 49c77b7fc..8ff08a1b7 100644
--- a/src/lib/corelib/language/moduleproviderloader.cpp
+++ b/src/lib/corelib/language/moduleproviderloader.cpp
@@ -71,7 +71,7 @@ ModuleProviderLoader::ModuleProviderLoader(ItemReader *reader, Evaluator *evalua
{
}
-ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::executeModuleProvider(
+ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::executeModuleProviders(
ProductContext &productContext,
const CodeLocation &dependsItemLocation,
const QualifiedId &moduleName,
@@ -91,33 +91,33 @@ ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::executeModulePr
providersToRun.push_back({providerName, ModuleProviderLookup::Scoped});
}
}
- result = findModuleProvider(providersToRun, productContext, dependsItemLocation);
+ result = executeModuleProvidersHelper(productContext, dependsItemLocation, providersToRun);
if (fallbackMode == FallbackMode::Enabled
&& !result.providerFound
&& !providerNames) {
qCDebug(lcModuleLoader) << "Specific module provider not found for"
<< moduleName.toString() << ", setting up fallback.";
- result = findModuleProvider(
- {{moduleName, ModuleProviderLookup::Fallback}},
+ result = executeModuleProvidersHelper(
productContext,
- dependsItemLocation);
+ dependsItemLocation,
+ {{moduleName, ModuleProviderLookup::Fallback}});
}
return result;
}
-ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::findModuleProvider(
- const std::vector<Provider> &providers,
+ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::executeModuleProvidersHelper(
ProductContext &product,
- const CodeLocation &dependsItemLocation)
+ const CodeLocation &dependsItemLocation,
+ const std::vector<Provider> &providers)
{
if (providers.empty())
return {};
QStringList allSearchPaths;
ModuleProviderResult result;
for (const auto &[name, lookupType] : providers) {
- const QVariantMap config = moduleProviderConfig(product).value(name.toString()).toMap();
+ const QVariantMap config = getModuleProviderConfig(product).value(name.toString()).toMap();
ModuleProviderInfo &info =
m_storedModuleProviderInfo.providers[{name.toString(), config, int(lookupType)}];
const bool fromCache = !info.name.isEmpty();
@@ -127,8 +127,8 @@ ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::findModuleProvi
info.providerFile = findModuleProviderFile(name, lookupType);
if (!info.providerFile.isEmpty()) {
qCDebug(lcModuleLoader) << "Running provider" << name << "at" << info.providerFile;
- info.searchPaths = getProviderSearchPaths(
- name, info.providerFile, product, config, dependsItemLocation);
+ info.searchPaths = evaluateModuleProvider(
+ product, dependsItemLocation, name, info.providerFile, config);
info.transientOutput = m_parameters.dryRun();
}
}
@@ -160,7 +160,7 @@ ModuleProviderLoader::ModuleProviderResult ModuleProviderLoader::findModuleProvi
return result;
}
-QVariantMap ModuleProviderLoader::moduleProviderConfig(
+QVariantMap ModuleProviderLoader::getModuleProviderConfig(
ProductContext &product)
{
if (product.theModuleProviderConfig)
@@ -228,7 +228,7 @@ std::optional<std::vector<QualifiedId>> ModuleProviderLoader::getModuleProviders
}
QString ModuleProviderLoader::findModuleProviderFile(
- const QualifiedId &name, ModuleProviderLookup lookupType)
+ const QualifiedId &name, ModuleProviderLookup lookupType)
{
for (const QString &path : m_reader->allSearchPaths()) {
QString fullPath = FileInfo::resolvePath(path, QStringLiteral("module-providers"));
@@ -260,12 +260,12 @@ QString ModuleProviderLoader::findModuleProviderFile(
return {};
}
-QStringList ModuleProviderLoader::getProviderSearchPaths(
+QStringList ModuleProviderLoader::evaluateModuleProvider(
+ ProductContext &product,
+ const CodeLocation &dependsItemLocation,
const QualifiedId &name,
const QString &providerFile,
- ProductContext &product,
- const QVariantMap &moduleConfig,
- const CodeLocation &location)
+ const QVariantMap &moduleConfig)
{
QTemporaryFile dummyItemFile;
if (!dummyItemFile.open()) {
@@ -296,7 +296,7 @@ QStringList ModuleProviderLoader::getProviderSearchPaths(
stream << "}" << endl;
stream.flush();
Item * const providerItem =
- m_reader->readFile(dummyItemFile.fileName(), location);
+ m_reader->readFile(dummyItemFile.fileName(), dependsItemLocation);
if (providerItem->type() != ItemType::ModuleProvider) {
throw ErrorInfo(Tr::tr("File '%1' declares an item of type '%2', "
"but '%3' was expected.")
diff --git a/src/lib/corelib/language/moduleproviderloader.h b/src/lib/corelib/language/moduleproviderloader.h
index b0571a548..ce1ec7f0a 100644
--- a/src/lib/corelib/language/moduleproviderloader.h
+++ b/src/lib/corelib/language/moduleproviderloader.h
@@ -93,29 +93,30 @@ public:
m_parameters = std::move(parameters);
}
- ModuleProviderResult executeModuleProvider(
+ const Set<QString> &tempQbsFiles() const { return m_tempQbsFiles; }
+
+ ModuleProviderResult executeModuleProviders(
ProductContext &productContext,
const CodeLocation &dependsItemLocation,
const QualifiedId &moduleName,
FallbackMode fallbackMode);
- ModuleProviderResult findModuleProvider(
- const std::vector<Provider> &providers,
- ProductContext &product,
- const CodeLocation &dependsItemLocation);
- QVariantMap moduleProviderConfig(ProductContext &product);
- const Set<QString> &tempQbsFiles() const { return m_tempQbsFiles; }
+private:
+ ModuleProviderResult executeModuleProvidersHelper(
+ ProductContext &product,
+ const CodeLocation &dependsItemLocation,
+ const std::vector<Provider> &providers);
+ QVariantMap getModuleProviderConfig(ProductContext &product);
std::optional<std::vector<QualifiedId>> getModuleProviders(Item *item);
-private:
QString findModuleProviderFile(const QualifiedId &name, ModuleProviderLookup lookupType);
- QStringList getProviderSearchPaths(
+ QStringList evaluateModuleProvider(
+ ProductContext &product,
+ const CodeLocation &location,
const QualifiedId &name,
const QString &providerFile,
- ProductContext &product,
- const QVariantMap &moduleConfig,
- const CodeLocation &location);
+ const QVariantMap &moduleConfig);
private:
ItemReader *const m_reader{nullptr};