@@ -3504,7 +3504,7 @@ <h3 id="_return_value_checking_since_1_5_1"><a class="anchor" href="#_return_val
3504
3504
< pre class ="pygments highlight "> < code data-lang ="ocaml "> < span class ="tok-k "> type</ span > < span class ="tok-n "> element</ span >
3505
3505
< span class ="tok-k "> type</ span > < span class ="tok-n "> dom</ span >
3506
3506
< 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 >
3508
3508
3509
3509
< span class ="tok-k "> let</ span > < span class ="tok-n "> test</ span > < span class ="tok-n "> dom</ span > < span class ="tok-o "> =</ span >
3510
3510
< 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
3516
3516
< div class ="colist arabic ">
3517
3517
< ol >
3518
3518
< 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 >
3520
3520
</ li >
3521
3521
</ ol >
3522
3522
</ div >
@@ -3525,18 +3525,26 @@ <h3 id="_return_value_checking_since_1_5_1"><a class="anchor" href="#_return_val
3525
3525
< div class ="content ">
3526
3526
< 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 >
3527
3527
< 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 >
3531
3529
< 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 >
3532
3530
< span class ="tok-k "> return</ span > < span class ="tok-mi "> 2</ span > < span class ="tok-p "> ;</ span >
3533
3531
< 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 >
3534
3535
< span class ="tok-p "> }</ span > </ code > </ pre >
3535
3536
</ div >
3536
3537
</ 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 >
3537
3545
< 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 >
3540
3548
</ div >
3541
3549
< div class ="admonitionblock note ">
3542
3550
< table >
@@ -3546,7 +3554,7 @@ <h3 id="_return_value_checking_since_1_5_1"><a class="anchor" href="#_return_val
3546
3554
</ td >
3547
3555
< td class ="content ">
3548
3556
< 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 >
3550
3558
convert a nullable value to < code > option</ code > which is a boxed value, but the compiler will
3551
3559
do smart optimizations to < strong > remove such boxing overhead</ strong > when the returned value is destructed
3552
3560
in the same routine.</ p >
0 commit comments