diff options
author | Simon Hausmann <[email protected]> | 2013-09-12 10:53:20 +0200 |
---|---|---|
committer | The Qt Project <[email protected]> | 2013-09-13 10:29:22 +0200 |
commit | 4b5a7b15fc6d3650c8e9b7bf619804a0a953eeba (patch) | |
tree | dc0e6952e2e6ee26118bcc14dc1f573fa9216593 /src/qml/compiler/qv4compileddata_p.h | |
parent | 8c2201e2e51e9a6c09b4f91c4b4fc09b2c82f4af (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 <[email protected]>
Diffstat (limited to 'src/qml/compiler/qv4compileddata_p.h')
-rw-r--r-- | src/qml/compiler/qv4compileddata_p.h | 12 |
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 |