diff --git a/spec.emu b/spec.emu index d475853..f602c7a 100644 --- a/spec.emu +++ b/spec.emu @@ -16,7 +16,7 @@ copyright: false 1. Repeat, while _items_ is not empty, 1. Let _iter_ be the first element of _items_. 1. Remove the first element from _items_. - 1. Let _iteratorRecord_ be ? GetIteratorFlattenable(_iter_, ~iterate-strings~). + 1. Let _iteratorRecord_ be ? GetIteratorFlattenable(_iter_, ~reject-strings~). 1. Let _innerAlive_ be *true*. 1. Repeat, while _innerAlive_ is *true*, 1. Let _innerValue_ be ? IteratorStepValue(_iteratorRecord_). diff --git a/src/index.ts b/src/index.ts index 88b7679..63bca7f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,8 +4,6 @@ if (typeof Iterator === 'undefined' || Iterator == null) { globalThis.Iterator = function() {}; } -const IteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([].values())) - function getIteratorFlattenable(obj: IteratorOrIterable, stringHandling: 'iterate-strings' | 'reject-strings'): Iterator function getIteratorFlattenable(obj: any, stringHandling: 'iterate-strings' | 'reject-strings'): Iterator function getIteratorFlattenable(obj: any, stringHandling: 'iterate-strings' | 'reject-strings'): Iterator { @@ -44,10 +42,10 @@ function* concatImpl(...iterators: Array): Generator { try { for (; i < iterators.length; ++i) { let iter = iterators[i]; - yield* liftIterator(getIteratorFlattenable(iter, 'iterate-strings')); + yield* liftIterator(getIteratorFlattenable(iter, 'reject-strings')); } } finally { - let err = null, hasErr = false;; + let err = null, hasErr = false; for (++i; i < iterators.length; ++i) { try { let obj = iterators[i]; diff --git a/test/index.mjs b/test/index.mjs index 71917d7..931a617 100644 --- a/test/index.mjs +++ b/test/index.mjs @@ -30,10 +30,11 @@ test('concat', async t => { ); }); -test('concat iterates strings', async t => { - assert.deepEqual( - Array.from(Iterator.concat("ab", "cd")), - ["a", "b", "c", "d"], +test('concat does not iterate strings', async t => { + let it = Iterator.concat("ab", "cd"); + assert.throws( + () => Array.from(it), + TypeError, ); }); @@ -142,4 +143,4 @@ test('closes later iterators', async t => { concatted.return(); assert.deepEqual(returned, ['a', 'b', 'c']); }); -}); \ No newline at end of file +});