aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-06-04 13:31:33 +0200
committerLars Knoll <lars.knoll@qt.io>2018-06-21 13:30:34 +0000
commit3adc6dcf5ea078c9a365a63fb99f7869fd070cc2 (patch)
tree1a36c0d49c7bdcd62e423929fd3c6eee6510a1a2
parent9959e9c364ca20012e54371d6919e8f2a9c6012f (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>
-rw-r--r--src/qml/parser/qqmljs.g9
-rw-r--r--tests/auto/qml/ecmascripttests/TestExpectations53
2 files changed, 6 insertions, 56 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;
./
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations
index c340ecf2dd..c021c1c388 100644
--- a/tests/auto/qml/ecmascripttests/TestExpectations
+++ b/tests/auto/qml/ecmascripttests/TestExpectations
@@ -2503,24 +2503,8 @@ language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-id-exhausted.js fail
language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-id.js fails
language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-obj-id.js fails
language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-obj-prop-id.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-arrow.js fails
language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-cover.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-fn.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-gen.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-skipped.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-throws.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-unresolvable.js fails
-language/expressions/arrow-function/dstr-dflt-obj-ptrn-list-err.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-arrow.js fails
language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-class.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-cover.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-fn.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-gen.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-id-init-skipped.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-id-init-throws.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-id-init-unresolvable.js fails
-language/expressions/arrow-function/dstr-obj-ptrn-list-err.js fails
language/expressions/arrow-function/lexical-arguments.js fails
language/expressions/arrow-function/lexical-new.target-closure-returned.js fails
language/expressions/arrow-function/lexical-new.target.js fails
@@ -2536,7 +2520,6 @@ language/expressions/arrow-function/scope-param-elem-var-open.js sloppyFails
language/expressions/arrow-function/scope-param-rest-elem-var-close.js sloppyFails
language/expressions/arrow-function/scope-param-rest-elem-var-open.js sloppyFails
language/expressions/arrow-function/scope-paramsbody-var-open.js fails
-language/expressions/arrow-function/syntax/arrowparameters-cover-initialize-2.js fails
language/expressions/arrow-function/throw-new.js fails
language/expressions/assignment/S11.13.1_A5_T1.js sloppyFails
language/expressions/assignment/S11.13.1_A5_T2.js sloppyFails
@@ -2560,8 +2543,6 @@ language/expressions/assignment/dstr-array-elem-iter-thrw-close-err.js fails
language/expressions/assignment/dstr-array-elem-iter-thrw-close.js fails
language/expressions/assignment/dstr-array-elem-nested-array-yield-expr.js fails
language/expressions/assignment/dstr-array-elem-nested-array-yield-ident-valid.js sloppyFails
-language/expressions/assignment/dstr-array-elem-nested-obj-yield-expr.js fails
-language/expressions/assignment/dstr-array-elem-nested-obj-yield-ident-valid.js sloppyFails
language/expressions/assignment/dstr-array-elem-put-const.js fails
language/expressions/assignment/dstr-array-elem-put-let.js fails
language/expressions/assignment/dstr-array-elem-put-prop-ref-no-get.js fails
@@ -2624,30 +2605,14 @@ language/expressions/assignment/dstr-array-rest-yield-expr.js fails
language/expressions/assignment/dstr-array-rest-yield-ident-valid.js sloppyFails
language/expressions/assignment/dstr-obj-empty-null.js fails
language/expressions/assignment/dstr-obj-empty-undef.js fails
-language/expressions/assignment/dstr-obj-id-init-assignment-missing.js fails
-language/expressions/assignment/dstr-obj-id-init-assignment-null.js fails
-language/expressions/assignment/dstr-obj-id-init-assignment-truthy.js fails
-language/expressions/assignment/dstr-obj-id-init-assignment-undef.js fails
-language/expressions/assignment/dstr-obj-id-init-evaluation.js fails
-language/expressions/assignment/dstr-obj-id-init-fn-name-arrow.js fails
language/expressions/assignment/dstr-obj-id-init-fn-name-class.js fails
-language/expressions/assignment/dstr-obj-id-init-fn-name-cover.js fails
-language/expressions/assignment/dstr-obj-id-init-fn-name-fn.js fails
-language/expressions/assignment/dstr-obj-id-init-fn-name-gen.js fails
-language/expressions/assignment/dstr-obj-id-init-in.js fails
language/expressions/assignment/dstr-obj-id-init-let.js fails
-language/expressions/assignment/dstr-obj-id-init-order.js fails
-language/expressions/assignment/dstr-obj-id-init-simple-no-strict.js sloppyFails
-language/expressions/assignment/dstr-obj-id-init-yield-expr.js fails
-language/expressions/assignment/dstr-obj-id-init-yield-ident-valid.js sloppyFails
language/expressions/assignment/dstr-obj-id-put-const.js fails
language/expressions/assignment/dstr-obj-id-put-let.js fails
language/expressions/assignment/dstr-obj-prop-elem-init-fn-name-class.js fails
language/expressions/assignment/dstr-obj-prop-elem-init-let.js fails
language/expressions/assignment/dstr-obj-prop-elem-target-yield-expr.js fails
language/expressions/assignment/dstr-obj-prop-elem-target-yield-ident-valid.js sloppyFails
-language/expressions/assignment/dstr-obj-prop-nested-obj-yield-expr.js fails
-language/expressions/assignment/dstr-obj-prop-nested-obj-yield-ident-valid.js sloppyFails
language/expressions/assignment/dstr-obj-prop-put-const.js fails
language/expressions/assignment/dstr-obj-prop-put-let.js fails
language/expressions/assignment/dstr-obj-prop-put-prop-ref-no-get.js fails
@@ -4905,8 +4870,6 @@ language/statements/for-of/dstr-array-elem-iter-thrw-close-err.js fails
language/statements/for-of/dstr-array-elem-iter-thrw-close.js fails
language/statements/for-of/dstr-array-elem-nested-array-yield-expr.js fails
language/statements/for-of/dstr-array-elem-nested-array-yield-ident-valid.js sloppyFails
-language/statements/for-of/dstr-array-elem-nested-obj-yield-expr.js fails
-language/statements/for-of/dstr-array-elem-nested-obj-yield-ident-valid.js sloppyFails
language/statements/for-of/dstr-array-elem-put-const.js fails
language/statements/for-of/dstr-array-elem-put-let.js fails
language/statements/for-of/dstr-array-elem-put-prop-ref-no-get.js fails
@@ -5042,30 +5005,14 @@ language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/for-of/dstr-let-obj-ptrn-id-init-fn-name-class.js fails
language/statements/for-of/dstr-obj-empty-null.js fails
language/statements/for-of/dstr-obj-empty-undef.js fails
-language/statements/for-of/dstr-obj-id-init-assignment-missing.js fails
-language/statements/for-of/dstr-obj-id-init-assignment-null.js fails
-language/statements/for-of/dstr-obj-id-init-assignment-truthy.js fails
-language/statements/for-of/dstr-obj-id-init-assignment-undef.js fails
-language/statements/for-of/dstr-obj-id-init-evaluation.js fails
-language/statements/for-of/dstr-obj-id-init-fn-name-arrow.js fails
language/statements/for-of/dstr-obj-id-init-fn-name-class.js fails
-language/statements/for-of/dstr-obj-id-init-fn-name-cover.js fails
-language/statements/for-of/dstr-obj-id-init-fn-name-fn.js fails
-language/statements/for-of/dstr-obj-id-init-fn-name-gen.js fails
-language/statements/for-of/dstr-obj-id-init-in.js fails
language/statements/for-of/dstr-obj-id-init-let.js fails
-language/statements/for-of/dstr-obj-id-init-order.js fails
-language/statements/for-of/dstr-obj-id-init-simple-no-strict.js sloppyFails
-language/statements/for-of/dstr-obj-id-init-yield-expr.js fails
-language/statements/for-of/dstr-obj-id-init-yield-ident-valid.js sloppyFails
language/statements/for-of/dstr-obj-id-put-const.js fails
language/statements/for-of/dstr-obj-id-put-let.js fails
language/statements/for-of/dstr-obj-prop-elem-init-fn-name-class.js fails
language/statements/for-of/dstr-obj-prop-elem-init-let.js fails
language/statements/for-of/dstr-obj-prop-elem-target-yield-expr.js fails
language/statements/for-of/dstr-obj-prop-elem-target-yield-ident-valid.js sloppyFails
-language/statements/for-of/dstr-obj-prop-nested-obj-yield-expr.js fails
-language/statements/for-of/dstr-obj-prop-nested-obj-yield-ident-valid.js sloppyFails
language/statements/for-of/dstr-obj-prop-put-const.js fails
language/statements/for-of/dstr-obj-prop-put-let.js fails
language/statements/for-of/dstr-obj-prop-put-prop-ref-no-get.js fails