aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4isel_p.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-10-28 17:02:54 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-31 18:55:14 +0100
commitf0ad3a5943804e9eb8e03434a4584eaafa5c5aea (patch)
tree8d2cb4402d63ced4e89c6c610fc839e0260d8e92 /src/qml/compiler/qv4isel_p.cpp
parentb0afac3daf1cbb9daacbeac0183ef6254de6cc95 (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.cpp14
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;