Open
Description
Edit: While working on #1129 I stumbled upon the following pattern that cannot be inferred yet because we don't yet attempt to recognize return types:
function foo(a: Set<i32> = new Set()) { ... }
function makeSet<T>(): Set<T> { ... }
foo(makeSet()); // expected 1 type argument, but got 0
Pinning here so we don't forget.