Skip to content

Where did JsxPPXReactSupport go? #7703

@nojaf

Description

@nojaf

I'm messing around with React server components and found that:

@react.component
let make = async () => { <p></p> }

leads to

[
  structure_item 
    Pstr_type Nonrec
    [
      type_declaration "props"  
        attribute  "res.jsxComponentProps"
          []
        ptype_params =
          []
        ptype_cstrs =
          []
        ptype_kind =
          Ptype_record
            []
        ptype_private = Public
        ptype_manifest =
          None
    ]
  structure_item 
    Pstr_value Nonrec
    [
      <def>
        pattern 
          Ppat_var "make" 
        expression 
          Pexp_fun
          async
          arity:1
          Nolabel
          None
          pattern 
            Ppat_constraint
            pattern 
              Ppat_any
            core_type 
              Ptyp_constr "props" 
              []
          expression 
            Pexp_apply
            expression 
              Pexp_ident "Primitive_promise.unsafe_async" 
            [
              <arg>
              Nolabel
                expression 
                  attribute  "res.braces"
                    []
                  Pexp_apply
                  expression 
                    Pexp_ident "ReactDOM.jsx" 
                  [
                    <arg>
                    Nolabel
                      expression 
                        Pexp_constant PConst_string("p",None)
                    <arg>
                    Nolabel
                      expression 
                        Pexp_record
                        []
                        None
                  ]
                  transformed_jsx: true
            ]
            transformed_jsx: false
    ]
  structure_item 
    Pstr_value Nonrec
    [
      <def>
        pattern 
          Ppat_var "make" 
        expression 
          Pexp_let Nonrec
          [
            <def>
              pattern 
                Ppat_var "Today" 
              expression 
                Pexp_fun
                arity:1
                Nolabel
                None
                pattern 
                  Ppat_var "props" 
                expression 
                  Pexp_apply
                  expression 
                    Pexp_ident "JsxPPXReactSupport.asyncComponent" 
                  [
                    <arg>
                    Nolabel
                      expression 
                        Pexp_apply
                        expression 
                          Pexp_ident "make" 
                        [
                          <arg>
                          Nolabel
                            expression 
                              Pexp_ident "props" 
                        ]
                        transformed_jsx: false
                  ]
                  transformed_jsx: false
          ]
          expression 
            Pexp_ident "Today" 
    ]
]

(via bunx bsc src/components/Today.res -bs-jsx 4 -dparsetree -only-parse -ignore-parse-errors)

JsxPPXReactSupport is not present in StdLib.
Does anyone know what should happen here?
Can't reproduce in playground, but as @rescript/core is loaded there, it might be present somehow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions