tests/cases/conformance/types/spread/spreadOverwritesPropertyStrict.ts(3,17): error TS2783: 'b' is specified more than once, so this usage will be overwritten.
tests/cases/conformance/types/spread/spreadOverwritesPropertyStrict.ts(15,14): error TS2783: 'x' is specified more than once, so this usage will be overwritten.


==== tests/cases/conformance/types/spread/spreadOverwritesPropertyStrict.ts (2 errors) ====
    declare var ab: { a: number, b: number };
    declare var abq: { a: number, b?: number };
    var unused1 = { b: 1, ...ab } // error
                    ~~~~
!!! error TS2783: 'b' is specified more than once, so this usage will be overwritten.
    var unused2 = { ...ab, ...ab } // ok, overwritten error doesn't apply to spreads
    var unused3 = { b: 1, ...abq } // ok, abq might have b: undefined
    var unused4 = { ...ab, b: 1 } // ok, we don't care that b in ab is overwritten
    var unused5 = { ...abq, b: 1 } // ok
    function g(obj: { x: number | undefined }) {
        return { x: 1, ...obj }; // ok, obj might have x: undefined
    }
    function f(obj: { x: number } | undefined) {
        return { x: 1, ...obj }; // ok, obj might be undefined
    }
    function h(obj: { x: number } | { x: string }) {
        return { x: 1, ...obj } // error
                 ~~~~
!!! error TS2783: 'x' is specified more than once, so this usage will be overwritten.
    }
    