=== tests/cases/conformance/es6/spread/iteratorSpreadInCall12.ts === new Foo(...[...new SymbolIterator, ...[...new StringIterator]]); >new Foo(...[...new SymbolIterator, ...[...new StringIterator]]) : Foo >Foo : typeof Foo >...[...new SymbolIterator, ...[...new StringIterator]] : string | symbol >[...new SymbolIterator, ...[...new StringIterator]] : (string | symbol)[] >...new SymbolIterator : symbol >new SymbolIterator : SymbolIterator >SymbolIterator : typeof SymbolIterator >...[...new StringIterator] : string >[...new StringIterator] : string[] >...new StringIterator : string >new StringIterator : StringIterator >StringIterator : typeof StringIterator class Foo { >Foo : Foo >T : T constructor(...s: T[]) { } >s : T[] >T : T } class SymbolIterator { >SymbolIterator : SymbolIterator next() { >next : () => { value: symbol; done: boolean; } return { >{ value: Symbol(), done: false } : { value: symbol; done: boolean; } value: Symbol(), >value : symbol >Symbol() : symbol >Symbol : SymbolConstructor done: false >done : boolean >false : boolean }; } [Symbol.iterator]() { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol return this; >this : SymbolIterator } } class StringIterator { >StringIterator : StringIterator next() { >next : () => { value: string; done: boolean; } return { >{ value: "", done: false } : { value: string; done: boolean; } value: "", >value : string >"" : string done: false >done : boolean >false : boolean }; } [Symbol.iterator]() { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol return this; >this : StringIterator } }