1--TEST--
2Traversables that throw exceptions are properly handled during argument unpack
3--FILE--
4<?php
5
6function test(...$args) {
7    var_dump($args);
8}
9
10class Foo implements IteratorAggregate {
11    public function getIterator(): Traversable {
12        throw new Exception('getIterator');
13    }
14}
15
16function gen() {
17    yield 1;
18    yield 2;
19    throw new Exception('gen');
20}
21
22try {
23    test(1, 2, ...new Foo, ...[3, 4]);
24} catch (Exception $e) { var_dump($e->getMessage()); }
25
26try {
27    test(1, 2, ...gen(), ...[3, 4]);
28} catch (Exception $e) { var_dump($e->getMessage()); }
29
30?>
31--EXPECT--
32string(11) "getIterator"
33string(3) "gen"
34