aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorRaphael Cotty <raphael.cotty@gmail.com>2022-01-21 16:09:20 +0100
committerRaphaƫl Cotty <raphael.cotty@gmail.com>2022-02-08 08:06:50 +0000
commitafcda641beb222811d82d1fc75efd8a82653b66f (patch)
tree0fdc02f1317d837b5646951c54383b53c7fd6189 /src/lib
parent916ff690b3acaf89a499628b8489f2f2d5649bde (diff)
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/lib')
-rw-r--r--src/lib/corelib/language/builtindeclarations.cpp1
-rw-r--r--src/lib/corelib/language/moduleloader.cpp3
-rw-r--r--src/lib/corelib/language/moduleproviderloader.cpp8
-rw-r--r--src/lib/corelib/language/moduleproviderloader.h5
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;