aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/corelib/buildgraph/jscommandexecutor.cpp6
-rw-r--r--src/lib/corelib/buildgraph/rulesevaluationcontext.cpp5
-rw-r--r--src/lib/corelib/buildgraph/rulesevaluationcontext.h4
-rw-r--r--src/lib/corelib/language/moduleloader.cpp6
-rw-r--r--src/lib/corelib/language/scriptengine.cpp8
-rw-r--r--src/lib/corelib/language/scriptengine.h6
-rw-r--r--src/packages/archive/archive.qbs1
7 files changed, 18 insertions, 18 deletions
diff --git a/src/lib/corelib/buildgraph/jscommandexecutor.cpp b/src/lib/corelib/buildgraph/jscommandexecutor.cpp
index c933a6a35..abebc82b8 100644
--- a/src/lib/corelib/buildgraph/jscommandexecutor.cpp
+++ b/src/lib/corelib/buildgraph/jscommandexecutor.cpp
@@ -184,12 +184,12 @@ private:
ScriptEngine *provideScriptEngine()
{
if (!m_scriptEngine)
- m_scriptEngine = ScriptEngine::create(m_logger, EvalContext::JsCommand, this);
- return m_scriptEngine;
+ m_scriptEngine = ScriptEngine::create(m_logger, EvalContext::JsCommand);
+ return m_scriptEngine.get();
}
Logger m_logger;
- ScriptEngine *m_scriptEngine;
+ std::unique_ptr<ScriptEngine> m_scriptEngine;
JavaScriptCommandResult m_result;
bool m_running = false;
bool m_cancelled = false;
diff --git a/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp b/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp
index 6ae230329..0422b9288 100644
--- a/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp
+++ b/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp
@@ -65,10 +65,7 @@ RulesEvaluationContext::RulesEvaluationContext(Logger logger)
JavaScriptCommand::setupForJavaScript(m_prepareScriptScope);
}
-RulesEvaluationContext::~RulesEvaluationContext()
-{
- delete m_engine;
-}
+RulesEvaluationContext::~RulesEvaluationContext() = default;
void RulesEvaluationContext::initializeObserver(const QString &description, int maximumProgress)
{
diff --git a/src/lib/corelib/buildgraph/rulesevaluationcontext.h b/src/lib/corelib/buildgraph/rulesevaluationcontext.h
index a5d81ce61..bb7955496 100644
--- a/src/lib/corelib/buildgraph/rulesevaluationcontext.h
+++ b/src/lib/corelib/buildgraph/rulesevaluationcontext.h
@@ -69,7 +69,7 @@ public:
RulesEvaluationContext * const m_evalContext;
};
- ScriptEngine *engine() const { return m_engine; }
+ ScriptEngine *engine() const { return m_engine.get(); }
QScriptValue scope() const { return m_scope; }
void setObserver(ProgressObserver *observer) { m_observer = observer; }
@@ -85,7 +85,7 @@ private:
void cleanupScope();
Logger m_logger;
- ScriptEngine * const m_engine;
+ const std::unique_ptr<ScriptEngine> m_engine;
ProgressObserver *m_observer;
unsigned int m_initScopeCalls;
QScriptValue m_scope;
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 952fa9ed6..6b800fa0b 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -3349,7 +3349,7 @@ static std::vector<std::pair<QualifiedId, ItemValuePtr>> instanceItemProperties(
{
std::vector<std::pair<QualifiedId, ItemValuePtr>> result;
QualifiedId name;
- std::function<void(Item *)> f = [&] (Item *item) {
+ const auto func = [&] (Item *item, const auto &f) -> void {
for (auto it = item->properties().begin(), end = item->properties().end();
it != end; ++it) {
if (it.value()->type() != Value::ItemValueType)
@@ -3359,13 +3359,13 @@ static std::vector<std::pair<QualifiedId, ItemValuePtr>> instanceItemProperties(
continue;
name.push_back(it.key());
if (itemValue->item()->type() == ItemType::ModulePrefix)
- f(itemValue->item());
+ f(itemValue->item(), f);
else
result.emplace_back(name, itemValue);
name.removeLast();
}
};
- f(item);
+ func(item, func);
return result;
}
diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp
index 8b3d6fa76..1533bd210 100644
--- a/src/lib/corelib/language/scriptengine.cpp
+++ b/src/lib/corelib/language/scriptengine.cpp
@@ -99,8 +99,8 @@ uint qHash(const ScriptEngine::PropertyCacheKey &k, uint seed = 0)
std::mutex ScriptEngine::m_creationDestructionMutex;
-ScriptEngine::ScriptEngine(Logger &logger, EvalContext evalContext, QObject *parent)
- : QScriptEngine(parent), m_scriptImporter(new ScriptImporter(this)),
+ScriptEngine::ScriptEngine(Logger &logger, EvalContext evalContext, PrivateTag)
+ : m_scriptImporter(new ScriptImporter(this)),
m_modulePropertyScriptClass(nullptr),
m_propertyCacheEnabled(true), m_active(false), m_logger(logger), m_evalContext(evalContext),
m_observer(new PrepareScriptObserver(this, UnobserveMode::Disabled))
@@ -118,10 +118,10 @@ ScriptEngine::ScriptEngine(Logger &logger, EvalContext evalContext, QObject *par
extendJavaScriptBuiltins();
}
-ScriptEngine *ScriptEngine::create(Logger &logger, EvalContext evalContext, QObject *parent)
+std::unique_ptr<ScriptEngine> ScriptEngine::create(Logger &logger, EvalContext evalContext)
{
std::lock_guard<std::mutex> lock(m_creationDestructionMutex);
- return new ScriptEngine(logger, evalContext, parent);
+ return std::make_unique<ScriptEngine>(logger, evalContext, PrivateTag());
}
ScriptEngine::~ScriptEngine()
diff --git a/src/lib/corelib/language/scriptengine.h b/src/lib/corelib/language/scriptengine.h
index 4f096376e..2c8aca241 100644
--- a/src/lib/corelib/language/scriptengine.h
+++ b/src/lib/corelib/language/scriptengine.h
@@ -102,11 +102,13 @@ enum class ObserveMode { Enabled, Disabled };
class QBS_AUTOTEST_EXPORT ScriptEngine : public QScriptEngine
{
Q_OBJECT
- ScriptEngine(Logger &logger, EvalContext evalContext, QObject *parent = nullptr);
+ struct PrivateTag {};
public:
- static ScriptEngine *create(Logger &logger, EvalContext evalContext, QObject *parent = nullptr);
+ ScriptEngine(Logger &logger, EvalContext evalContext, PrivateTag);
~ScriptEngine() override;
+ static std::unique_ptr<ScriptEngine> create(Logger &logger, EvalContext evalContext);
+
Logger &logger() const { return m_logger; }
void import(const FileContextBaseConstPtr &fileCtx, QScriptValue &targetObject,
ObserveMode observeMode);
diff --git a/src/packages/archive/archive.qbs b/src/packages/archive/archive.qbs
index d1875a1ac..40ebb5fbe 100644
--- a/src/packages/archive/archive.qbs
+++ b/src/packages/archive/archive.qbs
@@ -6,6 +6,7 @@ import qbs.TextFile
QbsProduct {
Depends { name: "qbs_processlauncher" }
Depends { name: "qbscore" }
+ Depends { name: "qbsscriptengine"; required: false }
Depends { name: "bundledqt"; required: false }
Depends { name: "qbs documentation"; condition: project.withDocumentation }
Depends { name: "qbs resources" }