tests/cases/conformance/jsx/file.tsx(19,5): error TS2416: Property 'render' in type 'OverWriteAttr' is not assignable to the same property in base type 'Component<Prop, {}>'.
  Type '() => JSX.Element' is not assignable to type '() => JSX.Element'. Two different types with this name exist, but they are unrelated.
    The 'this' types of each signature are incompatible.
      Type 'Component<P, S>' is not assignable to type 'OverWriteAttr'.
        Types of property 'render' are incompatible.
          Type '() => JSX.Element' is not assignable to type '() => JSX.Element'. Two different types with this name exist, but they are unrelated.
            The 'this' types of each signature are incompatible.
              Type 'OverWriteAttr' is not assignable to type 'Component<P, S>'.
                Types of property 'setState' are incompatible.
                  Type '{ (f: (prevState: {}, props: Prop) => {}, callback?: () => any): void; (state: {}, callback?: () => any): void; }' is not assignable to type '{ (f: (prevState: S, props: P) => S, callback?: () => any): void; (state: S, callback?: () => any): void; }'.
                    Types of parameters 'f' and 'f' are incompatible.
                      Types of parameters 'prevState' and 'prevState' are incompatible.
                        Type '{}' is not assignable to type 'S'.
                          'S' could be instantiated with an arbitrary type which could be unrelated to '{}'.
tests/cases/conformance/jsx/file.tsx(27,33): error TS2322: Type 'true' is not assignable to type 'false'.
tests/cases/conformance/jsx/file.tsx(28,50): error TS2322: Type '3' is not assignable to type '2'.
tests/cases/conformance/jsx/file.tsx(30,11): error TS2322: Type '{ y: true; x: 2; overwrite: string; }' is not assignable to type 'Prop'.
  Types of property 'y' are incompatible.
    Type 'true' is not assignable to type 'false'.


==== tests/cases/conformance/jsx/file.tsx (4 errors) ====
    import React = require('react');
    
    const obj = {};
    const obj1: {x: 2} = {
        x: 2
    }
    const obj3: {y: false, overwrite: string} = {
        y: false,
        overwrite: "hi"
    }
    
    interface Prop {
        x: 2
        y: false
        overwrite: string
    }
    
    class OverWriteAttr extends React.Component<Prop, {}> {
        render() {
        ~~~~~~
!!! error TS2416: Property 'render' in type 'OverWriteAttr' is not assignable to the same property in base type 'Component<Prop, {}>'.
!!! error TS2416:   Type '() => JSX.Element' is not assignable to type '() => JSX.Element'. Two different types with this name exist, but they are unrelated.
!!! error TS2416:     The 'this' types of each signature are incompatible.
!!! error TS2416:       Type 'Component<P, S>' is not assignable to type 'OverWriteAttr'.
!!! error TS2416:         Types of property 'render' are incompatible.
!!! error TS2416:           Type '() => JSX.Element' is not assignable to type '() => JSX.Element'. Two different types with this name exist, but they are unrelated.
!!! error TS2416:             The 'this' types of each signature are incompatible.
!!! error TS2416:               Type 'OverWriteAttr' is not assignable to type 'Component<P, S>'.
!!! error TS2416:                 Types of property 'setState' are incompatible.
!!! error TS2416:                   Type '{ (f: (prevState: {}, props: Prop) => {}, callback?: () => any): void; (state: {}, callback?: () => any): void; }' is not assignable to type '{ (f: (prevState: S, props: P) => S, callback?: () => any): void; (state: S, callback?: () => any): void; }'.
!!! error TS2416:                     Types of parameters 'f' and 'f' are incompatible.
!!! error TS2416:                       Types of parameters 'prevState' and 'prevState' are incompatible.
!!! error TS2416:                         Type '{}' is not assignable to type 'S'.
!!! error TS2416:                           'S' could be instantiated with an arbitrary type which could be unrelated to '{}'.
            return <div>Hello</div>;
        }
    }
    
    let anyobj: any;
    
    // Error
    let x = <OverWriteAttr {...obj} y overwrite="hi" {...obj1} />
                                    ~
!!! error TS2322: Type 'true' is not assignable to type 'false'.
!!! related TS6500 tests/cases/conformance/jsx/file.tsx:14:5: The expected type comes from property 'y' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<OverWriteAttr> & Prop & { children?: ReactNode; }'
    let x1 = <OverWriteAttr overwrite="hi" {...obj1} x={3} {...{y: true}} />
                                                     ~
!!! error TS2322: Type '3' is not assignable to type '2'.
!!! related TS6500 tests/cases/conformance/jsx/file.tsx:13:5: The expected type comes from property 'x' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<OverWriteAttr> & Prop & { children?: ReactNode; }'
    let x2 = <OverWriteAttr {...anyobj} x={3} />
    let x3 = <OverWriteAttr overwrite="hi" {...obj1} {...{y: true}} />
              ~~~~~~~~~~~~~
!!! error TS2322: Type '{ y: true; x: 2; overwrite: string; }' is not assignable to type 'Prop'.
!!! error TS2322:   Types of property 'y' are incompatible.
!!! error TS2322:     Type 'true' is not assignable to type 'false'.
    
    