let f = a => Js.Promise.resolve(a + a)

@@jsxConfig({version: 4})

module V4A1 = {
  type props = sharedProps
  let make = (props): React.element => React.string(props.x ++ props.y)
  let make = {
    let \"SharedPropsWithProps$V4A1" = (props): React.element => make(props)
    \"SharedPropsWithProps$V4A1"
  }
}

module V4A2 = {
  type props = sharedProps
  let make = (props: props): React.element => React.string(props.x ++ props.y)
  let make = {
    let \"SharedPropsWithProps$V4A2" = (props: props): React.element => make(props)
    \"SharedPropsWithProps$V4A2"
  }
}

module V4A3 = {
  type props<'a> = sharedProps<'a>
  let make = ({x, y}: props<_>): React.element => React.string(x ++ y)
  let make = {
    let \"SharedPropsWithProps$V4A3" = (props: props<_>): React.element => make(props)
    \"SharedPropsWithProps$V4A3"
  }
}

module V4A4 = {
  type props<'a> = sharedProps<string, 'a>
  let make = ({x, y}: props<_>): React.element => React.string(x ++ y)
  let make = {
    let \"SharedPropsWithProps$V4A4" = (props: props<_>): React.element => make(props)
    \"SharedPropsWithProps$V4A4"
  }
}

module V4A5 = {
  type props<'a> = {a: 'a}
  let make = async ({a}: props<_>) => {
    let a = await f(a)
    (ReactDOM.jsx("div", {children: ?ReactDOM.someElement({React.int(a)})}): React.element)
  }
  let make = {
    let \"SharedPropsWithProps$V4A5" = (props: props<_>): React.element => Jsx.promise(make(props))
    \"SharedPropsWithProps$V4A5"
  }
}

module V4A6 = {
  type props<'status> = {status: 'status}
  let make = async ({status}: props<_>): React.element => {
    switch status {
    | #on => React.string("on")
    | #off => React.string("off")
    }
  }
  let make = {
    let \"SharedPropsWithProps$V4A6" = (props: props<_>): React.element => Jsx.promise(make(props))
    \"SharedPropsWithProps$V4A6"
  }
}

module V4A7 = {
  type props = {count: int}

  let make = (props): React.element => {
    React.int(props.count)
  }
  let make = {
    let \"SharedPropsWithProps$V4A7" =
      @directive("'use memo'") (props): React.element => make(props)
    \"SharedPropsWithProps$V4A7"
  }
}
