blob: b6293cb06342cd313de07d9dfb78cda48262c816 [file] [log] [blame]
keith_miller@apple.combcc77f22016-07-15 06:03:25 +00001// This file was procedurally generated from the following sources:
2// - src/dstr-binding/ary-ptrn-elem-id-init-fn-name-fn.case
3// - src/dstr-binding/default/meth-dflt.template
4/*---
5description: SingleNameBinding assigns name to "anonymous" functions (method (default parameter))
6esid: sec-runtime-semantics-definemethod
7es6id: 14.3.8
8features: [destructuring-binding, default-parameters]
9flags: [generated]
10info: |
11 MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
12
13 [...]
14 6. Let closure be FunctionCreate(kind, StrictFormalParameters,
15 FunctionBody, scope, strict). If functionPrototype was passed as a
16 parameter then pass its value as the functionPrototype optional argument
17 of FunctionCreate.
18 [...]
19
20 9.2.1 [[Call]] ( thisArgument, argumentsList)
21
22 [...]
23 7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
24 [...]
25
26 9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
27
28 1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
29 [...]
30
31 9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
32
33 [...]
34 23. Let iteratorRecord be Record {[[iterator]]:
35 CreateListIterator(argumentsList), [[done]]: false}.
36 24. If hasDuplicates is true, then
37 [...]
38 25. Else,
39 b. Let formalStatus be IteratorBindingInitialization for formals with
40 iteratorRecord and env as arguments.
41 [...]
42
43 13.3.3.6 Runtime Semantics: IteratorBindingInitialization
44
45 SingleNameBinding : BindingIdentifier Initializeropt
46
47 [...]
48 6. If Initializer is present and v is undefined, then
49 a. Let defaultValue be the result of evaluating Initializer.
50 b. Let v be GetValue(defaultValue).
51 c. ReturnIfAbrupt(v).
52 d. If IsAnonymousFunctionDefinition(Initializer) is true, then
53 [...]
54 7. If environment is undefined, return PutValue(lhs, v).
55 8. Return InitializeReferencedBinding(lhs, v).
56---*/
57
58var callCount = 0;
59var obj = {
60 method([fn = function () {}, xFn = function x() {}] = []) {
61 assert.sameValue(fn.name, 'fn');
62 assert.notSameValue(xFn.name, 'xFn');
63 callCount = callCount + 1;
64 }
65};
66
67obj.method();
68assert.sameValue(callCount, 1, 'method invoked exactly once');