aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/compiler/qv4compilerscanfunctions.cpp2
-rw-r--r--src/qml/parser/qqmljs.g1
-rw-r--r--tests/auto/qml/ecmascripttests/TestExpectations67
3 files changed, 1 insertions, 69 deletions
diff --git a/src/qml/compiler/qv4compilerscanfunctions.cpp b/src/qml/compiler/qv4compilerscanfunctions.cpp
index 639728df52..68cb58da46 100644
--- a/src/qml/compiler/qv4compilerscanfunctions.cpp
+++ b/src/qml/compiler/qv4compilerscanfunctions.cpp
@@ -177,7 +177,7 @@ bool ScanFunctions::visit(PatternElement *ast)
checkName(QStringRef(&name), ast->identifierToken);
if (name == QLatin1String("arguments"))
_context->usesArgumentsObject = Context::ArgumentsObjectNotUsed;
- if (ast->scope == VariableScope::Const && !ast->initializer) {
+ if (ast->scope == VariableScope::Const && !ast->initializer && !ast->destructuringPattern()) {
_cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Missing initializer in const declaration"));
return false;
}
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g
index f927473e53..7928881d8c 100644
--- a/src/qml/parser/qqmljs.g
+++ b/src/qml/parser/qqmljs.g
@@ -3209,7 +3209,6 @@ ForDeclaration: Var BindingPattern;
/.
case $rule_number: {
auto *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr);
- node->identifierToken = loc(2);
node->scope = sym(1).scope;
sym(1).Node = node;
} break;
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations
index d37459d353..33dfb0a750 100644
--- a/tests/auto/qml/ecmascripttests/TestExpectations
+++ b/tests/auto/qml/ecmascripttests/TestExpectations
@@ -4817,75 +4817,8 @@ language/statements/for-of/dstr-array-rest-iter-thrw-close.js fails
language/statements/for-of/dstr-array-rest-lref-err.js fails
language/statements/for-of/dstr-array-rest-put-const.js fails
language/statements/for-of/dstr-array-rest-put-let.js fails
-language/statements/for-of/dstr-const-ary-init-iter-close.js fails
-language/statements/for-of/dstr-const-ary-init-iter-get-err.js fails
-language/statements/for-of/dstr-const-ary-init-iter-no-close.js fails
-language/statements/for-of/dstr-const-ary-name-iter-val.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-ary-elem-init.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-ary-elem-iter.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-ary-rest-init.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-ary-rest-iter.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-ary-val-null.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-exhausted.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-arrow.js fails
language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-hole.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-skipped.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-throws.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-undef.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-unresolvable.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-iter-complete.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-iter-done.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-iter-step-err.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-iter-val-err.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-id-iter-val.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-obj-id-init.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-obj-id.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-obj-prop-id-init.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-obj-prop-id.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-obj-val-null.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elem-obj-val-undef.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-ary-elem.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-ary-rest.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-id-elision-next-err.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-id-elision.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-id-exhausted.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-id-iter-close.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-id-iter-step-err.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-id-iter-val-err.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-id.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-obj-id.js fails
-language/statements/for-of/dstr-const-ary-ptrn-rest-obj-prop-id.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-get-value-err.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-arrow.js fails
language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-class.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-cover.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-fn.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-gen.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-init-skipped.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-init-throws.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-init-unresolvable.js fails
-language/statements/for-of/dstr-const-obj-ptrn-id-trailing-comma.js fails
-language/statements/for-of/dstr-const-obj-ptrn-list-err.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-ary-init.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-ary-trailing-comma.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-ary-value-null.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-ary.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-eval-err.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-id-get-value-err.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-id-init-skipped.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-id-init-throws.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-id-init-unresolvable.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-id-init.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-id-trailing-comma.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-id.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-obj-init.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-obj-value-null.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-obj-value-undef.js fails
-language/statements/for-of/dstr-const-obj-ptrn-prop-obj.js fails
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