text: // Copyright (C) 2016 the V8 project authors. All rights reserved.
  // This code is governed by the BSD license found in the LICENSE file.
  /*---
  esid: sec-destructuring-assignment
  es6id: 12.14.5
  description: Duplicate __proto__ property names
  info: >
      Annex B defines an early error for duplicate PropertyName of `__proto__`,
      in object initializers, but this does not apply to Object Assignment
      patterns
  ---*/
  
  // Explicitly define an "own" property to avoid Annex B "__proto__ Property
  // Names in Object Initializers" semantics (in environments which implement
  // that extension)
  var value = Object.defineProperty({}, '__proto__', { value: 123 });
  var result, x, y;
  
  result = { __proto__: x, __proto__: y } = value;
  
  assert.sameValue(result, value);
  assert.sameValue(x, 123, 'first AssignmentProperty');
  assert.sameValue(y, 123, 'second AssignmentProperty');
  
  result = x = y = null;
  
  // CoverParenthesizedExpressionAndArrowParameterList
  result = ({ __proto__: x, __proto__: y } = value);
  
  assert.sameValue(result, value);
  assert.sameValue(x, 123, 'first AssignmentProperty (CPEAAPL)');
  assert.sameValue(y, 123, 'second AssignmentProperty (CPEAAPL)');
  