@res.jsxComponentProps
type props<'x, 'y> = {
  x: 'x, // Component with type constraint
  y: 'y,
}
let make = ({x, y, _}: props<string, string>): React.element => React.string(x ++ y)
let make = {
  let \"V4" = (props: props<_>) => make(props)
  \"V4"
}

module AnotherName = {
  @res.jsxComponentProps
  type // Component with another name than "make"
  props<'x> = {
    x: 'x,
  }

  let anotherName = ({x, _}: props<_>): React.element => React.string(x)
  let anotherName = {
    let \"V4$AnotherName$anotherName" = (props: props<_>) => anotherName(props)

    \"V4$AnotherName$anotherName"
  }
}

module Uncurried = {
  @res.jsxComponentProps
  type props<'x> = {
    x: 'x,
  }

  let make = ({x, _}: props<_>): React.element => React.string(x)
  let make = {
    let \"V4$Uncurried" = (props: props<_>) => make(props)

    \"V4$Uncurried"
  }
}

module type TUncurried = {
  @res.jsxComponentProps
  type props<'x> = {
    x: 'x,
  }

  let make: React.component<props<string>>
}

module E = {
  @res.jsxComponentProps @live
  type props<'x> = {
    x: 'x,
  }

  external make: React.component<props<string>> = "default"
}

module EUncurried = {
  @res.jsxComponentProps @live
  type props<'x> = {
    x: 'x,
  }

  external make: React.component<props<string>> = "default"
}

module Rec = {
  @res.jsxComponentProps
  type props = {}

  let rec make = {
    let \"make$Internal" = (_: props): React.element => {
      make(({}: props))
    }
    let make = {
      let \"V4$Rec" = props => \"make$Internal"(props)

      \"V4$Rec"
    }
    make
  }
}

module Rec1 = {
  @res.jsxComponentProps
  type props = {}

  let rec make = {
    let \"make$Internal" = (_: props): React.element => {
      React.null
    }
    let make = {
      let \"V4$Rec1" = props => \"make$Internal"(props)

      \"V4$Rec1"
    }
    make
  }
}

module Rec2 = {
  @res.jsxComponentProps
  type props = {}

  let rec make = {
    let \"make$Internal" = (_: props): React.element => {
      mm(({}: props))
    }
    let make = {
      let \"V4$Rec2" = props => \"make$Internal"(props)

      \"V4$Rec2"
    }
    make
  }
  and mm = x => make(x)
}
