From 8200204ed1d03510b240251852e926dbda7e6d20 Mon Sep 17 00:00:00 2001 From: David Sancho Moreno Date: Mon, 7 Aug 2023 18:25:59 +0200 Subject: [PATCH] Add Impossible_in_ssr for render/hydrate --- packages/js/js.ml | 9 ++++++--- packages/reactDom/src/reactDOM.ml | 16 +++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/js/js.ml b/packages/js/js.ml index 0fad2fdfa..ed6561f88 100644 --- a/packages/js/js.ml +++ b/packages/js/js.ml @@ -1,7 +1,10 @@ +exception Not_implemented of string + let notImplemented module_ function_ = - failwith - (Printf.sprintf "'%s.%s' is not implemented in server-reason-react" module_ - function_) + raise + (Not_implemented + (Printf.sprintf "'%s.%s' is not implemented in server-reason-react" + module_ function_)) type 'a t = < .. > as 'a diff --git a/packages/reactDom/src/reactDOM.ml b/packages/reactDom/src/reactDOM.ml index c28bfc96d..0185af9fe 100644 --- a/packages/reactDom/src/reactDOM.ml +++ b/packages/reactDom/src/reactDOM.ml @@ -251,16 +251,14 @@ let renderToLwtStream element = let querySelector _str = None -let fail_impossible_action_in_ssr = - (* failwith seems bad, but I don't know any other way - of warning the user without changing the types. Doing a unit *) - (* failwith - (Printf.sprintf "render shouldn't run on the server %s, line %d" __FILE__ - __LINE__) *) - () +exception Impossible_in_ssr of string -let render _element _node = fail_impossible_action_in_ssr -let hydrate _element _node = fail_impossible_action_in_ssr +let fail_impossible_action_in_ssr fn = + let msg = Printf.sprintf "'%s' shouldn't run on the server" fn in + raise (Impossible_in_ssr msg) + +let render _element _node = fail_impossible_action_in_ssr "ReactDOM.render" +let hydrate _element _node = fail_impossible_action_in_ssr "ReactDOM.hydrate" let createPortal _reactElement _domElement = _reactElement module Style = ReactDOMStyle