| | |
| | | 'use strict'; |
| | | var $ = require('../internals/export'); |
| | | var call = require('../internals/function-call'); |
| | | var IS_PURE = require('../internals/is-pure'); |
| | | var FunctionName = require('../internals/function-name'); |
| | | var isCallable = require('../internals/is-callable'); |
| | |
| | | var setPrototypeOf = require('../internals/object-set-prototype-of'); |
| | | var setToStringTag = require('../internals/set-to-string-tag'); |
| | | var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); |
| | | var redefine = require('../internals/redefine'); |
| | | var defineBuiltIn = require('../internals/define-built-in'); |
| | | var wellKnownSymbol = require('../internals/well-known-symbol'); |
| | | var Iterators = require('../internals/iterators'); |
| | | var IteratorsCore = require('../internals/iterators-core'); |
| | |
| | | if (setPrototypeOf) { |
| | | setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); |
| | | } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { |
| | | redefine(CurrentIteratorPrototype, ITERATOR, returnThis); |
| | | defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); |
| | | } |
| | | } |
| | | // Set @@toStringTag to native iterators |
| | |
| | | createNonEnumerableProperty(IterablePrototype, 'name', VALUES); |
| | | } else { |
| | | INCORRECT_VALUES_NAME = true; |
| | | defaultIterator = function values() { return nativeIterator.call(this); }; |
| | | defaultIterator = function values() { return call(nativeIterator, this); }; |
| | | } |
| | | } |
| | | |
| | |
| | | }; |
| | | if (FORCED) for (KEY in methods) { |
| | | if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { |
| | | redefine(IterablePrototype, KEY, methods[KEY]); |
| | | defineBuiltIn(IterablePrototype, KEY, methods[KEY]); |
| | | } |
| | | } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); |
| | | } |
| | | |
| | | // define iterator |
| | | if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { |
| | | redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); |
| | | defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); |
| | | } |
| | | Iterators[NAME] = defaultIterator; |
| | | |