blob: 717591ffe4600365381ee1ab7fbf67b84218ce9e [file] [log] [blame] [edit]
// Copyright (C) 2023 Ron Buckton. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-let-and-const-declarations-runtime-semantics-evaluation
description: Allows undefined in initializer of 'using'
info: |
RS: Evaluation
UsingDeclaration : using BindingList ;
1. Perform ? BindingEvaluation of BindingList with argument sync-dispose.
2. Return empty.
RS: BindingEvaluation
LexicalBinding : BindingIdentifier Initializer
...
5. Return ? InitializeReferencedBinding(lhs, value, hint).
InitializeReferencedBinding ( V, W )
...
4. Return ? base.InitializeBinding(V.[[ReferencedName]], W).
InitializeBinding ( N, V, hint )
...
2. If hint is not normal, perform ? AddDisposableResource(envRec.[[DisposeCapability]], V, hint).
...
AddDisposableResource ( disposeCapability, V, hint [, method ] )
1. If method is not present then,
a. If V is either null or undefined and hint is sync-dispose, then
i. Return unused.
...
...
features: [explicit-resource-management]
---*/
{
using x = undefined;
}