@@ -367,24 +367,44 @@ Mocha.describe("Js_json_test", () => {
367367 Test_utils . eq ( "File \"js_json_test.res\", line 314, characters 7-14" , Js_json . decodeArray ( { } ) , undefined ) ;
368368 Test_utils . eq ( "File \"js_json_test.res\", line 315, characters 7-14" , Js_json . decodeArray ( 1.23 ) , undefined ) ;
369369 } ) ;
370+ Mocha . test ( "JSON Array/Object switch falls through to wildcard on null" , ( ) => {
371+ let classifyArrayOrObject = json => {
372+ if ( Array . isArray ( json ) ) {
373+ return json . length ;
374+ }
375+ if ( json === null ) {
376+ return ;
377+ }
378+ switch ( typeof json ) {
379+ case "object" :
380+ Js_dict . get ( json , "x" ) ;
381+ return 0 ;
382+ default :
383+ return ;
384+ }
385+ } ;
386+ Test_utils . eq ( "File \"js_json_test.res\", line 328, characters 7-14" , classifyArrayOrObject ( null ) , undefined ) ;
387+ Test_utils . eq ( "File \"js_json_test.res\", line 329, characters 7-14" , classifyArrayOrObject ( [ 1 ] ) , 1 ) ;
388+ Test_utils . eq ( "File \"js_json_test.res\", line 330, characters 7-14" , classifyArrayOrObject ( { } ) , 0 ) ;
389+ } ) ;
370390 Mocha . test ( "JSON decodeBoolean" , ( ) => {
371- Test_utils . eq ( "File \"js_json_test.res\", line 319 , characters 7-14" , Js_json . decodeBoolean ( "test" ) , undefined ) ;
372- Test_utils . eq ( "File \"js_json_test.res\", line 320 , characters 7-14" , Js_json . decodeBoolean ( true ) , true ) ;
373- Test_utils . eq ( "File \"js_json_test.res\", line 321 , characters 7-14" , Js_json . decodeBoolean ( [ ] ) , undefined ) ;
374- Test_utils . eq ( "File \"js_json_test.res\", line 322 , characters 7-14" , Js_json . decodeBoolean ( null ) , undefined ) ;
375- Test_utils . eq ( "File \"js_json_test.res\", line 323 , characters 7-14" , Js_json . decodeBoolean ( { } ) , undefined ) ;
376- Test_utils . eq ( "File \"js_json_test.res\", line 324 , characters 7-14" , Js_json . decodeBoolean ( 1.23 ) , undefined ) ;
391+ Test_utils . eq ( "File \"js_json_test.res\", line 334 , characters 7-14" , Js_json . decodeBoolean ( "test" ) , undefined ) ;
392+ Test_utils . eq ( "File \"js_json_test.res\", line 335 , characters 7-14" , Js_json . decodeBoolean ( true ) , true ) ;
393+ Test_utils . eq ( "File \"js_json_test.res\", line 336 , characters 7-14" , Js_json . decodeBoolean ( [ ] ) , undefined ) ;
394+ Test_utils . eq ( "File \"js_json_test.res\", line 337 , characters 7-14" , Js_json . decodeBoolean ( null ) , undefined ) ;
395+ Test_utils . eq ( "File \"js_json_test.res\", line 338 , characters 7-14" , Js_json . decodeBoolean ( { } ) , undefined ) ;
396+ Test_utils . eq ( "File \"js_json_test.res\", line 339 , characters 7-14" , Js_json . decodeBoolean ( 1.23 ) , undefined ) ;
377397 } ) ;
378398 Mocha . test ( "JSON decodeNull" , ( ) => {
379- Test_utils . eq ( "File \"js_json_test.res\", line 328 , characters 7-14" , Js_json . decodeNull ( "test" ) , undefined ) ;
380- Test_utils . eq ( "File \"js_json_test.res\", line 329 , characters 7-14" , Js_json . decodeNull ( true ) , undefined ) ;
381- Test_utils . eq ( "File \"js_json_test.res\", line 330 , characters 7-14" , Js_json . decodeNull ( [ ] ) , undefined ) ;
382- Test_utils . eq ( "File \"js_json_test.res\", line 331 , characters 7-14" , Js_json . decodeNull ( null ) , null ) ;
383- Test_utils . eq ( "File \"js_json_test.res\", line 332 , characters 7-14" , Js_json . decodeNull ( { } ) , undefined ) ;
384- Test_utils . eq ( "File \"js_json_test.res\", line 333 , characters 7-14" , Js_json . decodeNull ( 1.23 ) , undefined ) ;
399+ Test_utils . eq ( "File \"js_json_test.res\", line 343 , characters 7-14" , Js_json . decodeNull ( "test" ) , undefined ) ;
400+ Test_utils . eq ( "File \"js_json_test.res\", line 344 , characters 7-14" , Js_json . decodeNull ( true ) , undefined ) ;
401+ Test_utils . eq ( "File \"js_json_test.res\", line 345 , characters 7-14" , Js_json . decodeNull ( [ ] ) , undefined ) ;
402+ Test_utils . eq ( "File \"js_json_test.res\", line 346 , characters 7-14" , Js_json . decodeNull ( null ) , null ) ;
403+ Test_utils . eq ( "File \"js_json_test.res\", line 347 , characters 7-14" , Js_json . decodeNull ( { } ) , undefined ) ;
404+ Test_utils . eq ( "File \"js_json_test.res\", line 348 , characters 7-14" , Js_json . decodeNull ( 1.23 ) , undefined ) ;
385405 } ) ;
386406 Mocha . test ( "JSON serialize/deserialize identity" , ( ) => {
387- let idtest = obj => Test_utils . eq ( "File \"js_json_test.res\", line 339 , characters 27-34" , obj , Js_json . deserializeUnsafe ( Js_json . serializeExn ( obj ) ) ) ;
407+ let idtest = obj => Test_utils . eq ( "File \"js_json_test.res\", line 354 , characters 27-34" , obj , Js_json . deserializeUnsafe ( Js_json . serializeExn ( obj ) ) ) ;
388408 idtest ( undefined ) ;
389409 idtest ( {
390410 hd : [
0 commit comments