2 // 19.1.2.1 Object.assign(target, source, ...)
3 var getKeys = require('./_object-keys')
4 , gOPS = require('./_object-gops')
5 , pIE = require('./_object-pie')
6 , toObject = require('./_to-object')
7 , IObject = require('./_iobject')
8 , $assign = Object.assign;
10 // should work with symbols and should have deterministic property order (V8 bug)
11 module.exports = !$assign || require('./_fails')(function(){
15 , K = 'abcdefghijklmnopqrst';
17 K.split('').forEach(function(k){ B[k] = k; });
18 return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
19 }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
20 var T = toObject(target)
21 , aLen = arguments.length
26 var S = IObject(arguments[index++])
27 , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
28 , length = keys.length
31 while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];