text: // This file was procedurally generated from the following sources:
  // - src/dstr-binding/obj-ptrn-rest-getter.case
  // - src/dstr-binding/default/meth.template
  /*---
  description: Getter is called when obj is being deconstructed to a rest Object (method)
  esid: sec-runtime-semantics-definemethod
  es6id: 14.3.8
  features: [object-rest, destructuring-binding]
  flags: [generated]
  includes: [propertyHelper.js]
  info: |
      MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
  
      [...]
      6. Let closure be FunctionCreate(kind, StrictFormalParameters,
         FunctionBody, scope, strict). If functionPrototype was passed as a
         parameter then pass its value as the functionPrototype optional argument
         of FunctionCreate.
      [...]
  
      9.2.1 [[Call]] ( thisArgument, argumentsList)
  
      [...]
      7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
      [...]
  
      9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
  
      1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
      [...]
  
      9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
  
      [...]
      23. Let iteratorRecord be Record {[[iterator]]:
          CreateListIterator(argumentsList), [[done]]: false}.
      24. If hasDuplicates is true, then
          [...]
      25. Else,
          b. Let formalStatus be IteratorBindingInitialization for formals with
             iteratorRecord and env as arguments.
      [...]
  ---*/
  var count = 0;
  
  var callCount = 0;
  var obj = {
    method({...x}) {
      assert.sameValue(x.v, 2);
      assert.sameValue(count, 1);
  
      verifyEnumerable(x, "v");
      verifyWritable(x, "v");
      verifyConfigurable(x, "v");
  
      callCount = callCount + 1;
    }
  };
  
  obj.method({ get v() { count++; return 2; } });
  assert.sameValue(callCount, 1, 'method invoked exactly once');
  