Name Description Size Coverage
block-local-closure-get-before-initialization.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: block local closure [[Get]] before initialization. (TDZ, Temporal Dead Zone) features: [explicit-resource-management] --- 773 -
block-local-use-before-initialization-in-declaration-statement.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: block local use before initialization in declaration statement. (TDZ, Temporal Dead Zone) features: [explicit-resource-management] --- 745 -
block-local-use-before-initialization-in-prior-statement.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: block local use before initialization in prior statement. (TDZ, Temporal Dead Zone) features: [explicit-resource-management] --- 741 -
browser.js 0 -
cptn-value.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Returns an empty completion info: | UsingDeclaration : using BindingList ; 1. Perform ? BindingEvaluation of BindingList with argument sync-dispose. 2. Return empty. features: [explicit-resource-management] --- 1088 -
fn-name-arrow.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Assignment of function `name` attribute (ArrowFunction) info: | LexicalBinding : BindingIdentifier Initializer ... 3. If IsAnonymousFunctionDefinition(Initializer) is true, then a. Let value be NamedEvaluation of Initializer with argument bindingId includes: [propertyHelper.js] features: [explicit-resource-management] --- 1231 -
fn-name-class.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Assignment of function `name` attribute (ClassExpression) info: | LexicalBinding : BindingIdentifier Initializer ... 3. If IsAnonymousFunctionDefinition(Initializer) is true, then a. Let value be NamedEvaluation of Initializer with argument bindingId includes: [propertyHelper.js] features: [class, explicit-resource-management] --- 1309 -
fn-name-cover.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: > Assignment of function `name` attribute (CoverParenthesizedExpression) info: | LexicalBinding : BindingIdentifier Initializer ... 3. If IsAnonymousFunctionDefinition(Initializer) is true, then a. Let value be NamedEvaluation of Initializer with argument bindingId includes: [propertyHelper.js] features: [explicit-resource-management] --- 1337 -
fn-name-fn.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Assignment of function `name` attribute (FunctionExpression) info: | LexicalBinding : BindingIdentifier Initializer ... 3. If IsAnonymousFunctionDefinition(Initializer) is true, then a. Let value be NamedEvaluation of Initializer with argument bindingId includes: [propertyHelper.js] features: [explicit-resource-management] --- 1289 -
fn-name-gen.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Assignment of function `name` attribute (GeneratorExpression) info: | LexicalBinding : BindingIdentifier Initializer ... 3. If IsAnonymousFunctionDefinition(Initializer) is true, then a. Let value be NamedEvaluation of Initializer with argument bindingId includes: [propertyHelper.js] features: [generators,explicit-resource-management] --- 1312 -
function-local-closure-get-before-initialization.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: function local closure [[Get]] before initialization. (TDZ, Temporal Dead Zone) features: [explicit-resource-management] --- 792 -
function-local-use-before-initialization-in-declaration-statement.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: function local use before initialization in declaration statement. (TDZ, Temporal Dead Zone) features: [explicit-resource-management] --- 764 -
function-local-use-before-initialization-in-prior-statement.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: function local use before initialization in prior statement. (TDZ, Temporal Dead Zone) features: [explicit-resource-management] --- 760 -
gets-initializer-Symbol.dispose-property-once.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Only reads `[Symbol.dispose]` method once, when initialized. info: | RS: Evaluation UsingDeclaration : using BindingList ; 1. Perform ? BindingEvaluation of BindingList with argument sync-dispose. 2. Return empty. RS: BindingEvaluation BindingList : BindingList , LexicalBinding 1. Perform ? BindingEvaluation of BindingList with argument hint. 2. Perform ? BindingEvaluation of LexicalBinding with argument hint. 3. Return unused. 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 b. Let resource be ? CreateDisposableResource(V, hint). ... CreateDisposableResource ( V, hint [ , method ] ) 1. If method is not present, then a. If V is either null or undefined, then i. Set V to undefined ii. Set method to undefined b. Else, i. If Type(V) is not Object, throw a TypeError exception. ii. Set method to ? GetDisposeMethod(V, hint). iii. If method is undefined, throw a TypeError exception. 2. Else, a. ... 3. Return the DisposableResource Record { [[ResourceValue]]: V, [[Hint]]: hint, [[DisposeMethod]]: method }. GetDisposeMethod ( V, hint ) 1. If hint is async-dispose, then a. Let method be ? GetMethod(V, @@asyncDispose). b. If method is undefined, then i. Set method to ? GetMethod(V, @@dispose). 2. Else, a. Let method be ? GetMethod(V, @@dispose). 3. Return method. features: [explicit-resource-management] --- 2773 -
global-closure-get-before-initialization.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: global closure [[Get]] before initialization. (TDZ, Temporal Dead Zone) features: [explicit-resource-management] --- 768 -
global-use-before-initialization-in-declaration-statement.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: global use before initialization in declaration statement. (TDZ, Temporal Dead Zone) negative: phase: runtime type: ReferenceError features: [explicit-resource-management] --- 736 -
global-use-before-initialization-in-prior-statement.js --- esid: sec-declarative-environment-records-getbindingvalue-n-s description: > using: global use before initialization in prior statement. (TDZ, Temporal Dead Zone) negative: phase: runtime type: ReferenceError features: [explicit-resource-management] --- 732 -
initializer-disposed-at-end-of-asyncfunctionbody.js --- esid: sec-asyncblockstart description: Initialized value is disposed at end of AsyncFunctionBody info: | AsyncBlockStart ( promiseCapability, asyncBody, asyncContext ) 1. Assert: promiseCapability is a PromiseCapability Record. 2. Let runningContext be the running execution context. 3. Let closure be a new Abstract Closure with no parameters that captures promiseCapability and asyncBody and performs the following steps when called: a. Let acAsyncContext be the running execution context. b. Let result be Completion(Evaluation of asyncBody). c. Assert: If we return here, the async function either threw an exception or performed an implicit or explicit return; all awaiting is done. d. Remove acAsyncContext from the execution context stack and restore the execution context that is at the top of the execution context stack as the running execution context. e. Let env be acAsyncContext's LexicalEnvironment. f. Set result to DisposeResources(env.[[DisposeCapability]], result). g. If result.[[Type]] is normal, then i. Perform ! Call(promiseCapability.[[Resolve]], undefined, « undefined »). h. Else if result.[[Type]] is return, then i. Perform ! Call(promiseCapability.[[Resolve]], undefined, « result.[[Value]] »). i. Else, i. Assert: result.[[Type]] is throw. ii. Perform ! Call(promiseCapability.[[Reject]], undefined, « result.[[Value]] »). j. Return unused. 4. Set the code evaluation state of asyncContext such that when evaluation is resumed for that execution context, closure will be called with no arguments. 5. Push asyncContext onto the execution context stack; asyncContext is now the running execution context. 6. Resume the suspended evaluation of asyncContext. Let result be the value returned by the resumed computation. 7. Assert: When we return here, asyncContext has already been removed from the execution context stack and runningContext is the currently running execution context. 8. Assert: result is a normal completion with a value of unused. The possible sources of this value are Await or, if the async function doesn't await anything, step 3.h above. 9. Return unused. DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. flags: [async] includes: [asyncHelpers.js] features: [explicit-resource-management] --- 5019 -
initializer-disposed-at-end-of-asyncgeneratorbody.js --- esid: sec-asyncgeneratorstart description: Initialized value is disposed at end of AsyncGeneratorBody info: | AsyncGeneratorStart ( generator, generatorBody ) 1. Assert: generator.[[AsyncGeneratorState]] is undefined. 2. Let genContext be the running execution context. 3. Set the Generator component of genContext to generator. 4. Let closure be a new Abstract Closure with no parameters that captures generatorBody and performs the following steps when called: a. Let acGenContext be the running execution context. b. Let acGenerator be the Generator component of acGenContext. c. If generatorBody is a Parse Node, then i. Let result be Completion(Evaluation of generatorBody). d. Else, i. Assert: generatorBody is an Abstract Closure with no parameters. ii. Let result be Completion(generatorBody()). e. Assert: If we return here, the async generator either threw an exception or performed either an implicit or explicit return. f. Remove acGenContext from the execution context stack and restore the execution context that is at the top of the execution context stack as the running execution context. g. Set acGenerator.[[AsyncGeneratorState]] to completed. h. Let env be genContext's LexicalEnvironment. i. If env is not undefined, then i. Assert: env is a Declarative Environment Record ii. Set result to DisposeResources(env.[[DisposeCapability]], result). h. If result.[[Type]] is normal, set result to NormalCompletion(undefined). i. If result.[[Type]] is return, set result to NormalCompletion(result.[[Value]]). j. Perform AsyncGeneratorCompleteStep(acGenerator, result, true). k. Perform AsyncGeneratorDrainQueue(acGenerator). l. Return undefined. 5. Set the code evaluation state of genContext such that when evaluation is resumed for that execution context, closure will be called with no arguments. 6. Set generator.[[AsyncGeneratorContext]] to genContext. 7. Set generator.[[AsyncGeneratorState]] to suspendedStart. 8. Set generator.[[AsyncGeneratorQueue]] to a new empty List. 9. Return unused. DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. flags: [async] includes: [asyncHelpers.js] features: [explicit-resource-management] --- 4951 -
initializer-disposed-at-end-of-block.js --- esid: sec-block-runtime-semantics-evaluation description: Initialized value is disposed at end of Block info: | RS: Evaluation Block : { StatementList } ... 5. Let blockValue be the result of evaluating StatementList. 6. Set blockValue to DisposeResources(blockEnv.[[DisposeCapability]], blockValue). ... DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. features: [explicit-resource-management] --- 2046 -
initializer-disposed-at-end-of-each-iteration-of-forofstatementjs 3162 -
initializer-disposed-at-end-of-forstatement.js --- esid: sec-runtime-semantics-forloopevaluation description: Initialized value is disposed at end of ForStatement info: | RS: ForLoopEvaluation ForStatement : for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement ... 12. Let bodyResult be Completion(ForBodyEvaluation(test, increment, Statement, perIterationLets, labelSet)). 13. Set bodyResult to Completion(DisposeResources(loopEnv.[[DisposeCapability]], bodyResult)). 14. Assert: If bodyResult.[[Type]] is normal, then bodyResult.[[Value]] is not empty. ... DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. features: [explicit-resource-management] --- 2501 -
initializer-disposed-at-end-of-functionbody.js --- esid: sec-runtime-semantics-evaluatefunctionbody description: Initialized value is disposed at end of FunctionBody info: | FunctionBody : FunctionStatementList ... 3. Let result be Completion(Evaluation of FunctionStatementList). 4. Let env be the running execution context's LexicalEnvironment. 5. Return ? DisposeResources(env.[[DisposeCapability]], result). DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. features: [explicit-resource-management] --- 2111 -
initializer-disposed-at-end-of-generatorbody.js --- esid: sec-generatorstart description: Initialized value is disposed at end of GeneratorBody info: | GeneratorStart ( generator, generatorBody ) 1. Assert: The value of generator.[[GeneratorState]] is undefined. 2. Let genContext be the running execution context. 3. Set the Generator component of genContext to generator. 4. Let closure be a new Abstract Closure with no parameters that captures generatorBody and performs the following steps when called: a. Let acGenContext be the running execution context. b. Let acGenerator be the Generator component of acGenContext. c. If generatorBody is a Parse Node, then i. Let result be Completion(Evaluation of generatorBody). d. Else, i. Assert: generatorBody is an Abstract Closure with no parameters. ii. Let result be generatorBody(). e. Assert: If we return here, the generator either threw an exception or performed either an implicit or explicit return. f. Remove acGenContext from the execution context stack and restore the execution context that is at the top of the execution context stack as the running execution context. g. Set acGenerator.[[GeneratorState]] to completed. h. NOTE: Once a generator enters the completed state it never leaves it and its associated execution context is never resumed. Any execution state associated with acGenerator can be discarded at this point. i. Let env be genContext's LexicalEnvironment. j. If env is not undefined, then i. Assert: env is a Declarative Environment Record. i. Set result to DisposeResources(env.[[DisposeCapability]], result). k. If result.[[Type]] is normal, then i. Let resultValue be undefined. l. Else if result.[[Type]] is return, then i. Let resultValue be result.[[Value]]. m. Else, i. Assert: result.[[Type]] is throw. ii. Return ? result. n. Return CreateIterResultObject(resultValue, true). 5. Set the code evaluation state of genContext such that when evaluation is resumed for that execution context, closure will be called with no arguments. 6. Set generator.[[GeneratorContext]] to genContext. 7. Set generator.[[GeneratorState]] to suspendedStart. 8. Return unused. DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. features: [explicit-resource-management] --- 4507 -
initializer-disposed-if-subsequent-initializer-throws-in-forstatement-head.js --- esid: sec-runtime-semantics-forloopevaluation description: Initialized value is disposed at end of FunctionBody info: | RS: ForLoopEvaluation ForStatement : for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement ... 7. Let forDcl be Completion(Evaluation of LexicalDeclaration). 8. If forDcl is an abrupt completion, then a. Set forDcl to Completion(DisposeResources(loopEnv.[[DisposeCapability]], forDcl)). b. Assert: forDcl is an abrupt completion. c. Set the running execution context's LexicalEnvironment to oldEnv. d. Return ? forDcl. ... DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. features: [explicit-resource-management] --- 2469 -
initializer-disposed-if-subsequent-initializer-throws.js --- esid: sec-block-runtime-semantics-evaluation description: Initialized value is disposed even if subsequent initializer throws info: | RS: Evaluation Block : { StatementList } ... 5. Let blockValue be the result of evaluating StatementList. 6. Set blockValue to DisposeResources(blockEnv.[[DisposeCapability]], blockValue). ... DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. features: [explicit-resource-management] --- 2173 -
multiple-resources-disposed-in-reverse-order.js --- esid: sec-disposeresources description: Multiple resources are disposed in the reverse of the order in which they were added info: | RS: Evaluation Block : { StatementList } ... 5. Let blockValue be the result of evaluating StatementList. 6. Set blockValue to DisposeResources(blockEnv.[[DisposeCapability]], blockValue). ... DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. ... 4. Return undefined. features: [explicit-resource-management] --- 2261 -
puts-initializer-on-top-of-disposableresourcestack-multiple-bindings.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: > Puts initialized value on the top of the environment's [[DisposableResourceStack]] with multiple lexical bindings in a single 'using' declaration info: | RS: Evaluation UsingDeclaration : using BindingList ; 1. Perform ? BindingEvaluation of BindingList with argument sync-dispose. 2. Return empty. RS: BindingEvaluation BindingList : BindingList , LexicalBinding 1. Perform ? BindingEvaluation of BindingList with argument hint. 2. Perform ? BindingEvaluation of LexicalBinding with argument hint. 3. Return unused. 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. b. Let resource be ? CreateDisposableResource(V, hint). 3. Else, ... 3. Append resource to disposeCapability.[[DisposableResourceStack]]. 4. Return unused. features: [explicit-resource-management] --- 2338 -
puts-initializer-on-top-of-disposableresourcestack-subsequent-usings.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: > Puts initialized value on the top of the environment's [[DisposableResourceStack]] with multiple subsequent 'using' declarations in the same block scope 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. b. Let resource be ? CreateDisposableResource(V, hint). 3. Else, ... 3. Append resource to disposeCapability.[[DisposableResourceStack]]. 4. Return unused. features: [explicit-resource-management] --- 2139 -
redeclaration-error-from-within-strict-mode-function-using.js --- esid: sec-declarative-environment-records-initializebinding-n-v description: > Redeclaration error within strict mode function inside non-strict code. negative: phase: parse type: SyntaxError flags: [noStrict, explicit-resource-management] --- 497 -
shell.js --- description: | A collection of assertion and wrapper functions for testing asynchronous built-ins. defines: [asyncTest, assert.throwsAsync] --- 3626 -
static-init-await-binding-invalid.js --- esid: sec-class-definitions-static-semantics-early-errors description: BindingIdentifier may not be `await` within class static blocks info: | BindingIdentifier : Identifier [...] - It is a Syntax Error if the code matched by this production is nested, directly or indirectly (but not crossing function or static initialization block boundaries), within a ClassStaticBlock and the StringValue of Identifier is "await". negative: phase: parse type: SyntaxError features: [class-static-block, explicit-resource-management] --- 1056 -
static-init-await-binding-valid.js --- esid: sec-class-definitions-static-semantics-early-errors description: The `await` keyword is interpreted as an identifier within arrow function bodies info: | ClassStaticBlockBody : ClassStaticBlockStatementList [...] - It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true. features: [class-static-block, explicit-resource-management] --- 879 -
Symbol.dispose-getter.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Invokes [Symbol.dispose] getter 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. b. Let resource be ? CreateDisposableResource(V, hint). 2. Else, ... 3. Append resource to disposeCapability.[[DisposableResourceStack]]. 4. Return unused. CreateDisposableResource ( V, hint [ , method ] ) 1. If method is not present, then a. If V is either null or undefined, then i. Set V to undefined. ii. Set method to undefined. b. Else, i. If V is not an Object, throw a TypeError exception. ii. Set method to ? GetDisposeMethod(V, hint). iii. If method is undefined, throw a TypeError exception. 2. Else, ... 3. Return the DisposableResource Record { [[ResourceValue]]: V, [[Hint]]: hint, [[DisposeMethod]]: method }. GetDisposeMethod ( V, hint ) 1. If hint is async-dispose, then ... 2. Else, a. Let method be ? GetMethod(V, @@dispose). 3. Return method. GetMethod ( V, P ) 1. Let func be ? GetV(V, P). 2. If func is either undefined or null, return undefined. 3. If IsCallable(func) is false, throw a TypeError exception. 4. Return func. features: [explicit-resource-management] --- 2660 -
Symbol.dispose-method-called-with-correct-this.js --- esid: sec-block-runtime-semantics-evaluation description: Initialized value is disposed with the correct 'this' value info: | RS: Evaluation Block : { StatementList } ... 5. Let blockValue be the result of evaluating StatementList. 6. Set blockValue to DisposeResources(blockEnv.[[DisposeCapability]], blockValue). ... DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). ... features: [explicit-resource-management] --- 1921 -
syntax -
throws-error-as-is-if-only-one-error-during-disposal.js --- esid: sec-disposeresources description: > Rethrows an error as-is if it is the only error thrown during evaluation of subsequent statements following 'using' or from disposal. info: | DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. Perform ? Await(result). 4. Return undefined. features: [explicit-resource-management] --- 2177 -
throws-if-initializer-missing-Symbol.dispose.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Throws if initialized value is missing Symbol.dispose property info: | RS: Evaluation UsingDeclaration : using BindingList ; 1. Perform ? BindingEvaluation of BindingList with argument sync-dispose. 2. Return empty. RS: BindingEvaluation BindingList : BindingList , LexicalBinding 1. Perform ? BindingEvaluation of BindingList with argument hint. 2. Perform ? BindingEvaluation of LexicalBinding with argument hint. 3. Return unused. 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. b. Let resource be ? CreateDisposableResource(V, hint). 3. Else, ... 3. Append resource to disposeCapability.[[DisposableResourceStack]]. 4. Return unused. CreateDisposableResource ( V, hint [ , method ] ) 1. If method is not present, then a. If V is either null or undefined, then ... b. Else, i. If V is not an Object, throw a TypeError exception. ii. Set method to ? GetDisposeMethod(V, hint). iii. If method is undefined, throw a TypeError exception. ... features: [explicit-resource-management] --- 2194 -
throws-if-initializer-not-object.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Throws if initialized value is not an Object 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. b. Let resource be ? CreateDisposableResource(V, hint). ... CreateDisposableResource ( V, hint [ , method ] ) 1. If method is not present, then a. If V is either null or undefined, then ... b. Else, i. If V is not an Object, throw a TypeError exception. ... ... features: [explicit-resource-management] --- 2057 -
throws-if-initializer-Symbol.dispose-property-is-null.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Throws if initialized value's Symbol.dispose property is null 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. b. Let resource be ? CreateDisposableResource(V, hint). 2. Else, ... 3. Append resource to disposeCapability.[[DisposableResourceStack]]. 4. Return unused. CreateDisposableResource ( V, hint [ , method ] ) 1. If method is not present, then a. If V is either null or undefined, then ... b. Else, i. If V is not an Object, throw a TypeError exception. ii. Set method to ? GetDisposeMethod(V, hint). iii. If method is undefined, throw a TypeError exception. ... GetDisposeMethod ( V, hint ) 1. If hint is async-dispose, then ... 2. Else, a. Let method be ? GetMethod(V, @@dispose). 3. Return method. GetMethod ( V, P ) 1. Let func be ? GetV(V, P). 2. If func is either undefined or null, return undefined. 3. ... features: [explicit-resource-management] --- 2281 -
throws-if-initializer-Symbol.dispose-property-is-undefined.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Throws if initialized value's Symbol.dispose property is undefined 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. b. Let resource be ? CreateDisposableResource(V, hint). 2. Else, ... 3. Append resource to disposeCapability.[[DisposableResourceStack]]. 4. Return unused. CreateDisposableResource ( V, hint [ , method ] ) 1. If method is not present, then a. If V is either null or undefined, then ... b. Else, i. If V is not an Object, throw a TypeError exception. ii. Set method to ? GetDisposeMethod(V, hint). iii. If method is undefined, throw a TypeError exception. ... GetDisposeMethod ( V, hint ) 1. If hint is async-dispose, then ... 2. Else, a. Let method be ? GetMethod(V, @@dispose). 3. Return method. GetMethod ( V, P ) 1. Let func be ? GetV(V, P). 2. If func is either undefined or null, return undefined. 3. ... features: [explicit-resource-management] --- 2291 -
throws-if-initializer-Symbol.dispose-property-not-callable.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Throws if initialized value's Symbol.dispose property is not callable 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. b. Let resource be ? CreateDisposableResource(V, hint). 2. Else, ... 3. Append resource to disposeCapability.[[DisposableResourceStack]]. 4. Return unused. CreateDisposableResource ( V, hint [ , method ] ) 1. If method is not present, then a. If V is either null or undefined, then i. Set V to undefined. ii. Set method to undefined. b. Else, i. If V is not an Object, throw a TypeError exception. ii. Set method to ? GetDisposeMethod(V, hint). iii. If method is undefined, throw a TypeError exception. 2. Else, ... 3. Return the DisposableResource Record { [[ResourceValue]]: V, [[Hint]]: hint, [[DisposeMethod]]: method }. GetDisposeMethod ( V, hint ) 1. If hint is async-dispose, then ... 2. Else, a. Let method be ? GetMethod(V, @@dispose). 3. Return method. GetMethod ( V, P ) 1. Let func be ? GetV(V, P). 2. If func is either undefined or null, return undefined. 3. If IsCallable(func) is false, throw a TypeError exception. 4. Return func. features: [explicit-resource-management] --- 2933 -
throws-suppressederror-if-multiple-errors-during-disposal.js --- esid: sec-disposeresources description: > Throws a nested hierarchy of SuppressedErrors if multiple errors were thrown during evaluation of subsequent statements following 'using' and/or from disposal. info: | DisposeResources ( disposeCapability, completion ) 1. For each resource of disposeCapability.[[DisposableResourceStack]], in reverse list order, do a. Let result be Dispose(resource.[[ResourceValue]], resource.[[Hint]], resource.[[DisposeMethod]]). b. If result.[[Type]] is throw, then i. If completion.[[Type]] is throw, then 1. Set result to result.[[Value]]. 2. Let suppressed be completion.[[Value]]. 3. Let error be a newly created SuppressedError object. 4. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "error", result). 5. Perform ! CreateNonEnumerableDataPropertyOrThrow(error, "suppressed", suppressed). 6. Set completion to ThrowCompletion(error). ii. Else, 1. Set completion to result. 2. Return completion. Dispose ( V, hint, method ) 1. If method is undefined, let result be undefined. 2. Else, let result be ? Call(method, V). 3. If hint is async-dispose, then a. Perform ? Await(result). 4. Return undefined. features: [explicit-resource-management] --- 2557 -
using-allows-null-initializer.js --- esid: sec-let-and-const-declarations-runtime-semantics-evaluation description: Allows null 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] --- 1416 -
using-allows-undefined-initializer.js --- 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] --- 1426 -