| 'use strict'; | 
|   | 
| var inspect = require('object-inspect'); | 
|   | 
| var GetIntrinsic = require('get-intrinsic'); | 
|   | 
| var $TypeError = GetIntrinsic('%TypeError%'); | 
|   | 
| var Call = require('./Call'); | 
| var Get = require('./Get'); | 
| var GetIterator = require('./GetIterator'); | 
| var IsCallable = require('./IsCallable'); | 
| var IteratorClose = require('./IteratorClose'); | 
| var IteratorStep = require('./IteratorStep'); | 
| var IteratorValue = require('./IteratorValue'); | 
| var Type = require('./Type'); | 
|   | 
| // https://262.ecma-international.org/10.0//#sec-add-entries-from-iterable | 
|   | 
| module.exports = function AddEntriesFromIterable(target, iterable, adder) { | 
|     if (!IsCallable(adder)) { | 
|         throw new $TypeError('Assertion failed: `adder` is not callable'); | 
|     } | 
|     if (iterable == null) { | 
|         throw new $TypeError('Assertion failed: `iterable` is present, and not nullish'); | 
|     } | 
|     var iteratorRecord = GetIterator(iterable); | 
|     while (true) { // eslint-disable-line no-constant-condition | 
|         var next = IteratorStep(iteratorRecord); | 
|         if (!next) { | 
|             return target; | 
|         } | 
|         var nextItem = IteratorValue(next); | 
|         if (Type(nextItem) !== 'Object') { | 
|             var error = new $TypeError('iterator next must return an Object, got ' + inspect(nextItem)); | 
|             return IteratorClose( | 
|                 iteratorRecord, | 
|                 function () { throw error; } // eslint-disable-line no-loop-func | 
|             ); | 
|         } | 
|         try { | 
|             var k = Get(nextItem, '0'); | 
|             var v = Get(nextItem, '1'); | 
|             Call(adder, target, [k, v]); | 
|         } catch (e) { | 
|             return IteratorClose( | 
|                 iteratorRecord, | 
|                 function () { throw e; } | 
|             ); | 
|         } | 
|     } | 
| }; |