.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / modules / esnext.iterator.constructor.js
1 'use strict';
2 // https://github.com/tc39/proposal-iterator-helpers
3 var $ = require('../internals/export');
4 var global = require('../internals/global');
5 var anInstance = require('../internals/an-instance');
6 var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
7 var fails = require('../internals/fails');
8 var has = require('../internals/has');
9 var wellKnownSymbol = require('../internals/well-known-symbol');
10 var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
11 var IS_PURE = require('../internals/is-pure');
12
13 var ITERATOR = wellKnownSymbol('iterator');
14 var TO_STRING_TAG = wellKnownSymbol('toStringTag');
15
16 var NativeIterator = global.Iterator;
17
18 // FF56- have non-standard global helper `Iterator`
19 var FORCED = IS_PURE
20   || typeof NativeIterator != 'function'
21   || NativeIterator.prototype !== IteratorPrototype
22   // FF44- non-standard `Iterator` passes previous tests
23   || !fails(function () { NativeIterator({}); });
24
25 var IteratorConstructor = function Iterator() {
26   anInstance(this, IteratorConstructor);
27 };
28
29 if (IS_PURE) {
30   IteratorPrototype = {};
31   createNonEnumerableProperty(IteratorPrototype, ITERATOR, function () {
32     return this;
33   });
34 }
35
36 if (!has(IteratorPrototype, TO_STRING_TAG)) {
37   createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator');
38 }
39
40 if (FORCED || !has(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) {
41   createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor);
42 }
43
44 IteratorConstructor.prototype = IteratorPrototype;
45
46 $({ global: true, forced: FORCED }, {
47   Iterator: IteratorConstructor
48 });