| | |
| | | var global = require('../internals/global'); |
| | | var call = require('../internals/function-call'); |
| | | var aCallable = require('../internals/a-callable'); |
| | | var anObject = require('../internals/an-object'); |
| | | var tryToString = require('../internals/try-to-string'); |
| | | var getIteratorMethod = require('../internals/get-iterator-method'); |
| | | |
| | | var TypeError = global.TypeError; |
| | | |
| | | module.exports = function (argument, usingIterator) { |
| | | var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; |
| | | if (aCallable(iteratorMethod)) return anObject(iteratorMethod.call(argument)); |
| | | throw TypeError(String(argument) + ' is not iterable'); |
| | | if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); |
| | | throw TypeError(tryToString(argument) + ' is not iterable'); |
| | | }; |