diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/corelib/buildgraph/jscommandexecutor.cpp | 6 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rulesevaluationcontext.cpp | 5 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rulesevaluationcontext.h | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 6 | ||||
-rw-r--r-- | src/lib/corelib/language/scriptengine.cpp | 8 | ||||
-rw-r--r-- | src/lib/corelib/language/scriptengine.h | 6 | ||||
-rw-r--r-- | src/packages/archive/archive.qbs | 1 |
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" } |