diff options
author | Raphael Cotty <raphael.cotty@gmail.com> | 2022-01-21 16:09:20 +0100 |
---|---|---|
committer | Raphaƫl Cotty <raphael.cotty@gmail.com> | 2022-02-08 08:06:50 +0000 |
commit | afcda641beb222811d82d1fc75efd8a82653b66f (patch) | |
tree | 0fdc02f1317d837b5646951c54383b53c7fd6189 /src | |
parent | 916ff690b3acaf89a499628b8489f2f2d5649bde (diff) | |
download | qbs-afcda641beb222811d82d1fc75efd8a82653b66f.tar.gz |
Add probe items in module providers
Probes can now be used in the ModuleProvider item.
Change-Id: If1bf07269aa7d9c3c9dd8a41ac4bd3d259393a49
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/corelib/language/builtindeclarations.cpp | 1 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 3 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleproviderloader.cpp | 8 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleproviderloader.h | 5 |
4 files changed, 14 insertions, 3 deletions
diff --git a/src/lib/corelib/language/builtindeclarations.cpp b/src/lib/corelib/language/builtindeclarations.cpp index 7266333f5..7004244fa 100644 --- a/src/lib/corelib/language/builtindeclarations.cpp +++ b/src/lib/corelib/language/builtindeclarations.cpp @@ -328,6 +328,7 @@ void BuiltinDeclarations::addModuleProviderItem() << PropertyDeclaration(QStringLiteral("outputBaseDir"), PropertyDeclaration::String) << PropertyDeclaration(QStringLiteral("relativeSearchPaths"), PropertyDeclaration::StringList); + item.setAllowedChildTypes({ItemType::Probe}); insert(item); } diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index 52381465a..574c03bfb 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -242,7 +242,8 @@ ModuleLoader::ModuleLoader(Evaluator *evaluator, Logger &logger) , m_evaluator(evaluator) , m_probesResolver(std::make_unique<ProbesResolver>(m_evaluator, m_logger)) , m_moduleProviderLoader( - std::make_unique<ModuleProviderLoader>(m_reader.get(), m_evaluator, m_logger)) + std::make_unique<ModuleProviderLoader>(m_reader.get(), m_evaluator, m_probesResolver.get(), + m_logger)) { } diff --git a/src/lib/corelib/language/moduleproviderloader.cpp b/src/lib/corelib/language/moduleproviderloader.cpp index 309e01e2c..49c77b7fc 100644 --- a/src/lib/corelib/language/moduleproviderloader.cpp +++ b/src/lib/corelib/language/moduleproviderloader.cpp @@ -44,6 +44,7 @@ #include "evaluator.h" #include "itemreader.h" #include "moduleloader.h" +#include "probesresolver.h" #include <language/scriptengine.h> #include <language/value.h> @@ -61,9 +62,11 @@ namespace qbs { namespace Internal { -ModuleProviderLoader::ModuleProviderLoader(ItemReader *reader, Evaluator *evaluator, Logger &logger) +ModuleProviderLoader::ModuleProviderLoader(ItemReader *reader, Evaluator *evaluator, + ProbesResolver *probesResolver, Logger &logger) : m_reader(reader) , m_evaluator(evaluator) + , m_probesResolver(probesResolver) , m_logger(logger) { } @@ -302,6 +305,9 @@ QStringList ModuleProviderLoader::getProviderSearchPaths( } providerItem->setParent(product.item); providerItem->overrideProperties(moduleConfig, name.toString(), m_parameters, m_logger); + + m_probesResolver->resolveProbes(&product, providerItem); + EvalContextSwitcher contextSwitcher(m_evaluator->engine(), EvalContext::ModuleProvider); return m_evaluator->stringListValue(providerItem, QStringLiteral("searchPaths")); } diff --git a/src/lib/corelib/language/moduleproviderloader.h b/src/lib/corelib/language/moduleproviderloader.h index 13eddc2b0..b0571a548 100644 --- a/src/lib/corelib/language/moduleproviderloader.h +++ b/src/lib/corelib/language/moduleproviderloader.h @@ -43,6 +43,7 @@ #include "moduleloader.h" #include "moduleproviderinfo.h" +#include "probesresolver.h" #include <QtCore/qmap.h> #include <QtCore/qvariant.h> @@ -57,7 +58,8 @@ class ModuleProviderLoader public: using ProductContext = ModuleLoader::ProductContext; using FallbackMode = ModuleLoader::FallbackMode; - explicit ModuleProviderLoader(ItemReader *itemReader, Evaluator *evaluator, Logger &logger); + explicit ModuleProviderLoader(ItemReader *itemReader, Evaluator *evaluator, + ProbesResolver *probesResolver, Logger &logger); enum class ModuleProviderLookup { Scoped, Named, Fallback }; @@ -118,6 +120,7 @@ private: private: ItemReader *const m_reader{nullptr}; Evaluator *const m_evaluator{nullptr}; + ProbesResolver *const m_probesResolver{nullptr}; SetupProjectParameters m_parameters; Logger &m_logger; |