JSX preserve mode with `@JSX` attribute
It is found that the attribute @JSX makes the printer function preserve the JSX expression. https://github.com/rescript-lang/syntax/issues/539#issuecomment-1186403650
Changing the JSX PPX to keep the @JSX attribute after transformation, it prints as below. The checking of the call expression should be turned off by the way. It can be used in the compiler emitter to print the JSX in preserve mode.
// expected
let make = ({msg}) => ReactDOMRe.createDOMElementVariadic("div", [{msg->React.string}])
// generated
let make = ({msg}) => <ReactDOMRe.createDOMElementVariadic> </ReactDOMRe.createDOMElementVariadic>
The related functions to print JSX need to be updated as per changes by JSX V4, such as printJsxExpression, printJsxName. They look working with only V3.
Plus, those functions can be used to preserve the JSX in the compiler.
The rescript-lang/syntax repo is obsolete and will be archived soon. If this issue is still relevant, please reopen in the compiler repo (https://github.com/rescript-lang/rescript-compiler) or comment here to ask for it to be moved. Thank you for your contributions.