@@ -3504,7 +3504,7 @@ <h3 id="_return_value_checking_since_1_5_1"><a class="anchor" href="#_return_val
35043504< pre class ="pygments highlight "> < code data-lang ="ocaml "> < span class ="tok-k "> type</ span > < span class ="tok-n "> element</ span >
35053505< span class ="tok-k "> type</ span > < span class ="tok-n "> dom</ span >
35063506< span class ="tok-k "> external</ span > < span class ="tok-n "> getElementById</ span > < span class ="tok-o "> :</ span > < span class ="tok-kt "> string</ span > < span class ="tok-o "> -></ span > < span class ="tok-n "> element</ span > < span class ="tok-n "> option</ span > < span class ="tok-o "> =</ span > < span class ="tok-s2 "> ""</ span >
3507- < span class ="tok-o "> [@@</ span > < span class ="tok-n "> bs</ span > < span class ="tok-o "> .</ span > < span class ="tok-n "> send</ span > < span class ="tok-o "> .</ span > < span class ="tok-n "> pipe</ span > < span class ="tok-o "> :</ span > < span class ="tok-n "> dom</ span > < span class ="tok-o "> ]</ span > < span class ="tok-o "> [@@</ span > < span class ="tok-n "> bs</ span > < span class ="tok-o "> .</ span > < span class ="tok-n "> return</ span > < span class ="tok-n "> nullable </ span > < span class ="tok-o "> ]</ span > < b class ="conum "> (1)</ b >
3507+ < span class ="tok-o "> [@@</ span > < span class ="tok-n "> bs</ span > < span class ="tok-o "> .</ span > < span class ="tok-n "> send</ span > < span class ="tok-o "> .</ span > < span class ="tok-n "> pipe</ span > < span class ="tok-o "> :</ span > < span class ="tok-n "> dom</ span > < span class ="tok-o "> ]</ span > < span class ="tok-o "> [@@</ span > < span class ="tok-n "> bs</ span > < span class ="tok-o "> .</ span > < span class ="tok-n "> return</ span > < span class ="tok-n "> null_to_opt </ span > < span class ="tok-o "> ]</ span > < b class ="conum "> (1)</ b >
35083508
35093509< span class ="tok-k "> let</ span > < span class ="tok-n "> test</ span > < span class ="tok-n "> dom</ span > < span class ="tok-o "> =</ span >
35103510 < span class ="tok-k "> let</ span > < span class ="tok-n "> elem</ span > < span class ="tok-o "> =</ span > < span class ="tok-n "> dom</ span > < span class ="tok-o "> |></ span > < span class ="tok-n "> getElementById</ span > < span class ="tok-s2 "> "haha"</ span > < span class ="tok-k "> in</ span >
@@ -3516,7 +3516,7 @@ <h3 id="_return_value_checking_since_1_5_1"><a class="anchor" href="#_return_val
35163516< div class ="colist arabic ">
35173517< ol >
35183518< li >
3519- < p > < code > nullable </ code > attribute will automatically convert null and undefined to < code > option</ code > </ p >
3519+ < p > < code > null_to_opt </ code > attribute will automatically convert null to < code > option</ code > </ p >
35203520</ li >
35213521</ ol >
35223522</ div >
@@ -3525,18 +3525,26 @@ <h3 id="_return_value_checking_since_1_5_1"><a class="anchor" href="#_return_val
35253525< div class ="content ">
35263526< pre class ="pygments highlight "> < code data-lang ="js "> < span class ="tok-kd "> function</ span > < span class ="tok-nx "> test</ span > < span class ="tok-p "> (</ span > < span class ="tok-nx "> dom</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span >
35273527 < span class ="tok-kd "> var</ span > < span class ="tok-nx "> elem</ span > < span class ="tok-o "> =</ span > < span class ="tok-nx "> dom</ span > < span class ="tok-p "> .</ span > < span class ="tok-nx "> getElementById</ span > < span class ="tok-p "> (</ span > < span class ="tok-s2 "> "haha"</ span > < span class ="tok-p "> );</ span >
3528- < span class ="tok-k "> if</ span > < span class ="tok-p "> (</ span > < span class ="tok-nx "> elem</ span > < span class ="tok-o "> ==</ span > < span class ="tok-kc "> null</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span >
3529- < span class ="tok-k "> return</ span > < span class ="tok-mi "> 1</ span > < span class ="tok-p "> ;</ span >
3530- < span class ="tok-p "> }</ span > < span class ="tok-k "> else</ span > < span class ="tok-p "> {</ span >
3528+ < span class ="tok-k "> if</ span > < span class ="tok-p "> (</ span > < span class ="tok-nx "> elem</ span > < span class ="tok-o "> !==</ span > < span class ="tok-kc "> null</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span > < b class ="conum "> (1)</ b >
35313529 < span class ="tok-nx "> console</ span > < span class ="tok-p "> .</ span > < span class ="tok-nx "> log</ span > < span class ="tok-p "> (</ span > < span class ="tok-nx "> elem</ span > < span class ="tok-p "> );</ span >
35323530 < span class ="tok-k "> return</ span > < span class ="tok-mi "> 2</ span > < span class ="tok-p "> ;</ span >
35333531 < span class ="tok-p "> }</ span >
3532+ < span class ="tok-k "> else</ span > < span class ="tok-p "> {</ span >
3533+ < span class ="tok-k "> return</ span > < span class ="tok-mi "> 1</ span > < span class ="tok-p "> ;</ span >
3534+ < span class ="tok-p "> }</ span >
35343535< span class ="tok-p "> }</ span > </ code > </ pre >
35353536</ div >
35363537</ div >
3538+ < div class ="colist arabic ">
3539+ < ol >
3540+ < li >
3541+ < p > nullable checking without boxing due to compiler optimizations</ p >
3542+ </ li >
3543+ </ ol >
3544+ </ div >
35373545< div class ="paragraph ">
3538- < p > Currently 3 directives are supported: < code > null_to_opt</ code > , < code > undefined_to_opt</ code > ,
3539- < code > nullable </ code > and < code > identity</ code > .</ p >
3546+ < p > Currently 4 directives are supported: < code > null_to_opt</ code > , < code > undefined_to_opt</ code > ,
3547+ < code > null_undefined_to_opt </ code > and < code > identity</ code > .</ p >
35403548</ div >
35413549< div class ="admonitionblock note ">
35423550< table >
@@ -3546,7 +3554,7 @@ <h3 id="_return_value_checking_since_1_5_1"><a class="anchor" href="#_return_val
35463554</ td >
35473555< td class ="content ">
35483556< div class ="paragraph ">
3549- < p > < code > null_to_opt</ code > , < code > undefined_to_opt</ code > and < code > nullable </ code > will < strong > semantically</ strong >
3557+ < p > < code > null_to_opt</ code > , < code > undefined_to_opt</ code > and < code > null_undefined_to_opt </ code > will < strong > semantically</ strong >
35503558convert a nullable value to < code > option</ code > which is a boxed value, but the compiler will
35513559do smart optimizations to < strong > remove such boxing overhead</ strong > when the returned value is destructed
35523560in the same routine.</ p >
0 commit comments