rescript-compiler
rescript-compiler copied to clipboard
Code snippet leads to infinite loop when using watch command
This snippet is somehow causing an infinite loop in VS Code extension and watch command. The build file is getting deleted and created repetitively.
@@directive("'use client'")
@module("next/[redacted]") external [Redacted]: unit => Js.Dict.t<'a> = "[Redacted]"
open [Redacted]
module [RedactedIcon] = {
@module("@radix-ui/react-icons") @react.component
external make: (~className: string) => React.element = "[RedactedIcon]"
}
module [AnotherRedactedIcon] = {
@module("@radix-ui/react-icons") @react.component
external make: (~className: string) => React.element = "[AnotherRedactedIcon]"
}
type [RedactedType] = [RedactedEnum] | [AnotherRedactedEnum]
@react.component
let make = () => {
let params = [Redacted]()
let theme = switch params->Js.Dict.get("[Redacted]") {
| Some(x) => x
| None => [DefaultValue]
}
let (theme, setTheme) = React.useState(_ => theme)
let iconTheme = [RedactedStyleMethod].make(~position="fixed", ~right="2rem", ~bottom="2rem", ())->css
<[ToolTipNamespace].Provider>
<[ToolTipNamespace].Root>
<[ToolTipNamespace].Trigger>
<a type_="button" onClick={_ => setTheme(_ => theme == [AnotherRedactedEnum] ? [RedactedEnum] : [AnotherRedactedEnum])}>
<[RedactedIcon]
className={iconTheme}
/>}
</a>
</[ToolTipNamespace].Trigger>
<[ToolTipNamespace].Portal>
<[ToolTipNamespace].Content>
{React.string("[RedactedText]")}
<[ToolTipNamespace].Arrow />
</[ToolTipNamespace].Content>
</[ToolTipNamespace].Portal>
</[ToolTipNamespace].Root>
</[ToolTipNamespace].Provider>
}
Windows 11, Rescript 11:RC3, Alpha React
Thank you for filing! Check list:
- [x] Is it a bug? Usage questions should often be asked in the forum instead.
- [x] Concise, focused, friendly issue title & description.
- [x] A minimal, reproducible example.
- [x] OS and browser versions, if relevant.
JS compilation
'use client'
// Generated by ReScript, PLEASE EDIT WITH CARE
import * as Panda from "[Redacted]";
import * as React from "react";
import * as Js_dict from "[Redacted]";
import * as $$Navigation from "[Redacted]";
import * as ReactIcons from "[Redacted]";
import * as ReactTooltip from "[Redacted]";
var MoonIcon = {};
var SunIcon = {};
function ThemeSwitcher(props) {
var params = $$Navigation.useParams();
var x = Js_dict.get(params, "theme");
var theme = x !== undefined ? x : "Light";
var match = React.useState(function () {
return theme;
});
var setTheme = match[1];
var theme$1 = match[0];
var iconTheme = Panda.css({
bottom: "2rem",
position: "fixed",
right: "2rem"
});
return React.createElement(ReactTooltip.Provider, {
children: React.createElement(ReactTooltip.Root, {
children: null
}, React.createElement(ReactTooltip.Trigger, {
children: React.createElement("a", {
type: "button",
onClick: (function (param) {
setTheme(function (param) {
if (theme$1 === "Light") {
return "Dark";
} else {
return "Light";
}
});
})
}, React.createElement(ReactIcons.MoonIcon, {
className: iconTheme
}))
}), React.createElement(ReactTooltip.Portal, {
children: React.createElement(ReactTooltip.Content, {
children: null
}, "Switch Theme", React.createElement(ReactTooltip.Arrow, {}))
}))
});
}
var make = ThemeSwitcher;
export {
MoonIcon ,
SunIcon ,
make ,
}
/* Panda Not a pure module */
@bruisedsamurai is this still the case with rc.5?
I don't see how it can be related to watch mode 🤔
I still see watch mode constantly compiling my mode.