aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4compileddata_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-09-12 10:53:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-13 10:29:22 +0200
commit4b5a7b15fc6d3650c8e9b7bf619804a0a953eeba (patch)
treedc0e6952e2e6ee26118bcc14dc1f573fa9216593 /src/qml/compiler/qv4compileddata_p.h
parent8c2201e2e51e9a6c09b4f91c4b4fc09b2c82f4af (diff)
[new compiler] Implement proper type resolution
Collect all references to unknown types after parsing, re-use the existing code in QQmlTypeLoader to resolve them and finally use the resolved references map in the QQmlObjectCreator instead of the type name cache directly. Change-Id: I8b83af4f8852e79c33985457081c024358bb9622 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler/qv4compileddata_p.h')
-rw-r--r--src/qml/compiler/qv4compileddata_p.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/qml/compiler/qv4compileddata_p.h b/src/qml/compiler/qv4compileddata_p.h
index 7833097325..c98d53a1fa 100644
--- a/src/qml/compiler/qv4compileddata_p.h
+++ b/src/qml/compiler/qv4compileddata_p.h
@@ -44,6 +44,7 @@
#include <QtCore/qstring.h>
#include <QVector>
#include <QStringList>
+#include <QHash>
#include <private/qv4value_def_p.h>
#include <private/qv4executableallocator_p.h>
@@ -73,6 +74,16 @@ struct Location
int column;
};
+// map from name index to location of first use
+struct TypeReferenceMap : QHash<int, Location>
+{
+ void add(int nameIndex, const Location &loc) {
+ if (contains(nameIndex))
+ return;
+ insert(nameIndex, loc);
+ }
+};
+
struct RegExp
{
enum Flags {
@@ -263,6 +274,7 @@ struct Parameter
quint32 type;
quint32 customTypeNameIndex;
quint32 reserved;
+ Location location;
};
struct Signal