// This file was procedurally generated from the following sources:
// - src/dstr-binding/obj-ptrn-prop-id-trailing-comma.case
// - src/dstr-binding/default/try.template
/*---
description: Trailing comma is allowed following BindingPropertyList (try statement)
esid: sec-runtime-semantics-catchclauseevaluation
features: [destructuring-binding]
flags: [generated]
info: |
    Catch : catch ( CatchParameter ) Block

    [...]
    5. Let status be the result of performing BindingInitialization for
       CatchParameter passing thrownValue and catchEnv as arguments.
    [...]

    13.3.3 Destructuring Binding Patterns

    ObjectBindingPattern[Yield] :
        { }
        { BindingPropertyList[?Yield] }
        { BindingPropertyList[?Yield] , }
---*/

var ranCatch = false;

try {
  throw { x: 23 };
} catch ({ x: y, }) {
  assert.sameValue(y, 23);

  assert.throws(ReferenceError, function() {
    x;
  });
  ranCatch = true;
}

assert(ranCatch, 'executed `catch` block');
