diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-10-28 17:02:54 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-31 18:55:14 +0100 |
commit | f0ad3a5943804e9eb8e03434a4584eaafa5c5aea (patch) | |
tree | 8d2cb4402d63ced4e89c6c610fc839e0260d8e92 /src/qml/compiler/qv4isel_p.cpp | |
parent | b0afac3daf1cbb9daacbeac0183ef6254de6cc95 (diff) |
Implement loading of resolved imported scripts
We can resolve the use of names that refer to imported scripts at compile
time and load them at run-time by index through context->importedScripts.
Change-Id: I681b19e7d68dbf3b9a68af00b4cea2a9254c2d78
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler/qv4isel_p.cpp')
-rw-r--r-- | src/qml/compiler/qv4isel_p.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/qml/compiler/qv4isel_p.cpp b/src/qml/compiler/qv4isel_p.cpp index d6f0b4b804..3b7509d7bf 100644 --- a/src/qml/compiler/qv4isel_p.cpp +++ b/src/qml/compiler/qv4isel_p.cpp @@ -140,9 +140,17 @@ void IRDecoder::visitMove(V4IR::Move *s) return; } } else if (V4IR::Member *m = s->source->asMember()) { - if (m->type == V4IR::Member::MemberByObjectId) { - loadIdObject(m->objectId, t); - return; + if (m->type == V4IR::Member::MemberOfQmlContext) { + V4IR::Name *base = m->base->asName(); + Q_ASSERT(base); + + if (base->builtin == V4IR::Name::builtin_qml_id_scope) { + loadQmlIdObject(m->memberIndex, t); + return; + } else if (base->builtin == V4IR::Name::builtin_qml_imported_scripts_scope) { + loadQmlImportedScript(m->memberIndex, t); + return; + } } else if (m->type == V4IR::Member::MemberOfQObject) { getQObjectProperty(m->base, m->property->coreIndex, t); return; |