diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-06-04 13:31:33 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-06-21 13:30:34 +0000 |
commit | 3adc6dcf5ea078c9a365a63fb99f7869fd070cc2 (patch) | |
tree | 1a36c0d49c7bdcd62e423929fd3c6eee6510a1a2 /src | |
parent | 9959e9c364ca20012e54371d6919e8f2a9c6012f (diff) |
Fix more test failures for destructuring expressions
Fix parsing of
var { x = function(){} } = ...
Change-Id: I524e39c7a556c392a5359eafc445b59020ccadf2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/parser/qqmljs.g | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g index cf9f1edd62..bc38655607 100644 --- a/src/qml/parser/qqmljs.g +++ b/src/qml/parser/qqmljs.g @@ -1766,12 +1766,15 @@ CoverInitializedName: IdentifierReference Initializer_In; case $rule_number: { AST::IdentifierPropertyName *name = new (pool) AST::IdentifierPropertyName(stringRef(1)); name->propertyNameToken = loc(1); - AST::PatternProperty *node = new (pool) AST::PatternProperty(name, sym(2).Expression); - node->colonToken = loc(2); - sym(1).Node = node; + AST::IdentifierExpression *left = new (pool) AST::IdentifierExpression(stringRef(1)); + left->identifierToken = loc(1); // if initializer is an anonymous function expression, we need to assign identifierref as it's name if (auto *f = asAnonymousFunctionDefinition(sym(2).Expression)) f->name = stringRef(1); + AST::BinaryExpression *assignment = new (pool) AST::BinaryExpression(left, QSOperator::Assign, sym(2).Expression); + AST::PatternProperty *node = new (pool) AST::PatternProperty(name, assignment); + node->colonToken = loc(1); + sym(1).Node = node; } break; ./ |