type A = 1 | 2; function f(a: T): A & T { return a; } // Shouldn't error type B = 2 | 3; function f2(ab: T & U): (A | B) & T & U { return ab; } // Also shouldn't error