text: // Copyright (C) 2015 the V8 project authors. All rights reserved.
  // This code is governed by the BSD license found in the LICENSE file.
  /*---
  es6id: 19.1.2.1
  description: Invoked with a source which does not have a descriptor for an own property
  info: |
      [...]
      5. For each element nextSource of sources, in ascending index order,
         [...]
         c. Repeat for each element nextKey of keys in List order,
            i. Let desc be from.[[GetOwnProperty]](nextKey).
            ii. ReturnIfAbrupt(desc).
            iii. if desc is not undefined and desc.[[Enumerable]] is true, then
  features: [Proxy]
  ---*/
  
  var callCount = 0;
  var target = {};
  var result;
  var source = new Proxy({}, {
    ownKeys: function() {
      callCount += 1;
      return ['missing'];
    }
  });
  
  result = Object.assign(target, source);
  
  assert.sameValue(callCount, 1, 'Proxy trap was invoked exactly once');
  assert.sameValue(
    Object.hasOwnProperty.call(target, 'missing'),
    false,
    'An own property was not created for a property without a property descriptor'
  );
  assert.sameValue(result, target);
  