**TypeScript Version:** 2.0.3 **Code** ``` ts function foo<A, B>(c:boolean, a:A, ab:A & B) { // foo return type is inferred to A instead of A | (A & B) return c ? a : ab; } ``` **Expected behavior:** foo return type is inferred to A | (A & B) **Actual behavior:** foo return type is inferred to A