separated from #22432 **TypeScript Version:** 2.7.0-dev.20180307 <!-- Search terms you tried before logging this (so others can find this issue more easily) --> **Search Terms:** **Code** ```ts type B<R, S> = [R] | [R, S]; declare function g<T, U>(f: B<T, U>): void; g([[]] as [void[]]); // U: {} type C<R, S> = [R[]] | [R[], S]; declare function h<T, U>(f: C<T, U>): void; h([[]] as [void[]]); // U: void[] | ConcatArray<void[]> ``` **Expected behavior:** ```ts h([[]] as [void[]]); // U: {} ``` **Actual behavior:** ```ts h([[]] as [void[]]); // U: void[] | ConcatArray<void[]> ``` **Playground Link:** <!-- A link to a TypeScript Playground "Share" link which demonstrates this behavior --> **Related Issues:**