1--TEST--
2Test DOMTokenList iterator invalidation after modification
3--EXTENSIONS--
4dom
5--FILE--
6<?php
7
8$dom = DOM\XMLDocument::createFromString('<root class="A B C D"/>');
9$list = $dom->documentElement->classList;
10
11
12echo "---\n";
13
14$counter = 0;
15foreach ($list as $key => $token) {
16    var_dump($key, $token);
17    if (++$counter === 2) {
18        $list->value = 'E F G';
19    }
20}
21
22echo "---\n";
23
24$iterator = $list->getIterator();
25$iterator->next();
26$list->value = 'X Y Z';
27var_dump($iterator->key());
28var_dump($iterator->current());
29$iterator->rewind();
30var_dump($iterator->key());
31var_dump($iterator->current());
32$list->value = '';
33var_dump($iterator->key());
34var_dump($iterator->current());
35var_dump($iterator->valid());
36
37?>
38--EXPECT--
39---
40int(0)
41string(1) "A"
42int(1)
43string(1) "B"
44int(2)
45string(1) "G"
46---
47int(1)
48string(1) "Y"
49int(0)
50string(1) "X"
51int(0)
52NULL
53bool(false)
54