tests/cases/conformance/jsx/file.tsx(14,10): error TS2322: Type '{ a: number; b: string; }' is not assignable to type 'Prop'.
  Property 'children' is missing in type '{ a: number; b: string; }'.
tests/cases/conformance/jsx/file.tsx(17,11): error TS2710: 'children' are specified twice. The attribute named 'children' will be overwritten.
tests/cases/conformance/jsx/file.tsx(31,6): error TS2322: Type '{ children: (Element | ((name: string) => Element))[]; a: number; b: string; }' is not assignable to type 'Prop'.
  Types of property 'children' are incompatible.
    Type '(Element | ((name: string) => Element))[]' is not assignable to type 'string | Element'.
      Type '(Element | ((name: string) => Element))[]' is not assignable to type 'Element'.
        Property 'type' is missing in type '(Element | ((name: string) => Element))[]'.
tests/cases/conformance/jsx/file.tsx(37,6): error TS2322: Type '{ children: (number | Element)[]; a: number; b: string; }' is not assignable to type 'Prop'.
  Types of property 'children' are incompatible.
    Type '(number | Element)[]' is not assignable to type 'string | Element'.
      Type '(number | Element)[]' is not assignable to type 'Element'.
        Property 'type' is missing in type '(number | Element)[]'.
tests/cases/conformance/jsx/file.tsx(43,6): error TS2322: Type '{ children: (string | Element)[]; a: number; b: string; }' is not assignable to type 'Prop'.
  Types of property 'children' are incompatible.
    Type '(string | Element)[]' is not assignable to type 'string | Element'.
      Type '(string | Element)[]' is not assignable to type 'Element'.
        Property 'type' is missing in type '(string | Element)[]'.
tests/cases/conformance/jsx/file.tsx(49,6): error TS2322: Type '{ children: Element[]; a: number; b: string; }' is not assignable to type 'Prop'.
  Types of property 'children' are incompatible.
    Type 'Element[]' is not assignable to type 'string | Element'.
      Type 'Element[]' is not assignable to type 'Element'.
        Property 'type' is missing in type 'Element[]'.


==== tests/cases/conformance/jsx/file.tsx (6 errors) ====
    import React = require('react');
    
    interface Prop {
        a: number,
        b: string,
        children: string | JSX.Element
    }
    
    function Comp(p: Prop) {
        return <div>{p.b}</div>;
    }
    
    // Error: missing children
    let k = <Comp a={10} b="hi" />;
             ~~~~
!!! error TS2322: Type '{ a: number; b: string; }' is not assignable to type 'Prop'.
!!! error TS2322:   Property 'children' is missing in type '{ a: number; b: string; }'.
    
    let k0 =
        <Comp a={10} b="hi" children="Random" >
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2710: 'children' are specified twice. The attribute named 'children' will be overwritten.
            hi hi hi!
        </Comp>;
    
    let o = {
         children:"Random"
    }
    let k1 =
        <Comp a={10} b="hi" {...o} >
            hi hi hi!
        </Comp>;
    
    // Error: incorrect type
    let k2 =
        <Comp a={10} b="hi">
         ~~~~
!!! error TS2322: Type '{ children: (Element | ((name: string) => Element))[]; a: number; b: string; }' is not assignable to type 'Prop'.
!!! error TS2322:   Types of property 'children' are incompatible.
!!! error TS2322:     Type '(Element | ((name: string) => Element))[]' is not assignable to type 'string | Element'.
!!! error TS2322:       Type '(Element | ((name: string) => Element))[]' is not assignable to type 'Element'.
!!! error TS2322:         Property 'type' is missing in type '(Element | ((name: string) => Element))[]'.
            <div> My Div </div>
            {(name: string) => <div> My name {name} </div>}
        </Comp>;
    
    let k3 =
        <Comp a={10} b="hi">
         ~~~~
!!! error TS2322: Type '{ children: (number | Element)[]; a: number; b: string; }' is not assignable to type 'Prop'.
!!! error TS2322:   Types of property 'children' are incompatible.
!!! error TS2322:     Type '(number | Element)[]' is not assignable to type 'string | Element'.
!!! error TS2322:       Type '(number | Element)[]' is not assignable to type 'Element'.
!!! error TS2322:         Property 'type' is missing in type '(number | Element)[]'.
            <div> My Div </div>
            {1000000}
        </Comp>;
    
    let k4 =
        <Comp a={10} b="hi" >
         ~~~~
!!! error TS2322: Type '{ children: (string | Element)[]; a: number; b: string; }' is not assignable to type 'Prop'.
!!! error TS2322:   Types of property 'children' are incompatible.
!!! error TS2322:     Type '(string | Element)[]' is not assignable to type 'string | Element'.
!!! error TS2322:       Type '(string | Element)[]' is not assignable to type 'Element'.
!!! error TS2322:         Property 'type' is missing in type '(string | Element)[]'.
            <div> My Div </div>
            hi hi hi!
        </Comp>;
    
    let k5 =
        <Comp a={10} b="hi" >
         ~~~~
!!! error TS2322: Type '{ children: Element[]; a: number; b: string; }' is not assignable to type 'Prop'.
!!! error TS2322:   Types of property 'children' are incompatible.
!!! error TS2322:     Type 'Element[]' is not assignable to type 'string | Element'.
!!! error TS2322:       Type 'Element[]' is not assignable to type 'Element'.
!!! error TS2322:         Property 'type' is missing in type 'Element[]'.
            <div> My Div </div>
            <div> My Div </div>
        </Comp>;