diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-01-28 10:41:58 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-03 14:37:51 +0100 |
commit | a52df12dcdce81af690cff3275eb195a282bae91 (patch) | |
tree | 0dbc481c4cf3c54740259d08fb3bcaeb745a0194 /src/qml/compiler/qqmlcodegenerator_p.h | |
parent | 47e21b3855c0a57b0cc9b920df8387deb049e1b4 (diff) |
[new compiler] Fix property declarations inside group properties
Property declarations inside group properties as well as their initializers go
into into the surrounding object.
Change-Id: I5b2b0f7bc41daea1275eb17ed04560e17052ca42
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler/qqmlcodegenerator_p.h')
-rw-r--r-- | src/qml/compiler/qqmlcodegenerator_p.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/qml/compiler/qqmlcodegenerator_p.h b/src/qml/compiler/qqmlcodegenerator_p.h index 56b0df5d8f..b2c17405a2 100644 --- a/src/qml/compiler/qqmlcodegenerator_p.h +++ b/src/qml/compiler/qqmlcodegenerator_p.h @@ -155,6 +155,10 @@ struct QmlObject PoolList<Binding> *bindings; PoolList<Function> *functions; + // If set, then declarations for this object (and init bindings for these) should go into the + // specified object. Used for declarations inside group properties. + QmlObject *declarationsOverride; + // caches to quickly find duplicates QSet<QString> propertyNames; QSet<QString> signalNames; @@ -243,9 +247,9 @@ public: void accept(AST::Node *node); // returns index in _objects - int defineQMLObject(AST::UiQualifiedId *qualifiedTypeNameId, const AST::SourceLocation &location, AST::UiObjectInitializer *initializer); - int defineQMLObject(AST::UiObjectDefinition *node) - { return defineQMLObject(node->qualifiedTypeNameId, node->qualifiedTypeNameId->firstSourceLocation(), node->initializer); } + int defineQMLObject(AST::UiQualifiedId *qualifiedTypeNameId, const AST::SourceLocation &location, AST::UiObjectInitializer *initializer, QmlObject *declarationsOverride = 0); + int defineQMLObject(AST::UiObjectDefinition *node, QmlObject *declarationsOverride = 0) + { return defineQMLObject(node->qualifiedTypeNameId, node->qualifiedTypeNameId->firstSourceLocation(), node->initializer, declarationsOverride); } static QString asString(AST::UiQualifiedId *node); QStringRef asStringRef(AST::Node *node); @@ -266,6 +270,8 @@ public: void appendBinding(const AST::SourceLocation &nameLocation, int propertyNameIndex, AST::Statement *value); void appendBinding(const AST::SourceLocation &nameLocation, int propertyNameIndex, int objectIndex, bool isListItem = false, bool isOnAssignment = false); + PoolList<Binding> *bindingsTarget() const; + bool setId(AST::Statement *value); // resolves qualified name (font.pixelSize for example) and returns the last name along |