diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2018-10-12 16:56:14 +0200 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2018-11-02 16:44:11 +0000 |
commit | 627226520a2bbb977ce32a21bdffd2004cb28796 (patch) | |
tree | e3989c73887505a179e875baf2984be10fcbdda8 /src/qml/compiler/qv4compileddata_p.h | |
parent | f20839aed0f2e4fe9134a239adda4853d7bd204a (diff) |
Expose let/const variables from imported JS scripts
This patch allows QML to access let/const variables defined in JS files.
Detailed changes:
- The recently added ContextType::ScriptImportedByQML is changed to avoid
creating Push/PopScriptContext instructions, similar to
ContextType::ESModule.
- QV4::Module is changed to also work with CompilationUnits which are not
ESModules. In this case QV4::Module will behave as if all lexically scoped
variables were exported.
- CompilationUnit is changed to support instantiating and evaluating
QV4::Modules for non-ESModules as well.
- QQmlTypeLoader is changed to always create QV4::Modules for evaluating
scripts. For the non-ESModule case, the QV4::Module is evaluated inside a
QV4::QmlContext, as before.
- A pointer to the QV4::Module is added to QV4::QQmlContextWrapper, and used
in virtualGet to access the let/const variables in the CallContext. Access
is read-only.
Fixes: QTBUG-69408
Change-Id: I6f299363fdf5e1c5a4a0f1d9e655b4dc5112dd00
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4compileddata_p.h')
-rw-r--r-- | src/qml/compiler/qv4compileddata_p.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/qml/compiler/qv4compileddata_p.h b/src/qml/compiler/qv4compileddata_p.h index b36b1a91ea..5c03303029 100644 --- a/src/qml/compiler/qv4compileddata_p.h +++ b/src/qml/compiler/qv4compileddata_p.h @@ -1183,6 +1183,7 @@ public: const Value *resolveExport(QV4::String *exportName); QStringList exportedNames() const; void evaluate(); + void evaluateModuleRequests(); QV4::Function *linkToEngine(QV4::ExecutionEngine *engine); void unlink(); @@ -1225,7 +1226,6 @@ private: Q_NEVER_INLINE IdentifierHash createNamedObjectsPerComponent(int componentObjectIndex); Heap::Module *m_module = nullptr; - bool m_moduleEvaluated = false; public: #if defined(V4_BOOTSTRAP) |