aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-06-07 12:22:21 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-06-07 12:32:25 +0000
commitedf90ff88b1f95d36b8506437e76fc7d21991d6f (patch)
treebbb97fef95f136aaf0b7239293e37b845e460199
parentfadb41e330d92c03633c9a596eeb9ff125227426 (diff)
Fix observation of JS imports pulled in via "require"
If we call import() with ObserveMode::Disabled, we still need to gather all the results for possible later observation, because due to caching, we will not re-collect them on the next import() call. Change-Id: Ia7ccbe7cc3c47d6c2f1612bcf37c4a6c144c6ea2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/language/scriptengine.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp
index 568a927b2..e983ae945 100644
--- a/src/lib/corelib/language/scriptengine.cpp
+++ b/src/lib/corelib/language/scriptengine.cpp
@@ -152,6 +152,7 @@ void ScriptEngine::import(const FileContextBaseConstPtr &fileCtx, QScriptValue &
if (m_observeMode == ObserveMode::Enabled) {
for (QScriptValue &sv : m_requireResults)
observeImport(sv);
+ m_requireResults.clear();
}
m_currentDirPathStack.pop();
@@ -507,8 +508,7 @@ QScriptValue ScriptEngine::js_require(QScriptContext *context, QScriptEngine *qt
if (!values.empty()) {
const QScriptValue mergedValue = mergeExtensionObjects(values);
- if (engine->m_observeMode == ObserveMode::Enabled)
- engine->m_requireResults.push_back(mergedValue);
+ engine->m_requireResults.push_back(mergedValue);
engine->m_filePathsPerImport[mergedValue.objectId()] = filePaths;
return mergedValue;
}
@@ -533,8 +533,7 @@ QScriptValue ScriptEngine::js_require(QScriptContext *context, QScriptEngine *qt
const QString scopeName = scopeNamePrefix + QString::number(qHash(filePath), 16);
result.setProperty(StringConstants::importScopeNamePropertyInternal(), scopeName);
context->thisObject().setProperty(scopeName, result);
- if (engine->m_observeMode == ObserveMode::Enabled)
- engine->m_requireResults.push_back(result);
+ engine->m_requireResults.push_back(result);
engine->m_filePathsPerImport[result.objectId()] = { filePath };
} catch (const ErrorInfo &e) {
result = context->throwError(e.toString());