diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-03-25 15:05:08 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-04-27 08:11:46 +0000 |
commit | 00b47c45097d7183ac7f3655aa4b2e6e74359e3f (patch) | |
tree | 1936bb166024948c9325a0c6fe3ebf6a760ccfc6 | |
parent | 851b8fe905ff2f3fe5c5199fdbcb930201d52b87 (diff) |
Add support for destructuring variable declarations
Change-Id: Ia7f894fb61cfa760e253963ab4815d98103cfd9b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r-- | src/qml/compiler/qv4codegen.cpp | 41 | ||||
-rw-r--r-- | src/qml/compiler/qv4compilerscanfunctions.cpp | 36 | ||||
-rw-r--r-- | src/qml/parser/qqmljs.g | 1 | ||||
-rw-r--r-- | tests/auto/qml/ecmascripttests/TestExpectations | 230 |
4 files changed, 45 insertions, 263 deletions
diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp index 0323012686..151e98c673 100644 --- a/src/qml/compiler/qv4codegen.cpp +++ b/src/qml/compiler/qv4codegen.cpp @@ -380,14 +380,7 @@ void Codegen::variableDeclaration(PatternElement *ast) if (!ast->initializer) return; - Reference rhs = expression(ast->initializer); - if (hasError) - return; - - Reference lhs = referenceForName(ast->bindingIdentifier, true); - //### if lhs is a temp, this won't generate a temp-to-temp move. Same for when rhs is a const - rhs.loadInAccumulator(); - lhs.storeConsumeAccumulator(); + initializeAndDestructureBindingElement(ast, Reference()); } void Codegen::variableDeclarationList(VariableDeclarationList *ast) @@ -401,19 +394,25 @@ void Codegen::initializeAndDestructureBindingElement(AST::PatternElement *e, con { RegisterScope scope(this); Reference varToStore = e->bindingIdentifier.isNull() ? Reference::fromStackSlot(this, bytecodeGenerator->newRegister()) : referenceForName(e->bindingIdentifier, true); - if (e->initializer && baseRef == varToStore) { - baseRef.loadInAccumulator(); - BytecodeGenerator::Jump jump = bytecodeGenerator->jumpNotUndefined(); - expression(e->initializer).loadInAccumulator(); - varToStore.storeConsumeAccumulator(); - jump.link(); - } else if (e->initializer) { - baseRef.loadInAccumulator(); - BytecodeGenerator::Jump jump = bytecodeGenerator->jumpNotUndefined(); - expression(e->initializer).loadInAccumulator(); - jump.link(); - varToStore.storeConsumeAccumulator(); - } else if (baseRef != varToStore) { + if (e->initializer) { + if (!baseRef.isValid()) { + // assignment + expression(e->initializer).loadInAccumulator(); + varToStore.storeConsumeAccumulator(); + } else if (baseRef == varToStore) { + baseRef.loadInAccumulator(); + BytecodeGenerator::Jump jump = bytecodeGenerator->jumpNotUndefined(); + expression(e->initializer).loadInAccumulator(); + varToStore.storeConsumeAccumulator(); + jump.link(); + } else { + baseRef.loadInAccumulator(); + BytecodeGenerator::Jump jump = bytecodeGenerator->jumpNotUndefined(); + expression(e->initializer).loadInAccumulator(); + jump.link(); + varToStore.storeConsumeAccumulator(); + } + } else if (baseRef != varToStore && baseRef.isValid()) { baseRef.loadInAccumulator(); varToStore.storeConsumeAccumulator(); } diff --git a/src/qml/compiler/qv4compilerscanfunctions.cpp b/src/qml/compiler/qv4compilerscanfunctions.cpp index 3f98d7fd67..c6e792fc45 100644 --- a/src/qml/compiler/qv4compilerscanfunctions.cpp +++ b/src/qml/compiler/qv4compilerscanfunctions.cpp @@ -196,18 +196,30 @@ bool ScanFunctions::visit(PatternElement *ast) if (!ast->isVariableDeclaration()) return true; - if (_context->isStrict && (ast->bindingIdentifier == QLatin1String("eval") || ast->bindingIdentifier == QLatin1String("arguments"))) - _cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Variable name may not be eval or arguments in strict mode")); - checkName(QStringRef(&ast->bindingIdentifier), ast->identifierToken); - if (ast->bindingIdentifier == QLatin1String("arguments")) - _context->usesArgumentsObject = Context::ArgumentsObjectNotUsed; - if (ast->scope == VariableScope::Const && !ast->initializer) { - _cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Missing initializer in const declaration")); - return false; - } - if (!_context->addLocalVar(ast->bindingIdentifier, ast->initializer ? Context::VariableDefinition : Context::VariableDeclaration, ast->scope)) { - _cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Identifier %1 has already been declared").arg(ast->bindingIdentifier)); - return false; + QStringList names; + ast->boundNames(&names); + + for (const QString &name : qAsConst(names)) { + if (_context->isStrict && (name == QLatin1String("eval") || name == QLatin1String("arguments"))) + _cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Variable name may not be eval or arguments in strict mode")); + checkName(QStringRef(&name), ast->identifierToken); + if (name == QLatin1String("arguments")) + _context->usesArgumentsObject = Context::ArgumentsObjectNotUsed; + if (ast->scope == VariableScope::Const && !ast->initializer) { + _cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Missing initializer in const declaration")); + return false; + } + const Context::Member *m = nullptr; + if (_context->memberInfo(name, &m)) { + if (m->isLexicallyScoped() || ast->isLexicallyScoped()) { + _cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Identifier %1 has already been declared").arg(name)); + return false; + } + } + if (!_context->addLocalVar(name, ast->initializer ? Context::VariableDefinition : Context::VariableDeclaration, ast->scope)) { + _cg->throwSyntaxError(ast->identifierToken, QStringLiteral("Identifier %1 has already been declared").arg(ast->bindingIdentifier)); + return false; + } } return true; } diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g index 5200779924..bf733dd6cd 100644 --- a/src/qml/parser/qqmljs.g +++ b/src/qml/parser/qqmljs.g @@ -2824,7 +2824,6 @@ VariableDeclaration: BindingPattern Initializer; VariableDeclaration_In: BindingPattern Initializer_In; /. case $rule_number: { - UNIMPLEMENTED; auto *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression); node->identifierToken = loc(1); sym(1).Node = node; diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations index 5b1301247e..8823e5a94a 100644 --- a/tests/auto/qml/ecmascripttests/TestExpectations +++ b/tests/auto/qml/ecmascripttests/TestExpectations @@ -7639,32 +7639,17 @@ language/statements/const/dstr-ary-ptrn-elem-ary-elem-iter language/statements/const/dstr-ary-ptrn-elem-ary-elision-init language/statements/const/dstr-ary-ptrn-elem-ary-elision-iter language/statements/const/dstr-ary-ptrn-elem-ary-empty-init -language/statements/const/dstr-ary-ptrn-elem-ary-empty-iter language/statements/const/dstr-ary-ptrn-elem-ary-rest-init language/statements/const/dstr-ary-ptrn-elem-ary-rest-iter -language/statements/const/dstr-ary-ptrn-elem-ary-val-null -language/statements/const/dstr-ary-ptrn-elem-id-init-exhausted language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-arrow language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-class language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-cover language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-fn language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-gen -language/statements/const/dstr-ary-ptrn-elem-id-init-hole language/statements/const/dstr-ary-ptrn-elem-id-init-skipped -language/statements/const/dstr-ary-ptrn-elem-id-init-throws -language/statements/const/dstr-ary-ptrn-elem-id-init-undef -language/statements/const/dstr-ary-ptrn-elem-id-init-unresolvable -language/statements/const/dstr-ary-ptrn-elem-id-iter-complete -language/statements/const/dstr-ary-ptrn-elem-id-iter-done language/statements/const/dstr-ary-ptrn-elem-id-iter-step-err language/statements/const/dstr-ary-ptrn-elem-id-iter-val language/statements/const/dstr-ary-ptrn-elem-id-iter-val-err -language/statements/const/dstr-ary-ptrn-elem-obj-id -language/statements/const/dstr-ary-ptrn-elem-obj-id-init -language/statements/const/dstr-ary-ptrn-elem-obj-prop-id -language/statements/const/dstr-ary-ptrn-elem-obj-prop-id-init -language/statements/const/dstr-ary-ptrn-elem-obj-val-null -language/statements/const/dstr-ary-ptrn-elem-obj-val-undef language/statements/const/dstr-ary-ptrn-elision language/statements/const/dstr-ary-ptrn-elision-exhausted language/statements/const/dstr-ary-ptrn-elision-step-err @@ -7681,36 +7666,13 @@ language/statements/const/dstr-ary-ptrn-rest-id-iter-step-err language/statements/const/dstr-ary-ptrn-rest-id-iter-val-err language/statements/const/dstr-ary-ptrn-rest-obj-id language/statements/const/dstr-ary-ptrn-rest-obj-prop-id -language/statements/const/dstr-obj-init-null -language/statements/const/dstr-obj-init-undefined -language/statements/const/dstr-obj-ptrn-empty -language/statements/const/dstr-obj-ptrn-id-get-value-err language/statements/const/dstr-obj-ptrn-id-init-fn-name-arrow language/statements/const/dstr-obj-ptrn-id-init-fn-name-class language/statements/const/dstr-obj-ptrn-id-init-fn-name-cover language/statements/const/dstr-obj-ptrn-id-init-fn-name-fn language/statements/const/dstr-obj-ptrn-id-init-fn-name-gen -language/statements/const/dstr-obj-ptrn-id-init-skipped -language/statements/const/dstr-obj-ptrn-id-init-throws -language/statements/const/dstr-obj-ptrn-id-init-unresolvable -language/statements/const/dstr-obj-ptrn-id-trailing-comma -language/statements/const/dstr-obj-ptrn-list-err language/statements/const/dstr-obj-ptrn-prop-ary language/statements/const/dstr-obj-ptrn-prop-ary-init -language/statements/const/dstr-obj-ptrn-prop-ary-trailing-comma -language/statements/const/dstr-obj-ptrn-prop-ary-value-null -language/statements/const/dstr-obj-ptrn-prop-eval-err -language/statements/const/dstr-obj-ptrn-prop-id -language/statements/const/dstr-obj-ptrn-prop-id-get-value-err -language/statements/const/dstr-obj-ptrn-prop-id-init -language/statements/const/dstr-obj-ptrn-prop-id-init-skipped -language/statements/const/dstr-obj-ptrn-prop-id-init-throws -language/statements/const/dstr-obj-ptrn-prop-id-init-unresolvable -language/statements/const/dstr-obj-ptrn-prop-id-trailing-comma -language/statements/const/dstr-obj-ptrn-prop-obj -language/statements/const/dstr-obj-ptrn-prop-obj-init -language/statements/const/dstr-obj-ptrn-prop-obj-value-null -language/statements/const/dstr-obj-ptrn-prop-obj-value-undef language/statements/const/fn-name-arrow language/statements/const/fn-name-class language/statements/const/fn-name-cover @@ -7737,32 +7699,17 @@ language/statements/for/dstr-const-ary-ptrn-elem-ary-elem-iter language/statements/for/dstr-const-ary-ptrn-elem-ary-elision-init language/statements/for/dstr-const-ary-ptrn-elem-ary-elision-iter language/statements/for/dstr-const-ary-ptrn-elem-ary-empty-init -language/statements/for/dstr-const-ary-ptrn-elem-ary-empty-iter language/statements/for/dstr-const-ary-ptrn-elem-ary-rest-init language/statements/for/dstr-const-ary-ptrn-elem-ary-rest-iter -language/statements/for/dstr-const-ary-ptrn-elem-ary-val-null -language/statements/for/dstr-const-ary-ptrn-elem-id-init-exhausted language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-arrow language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-class language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-cover language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-fn language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-gen -language/statements/for/dstr-const-ary-ptrn-elem-id-init-hole language/statements/for/dstr-const-ary-ptrn-elem-id-init-skipped -language/statements/for/dstr-const-ary-ptrn-elem-id-init-throws -language/statements/for/dstr-const-ary-ptrn-elem-id-init-undef -language/statements/for/dstr-const-ary-ptrn-elem-id-init-unresolvable -language/statements/for/dstr-const-ary-ptrn-elem-id-iter-complete -language/statements/for/dstr-const-ary-ptrn-elem-id-iter-done language/statements/for/dstr-const-ary-ptrn-elem-id-iter-step-err language/statements/for/dstr-const-ary-ptrn-elem-id-iter-val language/statements/for/dstr-const-ary-ptrn-elem-id-iter-val-err -language/statements/for/dstr-const-ary-ptrn-elem-obj-id -language/statements/for/dstr-const-ary-ptrn-elem-obj-id-init -language/statements/for/dstr-const-ary-ptrn-elem-obj-prop-id -language/statements/for/dstr-const-ary-ptrn-elem-obj-prop-id-init -language/statements/for/dstr-const-ary-ptrn-elem-obj-val-null -language/statements/for/dstr-const-ary-ptrn-elem-obj-val-undef language/statements/for/dstr-const-ary-ptrn-elision language/statements/for/dstr-const-ary-ptrn-elision-exhausted language/statements/for/dstr-const-ary-ptrn-elision-iter-close @@ -7781,36 +7728,13 @@ language/statements/for/dstr-const-ary-ptrn-rest-id-iter-step-err language/statements/for/dstr-const-ary-ptrn-rest-id-iter-val-err language/statements/for/dstr-const-ary-ptrn-rest-obj-id language/statements/for/dstr-const-ary-ptrn-rest-obj-prop-id -language/statements/for/dstr-const-obj-init-null -language/statements/for/dstr-const-obj-init-undefined -language/statements/for/dstr-const-obj-ptrn-empty -language/statements/for/dstr-const-obj-ptrn-id-get-value-err language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-arrow language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-class language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-cover language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-fn language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-gen -language/statements/for/dstr-const-obj-ptrn-id-init-skipped -language/statements/for/dstr-const-obj-ptrn-id-init-throws -language/statements/for/dstr-const-obj-ptrn-id-init-unresolvable -language/statements/for/dstr-const-obj-ptrn-id-trailing-comma -language/statements/for/dstr-const-obj-ptrn-list-err language/statements/for/dstr-const-obj-ptrn-prop-ary language/statements/for/dstr-const-obj-ptrn-prop-ary-init -language/statements/for/dstr-const-obj-ptrn-prop-ary-trailing-comma -language/statements/for/dstr-const-obj-ptrn-prop-ary-value-null -language/statements/for/dstr-const-obj-ptrn-prop-eval-err -language/statements/for/dstr-const-obj-ptrn-prop-id -language/statements/for/dstr-const-obj-ptrn-prop-id-get-value-err -language/statements/for/dstr-const-obj-ptrn-prop-id-init -language/statements/for/dstr-const-obj-ptrn-prop-id-init-skipped -language/statements/for/dstr-const-obj-ptrn-prop-id-init-throws -language/statements/for/dstr-const-obj-ptrn-prop-id-init-unresolvable -language/statements/for/dstr-const-obj-ptrn-prop-id-trailing-comma -language/statements/for/dstr-const-obj-ptrn-prop-obj -language/statements/for/dstr-const-obj-ptrn-prop-obj-init -language/statements/for/dstr-const-obj-ptrn-prop-obj-value-null -language/statements/for/dstr-const-obj-ptrn-prop-obj-value-undef language/statements/for/dstr-let-ary-init-iter-close language/statements/for/dstr-let-ary-init-iter-get-err language/statements/for/dstr-let-ary-init-iter-no-close @@ -7820,32 +7744,17 @@ language/statements/for/dstr-let-ary-ptrn-elem-ary-elem-iter language/statements/for/dstr-let-ary-ptrn-elem-ary-elision-init language/statements/for/dstr-let-ary-ptrn-elem-ary-elision-iter language/statements/for/dstr-let-ary-ptrn-elem-ary-empty-init -language/statements/for/dstr-let-ary-ptrn-elem-ary-empty-iter language/statements/for/dstr-let-ary-ptrn-elem-ary-rest-init language/statements/for/dstr-let-ary-ptrn-elem-ary-rest-iter -language/statements/for/dstr-let-ary-ptrn-elem-ary-val-null -language/statements/for/dstr-let-ary-ptrn-elem-id-init-exhausted language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-arrow language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-class language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-cover language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-fn language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-gen -language/statements/for/dstr-let-ary-ptrn-elem-id-init-hole language/statements/for/dstr-let-ary-ptrn-elem-id-init-skipped -language/statements/for/dstr-let-ary-ptrn-elem-id-init-throws -language/statements/for/dstr-let-ary-ptrn-elem-id-init-undef -language/statements/for/dstr-let-ary-ptrn-elem-id-init-unresolvable -language/statements/for/dstr-let-ary-ptrn-elem-id-iter-complete -language/statements/for/dstr-let-ary-ptrn-elem-id-iter-done language/statements/for/dstr-let-ary-ptrn-elem-id-iter-step-err language/statements/for/dstr-let-ary-ptrn-elem-id-iter-val language/statements/for/dstr-let-ary-ptrn-elem-id-iter-val-err -language/statements/for/dstr-let-ary-ptrn-elem-obj-id -language/statements/for/dstr-let-ary-ptrn-elem-obj-id-init -language/statements/for/dstr-let-ary-ptrn-elem-obj-prop-id -language/statements/for/dstr-let-ary-ptrn-elem-obj-prop-id-init -language/statements/for/dstr-let-ary-ptrn-elem-obj-val-null -language/statements/for/dstr-let-ary-ptrn-elem-obj-val-undef language/statements/for/dstr-let-ary-ptrn-elision language/statements/for/dstr-let-ary-ptrn-elision-exhausted language/statements/for/dstr-let-ary-ptrn-elision-iter-close @@ -7864,36 +7773,13 @@ language/statements/for/dstr-let-ary-ptrn-rest-id-iter-step-err language/statements/for/dstr-let-ary-ptrn-rest-id-iter-val-err language/statements/for/dstr-let-ary-ptrn-rest-obj-id language/statements/for/dstr-let-ary-ptrn-rest-obj-prop-id -language/statements/for/dstr-let-obj-init-null -language/statements/for/dstr-let-obj-init-undefined -language/statements/for/dstr-let-obj-ptrn-empty -language/statements/for/dstr-let-obj-ptrn-id-get-value-err language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-arrow language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-class language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-cover language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-fn language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-gen -language/statements/for/dstr-let-obj-ptrn-id-init-skipped -language/statements/for/dstr-let-obj-ptrn-id-init-throws -language/statements/for/dstr-let-obj-ptrn-id-init-unresolvable -language/statements/for/dstr-let-obj-ptrn-id-trailing-comma -language/statements/for/dstr-let-obj-ptrn-list-err language/statements/for/dstr-let-obj-ptrn-prop-ary language/statements/for/dstr-let-obj-ptrn-prop-ary-init -language/statements/for/dstr-let-obj-ptrn-prop-ary-trailing-comma -language/statements/for/dstr-let-obj-ptrn-prop-ary-value-null -language/statements/for/dstr-let-obj-ptrn-prop-eval-err -language/statements/for/dstr-let-obj-ptrn-prop-id -language/statements/for/dstr-let-obj-ptrn-prop-id-get-value-err -language/statements/for/dstr-let-obj-ptrn-prop-id-init -language/statements/for/dstr-let-obj-ptrn-prop-id-init-skipped -language/statements/for/dstr-let-obj-ptrn-prop-id-init-throws -language/statements/for/dstr-let-obj-ptrn-prop-id-init-unresolvable -language/statements/for/dstr-let-obj-ptrn-prop-id-trailing-comma -language/statements/for/dstr-let-obj-ptrn-prop-obj -language/statements/for/dstr-let-obj-ptrn-prop-obj-init -language/statements/for/dstr-let-obj-ptrn-prop-obj-value-null -language/statements/for/dstr-let-obj-ptrn-prop-obj-value-undef language/statements/for/dstr-var-ary-init-iter-close language/statements/for/dstr-var-ary-init-iter-get-err language/statements/for/dstr-var-ary-init-iter-no-close @@ -7903,32 +7789,17 @@ language/statements/for/dstr-var-ary-ptrn-elem-ary-elem-iter language/statements/for/dstr-var-ary-ptrn-elem-ary-elision-init language/statements/for/dstr-var-ary-ptrn-elem-ary-elision-iter language/statements/for/dstr-var-ary-ptrn-elem-ary-empty-init -language/statements/for/dstr-var-ary-ptrn-elem-ary-empty-iter language/statements/for/dstr-var-ary-ptrn-elem-ary-rest-init language/statements/for/dstr-var-ary-ptrn-elem-ary-rest-iter -language/statements/for/dstr-var-ary-ptrn-elem-ary-val-null -language/statements/for/dstr-var-ary-ptrn-elem-id-init-exhausted language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-arrow language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-class language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-cover language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-fn language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-gen -language/statements/for/dstr-var-ary-ptrn-elem-id-init-hole language/statements/for/dstr-var-ary-ptrn-elem-id-init-skipped -language/statements/for/dstr-var-ary-ptrn-elem-id-init-throws -language/statements/for/dstr-var-ary-ptrn-elem-id-init-undef -language/statements/for/dstr-var-ary-ptrn-elem-id-init-unresolvable -language/statements/for/dstr-var-ary-ptrn-elem-id-iter-complete -language/statements/for/dstr-var-ary-ptrn-elem-id-iter-done language/statements/for/dstr-var-ary-ptrn-elem-id-iter-step-err language/statements/for/dstr-var-ary-ptrn-elem-id-iter-val language/statements/for/dstr-var-ary-ptrn-elem-id-iter-val-err -language/statements/for/dstr-var-ary-ptrn-elem-obj-id -language/statements/for/dstr-var-ary-ptrn-elem-obj-id-init -language/statements/for/dstr-var-ary-ptrn-elem-obj-prop-id -language/statements/for/dstr-var-ary-ptrn-elem-obj-prop-id-init -language/statements/for/dstr-var-ary-ptrn-elem-obj-val-null -language/statements/for/dstr-var-ary-ptrn-elem-obj-val-undef language/statements/for/dstr-var-ary-ptrn-elision language/statements/for/dstr-var-ary-ptrn-elision-exhausted language/statements/for/dstr-var-ary-ptrn-elision-iter-close @@ -7947,36 +7818,13 @@ language/statements/for/dstr-var-ary-ptrn-rest-id-iter-step-err language/statements/for/dstr-var-ary-ptrn-rest-id-iter-val-err language/statements/for/dstr-var-ary-ptrn-rest-obj-id language/statements/for/dstr-var-ary-ptrn-rest-obj-prop-id -language/statements/for/dstr-var-obj-init-null -language/statements/for/dstr-var-obj-init-undefined -language/statements/for/dstr-var-obj-ptrn-empty -language/statements/for/dstr-var-obj-ptrn-id-get-value-err language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-arrow language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-class language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-cover language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-fn language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-gen -language/statements/for/dstr-var-obj-ptrn-id-init-skipped -language/statements/for/dstr-var-obj-ptrn-id-init-throws -language/statements/for/dstr-var-obj-ptrn-id-init-unresolvable -language/statements/for/dstr-var-obj-ptrn-id-trailing-comma -language/statements/for/dstr-var-obj-ptrn-list-err language/statements/for/dstr-var-obj-ptrn-prop-ary language/statements/for/dstr-var-obj-ptrn-prop-ary-init -language/statements/for/dstr-var-obj-ptrn-prop-ary-trailing-comma -language/statements/for/dstr-var-obj-ptrn-prop-ary-value-null -language/statements/for/dstr-var-obj-ptrn-prop-eval-err -language/statements/for/dstr-var-obj-ptrn-prop-id -language/statements/for/dstr-var-obj-ptrn-prop-id-get-value-err -language/statements/for/dstr-var-obj-ptrn-prop-id-init -language/statements/for/dstr-var-obj-ptrn-prop-id-init-skipped -language/statements/for/dstr-var-obj-ptrn-prop-id-init-throws -language/statements/for/dstr-var-obj-ptrn-prop-id-init-unresolvable -language/statements/for/dstr-var-obj-ptrn-prop-id-trailing-comma -language/statements/for/dstr-var-obj-ptrn-prop-obj -language/statements/for/dstr-var-obj-ptrn-prop-obj-init -language/statements/for/dstr-var-obj-ptrn-prop-obj-value-null -language/statements/for/dstr-var-obj-ptrn-prop-obj-value-undef language/statements/for/head-let-destructuring language/statements/for/head-lhs-let language/statements/for-in/head-const-bound-names-fordecl-tdz @@ -8939,32 +8787,17 @@ language/statements/let/dstr-ary-ptrn-elem-ary-elem-iter language/statements/let/dstr-ary-ptrn-elem-ary-elision-init language/statements/let/dstr-ary-ptrn-elem-ary-elision-iter language/statements/let/dstr-ary-ptrn-elem-ary-empty-init -language/statements/let/dstr-ary-ptrn-elem-ary-empty-iter language/statements/let/dstr-ary-ptrn-elem-ary-rest-init language/statements/let/dstr-ary-ptrn-elem-ary-rest-iter -language/statements/let/dstr-ary-ptrn-elem-ary-val-null -language/statements/let/dstr-ary-ptrn-elem-id-init-exhausted language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-arrow language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-class language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-cover language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-fn language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-gen -language/statements/let/dstr-ary-ptrn-elem-id-init-hole language/statements/let/dstr-ary-ptrn-elem-id-init-skipped -language/statements/let/dstr-ary-ptrn-elem-id-init-throws -language/statements/let/dstr-ary-ptrn-elem-id-init-undef -language/statements/let/dstr-ary-ptrn-elem-id-init-unresolvable -language/statements/let/dstr-ary-ptrn-elem-id-iter-complete -language/statements/let/dstr-ary-ptrn-elem-id-iter-done language/statements/let/dstr-ary-ptrn-elem-id-iter-step-err language/statements/let/dstr-ary-ptrn-elem-id-iter-val language/statements/let/dstr-ary-ptrn-elem-id-iter-val-err -language/statements/let/dstr-ary-ptrn-elem-obj-id -language/statements/let/dstr-ary-ptrn-elem-obj-id-init -language/statements/let/dstr-ary-ptrn-elem-obj-prop-id -language/statements/let/dstr-ary-ptrn-elem-obj-prop-id-init -language/statements/let/dstr-ary-ptrn-elem-obj-val-null -language/statements/let/dstr-ary-ptrn-elem-obj-val-undef language/statements/let/dstr-ary-ptrn-elision language/statements/let/dstr-ary-ptrn-elision-exhausted language/statements/let/dstr-ary-ptrn-elision-step-err @@ -8981,36 +8814,13 @@ language/statements/let/dstr-ary-ptrn-rest-id-iter-step-err language/statements/let/dstr-ary-ptrn-rest-id-iter-val-err language/statements/let/dstr-ary-ptrn-rest-obj-id language/statements/let/dstr-ary-ptrn-rest-obj-prop-id -language/statements/let/dstr-obj-init-null -language/statements/let/dstr-obj-init-undefined -language/statements/let/dstr-obj-ptrn-empty -language/statements/let/dstr-obj-ptrn-id-get-value-err language/statements/let/dstr-obj-ptrn-id-init-fn-name-arrow language/statements/let/dstr-obj-ptrn-id-init-fn-name-class language/statements/let/dstr-obj-ptrn-id-init-fn-name-cover language/statements/let/dstr-obj-ptrn-id-init-fn-name-fn language/statements/let/dstr-obj-ptrn-id-init-fn-name-gen -language/statements/let/dstr-obj-ptrn-id-init-skipped -language/statements/let/dstr-obj-ptrn-id-init-throws -language/statements/let/dstr-obj-ptrn-id-init-unresolvable -language/statements/let/dstr-obj-ptrn-id-trailing-comma -language/statements/let/dstr-obj-ptrn-list-err language/statements/let/dstr-obj-ptrn-prop-ary language/statements/let/dstr-obj-ptrn-prop-ary-init -language/statements/let/dstr-obj-ptrn-prop-ary-trailing-comma -language/statements/let/dstr-obj-ptrn-prop-ary-value-null -language/statements/let/dstr-obj-ptrn-prop-eval-err -language/statements/let/dstr-obj-ptrn-prop-id -language/statements/let/dstr-obj-ptrn-prop-id-get-value-err -language/statements/let/dstr-obj-ptrn-prop-id-init -language/statements/let/dstr-obj-ptrn-prop-id-init-skipped -language/statements/let/dstr-obj-ptrn-prop-id-init-throws -language/statements/let/dstr-obj-ptrn-prop-id-init-unresolvable -language/statements/let/dstr-obj-ptrn-prop-id-trailing-comma -language/statements/let/dstr-obj-ptrn-prop-obj -language/statements/let/dstr-obj-ptrn-prop-obj-init -language/statements/let/dstr-obj-ptrn-prop-obj-value-null -language/statements/let/dstr-obj-ptrn-prop-obj-value-undef language/statements/let/fn-name-arrow language/statements/let/fn-name-class language/statements/let/fn-name-cover @@ -9145,32 +8955,17 @@ language/statements/variable/dstr-ary-ptrn-elem-ary-elem-iter language/statements/variable/dstr-ary-ptrn-elem-ary-elision-init language/statements/variable/dstr-ary-ptrn-elem-ary-elision-iter language/statements/variable/dstr-ary-ptrn-elem-ary-empty-init -language/statements/variable/dstr-ary-ptrn-elem-ary-empty-iter language/statements/variable/dstr-ary-ptrn-elem-ary-rest-init language/statements/variable/dstr-ary-ptrn-elem-ary-rest-iter -language/statements/variable/dstr-ary-ptrn-elem-ary-val-null -language/statements/variable/dstr-ary-ptrn-elem-id-init-exhausted language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-arrow language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-class language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-cover language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-fn language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-gen -language/statements/variable/dstr-ary-ptrn-elem-id-init-hole language/statements/variable/dstr-ary-ptrn-elem-id-init-skipped -language/statements/variable/dstr-ary-ptrn-elem-id-init-throws -language/statements/variable/dstr-ary-ptrn-elem-id-init-undef -language/statements/variable/dstr-ary-ptrn-elem-id-init-unresolvable -language/statements/variable/dstr-ary-ptrn-elem-id-iter-complete -language/statements/variable/dstr-ary-ptrn-elem-id-iter-done language/statements/variable/dstr-ary-ptrn-elem-id-iter-step-err language/statements/variable/dstr-ary-ptrn-elem-id-iter-val language/statements/variable/dstr-ary-ptrn-elem-id-iter-val-err -language/statements/variable/dstr-ary-ptrn-elem-obj-id -language/statements/variable/dstr-ary-ptrn-elem-obj-id-init -language/statements/variable/dstr-ary-ptrn-elem-obj-prop-id -language/statements/variable/dstr-ary-ptrn-elem-obj-prop-id-init -language/statements/variable/dstr-ary-ptrn-elem-obj-val-null -language/statements/variable/dstr-ary-ptrn-elem-obj-val-undef language/statements/variable/dstr-ary-ptrn-elision language/statements/variable/dstr-ary-ptrn-elision-exhausted language/statements/variable/dstr-ary-ptrn-elision-step-err @@ -9187,36 +8982,13 @@ language/statements/variable/dstr-ary-ptrn-rest-id-iter-step-err language/statements/variable/dstr-ary-ptrn-rest-id-iter-val-err language/statements/variable/dstr-ary-ptrn-rest-obj-id language/statements/variable/dstr-ary-ptrn-rest-obj-prop-id -language/statements/variable/dstr-obj-init-null -language/statements/variable/dstr-obj-init-undefined -language/statements/variable/dstr-obj-ptrn-empty -language/statements/variable/dstr-obj-ptrn-id-get-value-err language/statements/variable/dstr-obj-ptrn-id-init-fn-name-arrow language/statements/variable/dstr-obj-ptrn-id-init-fn-name-class language/statements/variable/dstr-obj-ptrn-id-init-fn-name-cover language/statements/variable/dstr-obj-ptrn-id-init-fn-name-fn language/statements/variable/dstr-obj-ptrn-id-init-fn-name-gen -language/statements/variable/dstr-obj-ptrn-id-init-skipped -language/statements/variable/dstr-obj-ptrn-id-init-throws -language/statements/variable/dstr-obj-ptrn-id-init-unresolvable -language/statements/variable/dstr-obj-ptrn-id-trailing-comma -language/statements/variable/dstr-obj-ptrn-list-err language/statements/variable/dstr-obj-ptrn-prop-ary language/statements/variable/dstr-obj-ptrn-prop-ary-init -language/statements/variable/dstr-obj-ptrn-prop-ary-trailing-comma -language/statements/variable/dstr-obj-ptrn-prop-ary-value-null -language/statements/variable/dstr-obj-ptrn-prop-eval-err -language/statements/variable/dstr-obj-ptrn-prop-id -language/statements/variable/dstr-obj-ptrn-prop-id-get-value-err -language/statements/variable/dstr-obj-ptrn-prop-id-init -language/statements/variable/dstr-obj-ptrn-prop-id-init-skipped -language/statements/variable/dstr-obj-ptrn-prop-id-init-throws -language/statements/variable/dstr-obj-ptrn-prop-id-init-unresolvable -language/statements/variable/dstr-obj-ptrn-prop-id-trailing-comma -language/statements/variable/dstr-obj-ptrn-prop-obj -language/statements/variable/dstr-obj-ptrn-prop-obj-init -language/statements/variable/dstr-obj-ptrn-prop-obj-value-null -language/statements/variable/dstr-obj-ptrn-prop-obj-value-undef language/statements/variable/fn-name-arrow language/statements/variable/fn-name-class language/statements/variable/fn-name-cover @@ -9262,4 +9034,4 @@ language/global-code/decl-lex-restricted-global language/statements/const/global-use-before-initialization-in-declaration-statement language/statements/const/global-use-before-initialization-in-prior-statement language/statements/let/global-use-before-initialization-in-declaration-statement -language/statements/let/global-use-before-initialization-in-prior-statement +language/statements/let/global-use-before-initialization-in-prior-statement
\ No newline at end of file |