aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qqmlcodegenerator_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-01-28 10:41:58 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-03 14:37:51 +0100
commita52df12dcdce81af690cff3275eb195a282bae91 (patch)
tree0dbc481c4cf3c54740259d08fb3bcaeb745a0194 /src/qml/compiler/qqmlcodegenerator_p.h
parent47e21b3855c0a57b0cc9b920df8387deb049e1b4 (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.h12
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