async-gen-meth-dflt-ary-ptrn-rest-id-direct.js (2341B)
1 // |reftest| async 2 // This file was procedurally generated from the following sources: 3 // - src/dstr-binding/ary-ptrn-rest-id-direct.case 4 // - src/dstr-binding/default/cls-expr-async-gen-meth-dflt.template 5 /*--- 6 description: Lone rest element (direct binding) (class expression async generator method (default parameter)) 7 esid: sec-class-definitions-runtime-semantics-evaluation 8 features: [async-iteration] 9 flags: [generated, async] 10 includes: [compareArray.js] 11 info: | 12 ClassExpression : class BindingIdentifieropt ClassTail 13 14 1. If BindingIdentifieropt is not present, let className be undefined. 15 2. Else, let className be StringValue of BindingIdentifier. 16 3. Let value be the result of ClassDefinitionEvaluation of ClassTail 17 with argument className. 18 [...] 19 20 14.5.14 Runtime Semantics: ClassDefinitionEvaluation 21 22 21. For each ClassElement m in order from methods 23 a. If IsStatic of m is false, then 24 i. Let status be the result of performing 25 PropertyDefinitionEvaluation for m with arguments proto and 26 false. 27 [...] 28 29 Runtime Semantics: PropertyDefinitionEvaluation 30 31 AsyncGeneratorMethod : 32 async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) 33 { AsyncGeneratorBody } 34 35 1. Let propKey be the result of evaluating PropertyName. 36 2. ReturnIfAbrupt(propKey). 37 3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true. 38 Otherwise let strict be false. 39 4. Let scope be the running execution context's LexicalEnvironment. 40 5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters, 41 AsyncGeneratorBody, scope, strict). 42 [...] 43 44 45 Runtime Semantics: IteratorBindingInitialization 46 47 BindingRestElement : ... BindingIdentifier 48 49 [...] 50 2. Let A be ! ArrayCreate(0). 51 3. Let n be 0. 52 4. Repeat, 53 [...] 54 f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue). 55 g. Set n to n + 1. 56 57 ---*/ 58 59 60 var callCount = 0; 61 var C = class { 62 async *method([...x] = [1]) { 63 assert(Array.isArray(x)); 64 assert.compareArray(x, [1]); 65 callCount = callCount + 1; 66 } 67 }; 68 69 new C().method().next().then(() => { 70 assert.sameValue(callCount, 1, 'invoked exactly once'); 71 }).then($DONE, $DONE);