summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/harmony/iterator-constructor.js
blob: 61333f8619687ca1bc4fae6a3a6f389fb9a78bb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Copyright 2023 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Flags: --harmony-iterator-helpers

assertEquals('function', typeof Iterator);
assertEquals(0, Iterator.length);
assertEquals('Iterator', Iterator.name);

// Abstract base class, can't be instantiated.
assertThrows(() => new Iterator(), TypeError);

// Can be used as superclass though.
class MyIterator extends Iterator {
  next() {
    return {value: 42, done: false};
  }
}
const myIter = new MyIterator();
assertTrue(myIter instanceof MyIterator);

function* gen() {
  yield 42;
}
const genIter = gen();
assertTrue(genIter instanceof Iterator);
assertSame(
    Object.getPrototypeOf(
        Object.getPrototypeOf(Object.getPrototypeOf(genIter))),
    Iterator.prototype);