tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes.ts(21,11): error TS2429: Interface 'Derived2' incorrectly extends interface 'Base2':
  Types of property 'x' are incompatible:
    Type '{ a: string; b: number; }' is not assignable to type '{ b: string; }':
      Types of property 'b' are incompatible:
        Type 'number' is not assignable to type 'string'.
tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes.ts(52,15): error TS2320: Interface 'Derived3<T>' cannot simultaneously extend types 'Base1<number>' and 'Base2<number>':
  Named properties 'x' of types 'Base1<number>' and 'Base2<number>' are not identical.
tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes.ts(54,15): error TS2429: Interface 'Derived4<T>' incorrectly extends interface 'Base1<number>':
  Types of property 'x' are incompatible:
    Type '{ a: T; b: T; }' is not assignable to type '{ a: number; }':
      Types of property 'a' are incompatible:
        Type 'T' is not assignable to type 'number'.
tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes.ts(54,15): error TS2429: Interface 'Derived4<T>' incorrectly extends interface 'Base2<number>':
  Types of property 'x' are incompatible:
    Type '{ a: T; b: T; }' is not assignable to type '{ b: number; }':
      Types of property 'b' are incompatible:
        Type 'T' is not assignable to type 'number'.
tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes.ts(60,15): error TS2429: Interface 'Derived5<T>' incorrectly extends interface 'Base1<T>':
  Types of property 'x' are incompatible:
    Type 'T' is not assignable to type '{ a: T; }':
      Property 'a' is missing in type '{}'.
tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes.ts(60,15): error TS2429: Interface 'Derived5<T>' incorrectly extends interface 'Base2<T>':
  Types of property 'x' are incompatible:
    Type 'T' is not assignable to type '{ b: T; }':
      Property 'b' is missing in type '{}'.


==== tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes.ts (6 errors) ====
    // an interface may have multiple bases with properties of the same name as long as the interface's implementation satisfies all base type versions
    
    interface Base1 {
        x: {
            a: string;
        }
    }
    
    interface Base2 {
        x: {
            b: string;
        }
    }
    
    interface Derived extends Base1, Base2 {
        x: {
            a: string; b: string;
        }
    }
    
    interface Derived2 extends Base1, Base2 { // error
              ~~~~~~~~
!!! error TS2429: Interface 'Derived2' incorrectly extends interface 'Base2':
!!! error TS2429:   Types of property 'x' are incompatible:
!!! error TS2429:     Type '{ a: string; b: number; }' is not assignable to type '{ b: string; }':
!!! error TS2429:       Types of property 'b' are incompatible:
!!! error TS2429:         Type 'number' is not assignable to type 'string'.
        x: {
            a: string; b: number;
        }
    }
    
    module Generic {
        interface Base1<T> {
            x: {
                a: T;
            }
        }
    
        interface Base2<T> {
            x: {
                b: T;
            }
        }
    
        interface Derived<T> extends Base1<string>, Base2<number> {
            x: {
                a: string; b: number;
            }
        }
    
        interface Derived2<T, U> extends Base1<T>, Base2<U> {
            x: {
                a: T; b: U;
            }
        }
    
        interface Derived3<T> extends Base1<number>, Base2<number> { } // error
                  ~~~~~~~~
!!! error TS2320: Interface 'Derived3<T>' cannot simultaneously extend types 'Base1<number>' and 'Base2<number>':
!!! error TS2320:   Named properties 'x' of types 'Base1<number>' and 'Base2<number>' are not identical.
    
        interface Derived4<T> extends Base1<number>, Base2<number> { // error
                  ~~~~~~~~
!!! error TS2429: Interface 'Derived4<T>' incorrectly extends interface 'Base1<number>':
!!! error TS2429:   Types of property 'x' are incompatible:
!!! error TS2429:     Type '{ a: T; b: T; }' is not assignable to type '{ a: number; }':
!!! error TS2429:       Types of property 'a' are incompatible:
!!! error TS2429:         Type 'T' is not assignable to type 'number'.
                  ~~~~~~~~
!!! error TS2429: Interface 'Derived4<T>' incorrectly extends interface 'Base2<number>':
!!! error TS2429:   Types of property 'x' are incompatible:
!!! error TS2429:     Type '{ a: T; b: T; }' is not assignable to type '{ b: number; }':
!!! error TS2429:       Types of property 'b' are incompatible:
!!! error TS2429:         Type 'T' is not assignable to type 'number'.
            x: {
                a: T; b: T;
            }
        }
    
        interface Derived5<T> extends Base1<T>, Base2<T> { // error
                  ~~~~~~~~
!!! error TS2429: Interface 'Derived5<T>' incorrectly extends interface 'Base1<T>':
!!! error TS2429:   Types of property 'x' are incompatible:
!!! error TS2429:     Type 'T' is not assignable to type '{ a: T; }':
!!! error TS2429:       Property 'a' is missing in type '{}'.
                  ~~~~~~~~
!!! error TS2429: Interface 'Derived5<T>' incorrectly extends interface 'Base2<T>':
!!! error TS2429:   Types of property 'x' are incompatible:
!!! error TS2429:     Type 'T' is not assignable to type '{ b: T; }':
!!! error TS2429:       Property 'b' is missing in type '{}'.
            x: T;
        }
    }