@@ -404,24 +404,50 @@ Mocha.describe("Js_json_test", () => {
404404 Test_utils . eq ( "File \"js_json_test.res\", line 342, characters 7-14" , classifyObjectOnly ( { } ) , "Object" ) ;
405405 Test_utils . eq ( "File \"js_json_test.res\", line 343, characters 7-14" , classifyObjectOnly ( "hi" ) , "String" ) ;
406406 } ) ;
407+ Mocha . test ( "JSON Object switch as statement guards null and array" , ( ) => {
408+ let result = {
409+ contents : "none"
410+ } ;
411+ let classifyStatement = json => {
412+ if ( json === null || Array . isArray ( json ) ) {
413+ return ;
414+ }
415+ switch ( typeof json ) {
416+ case "object" :
417+ result . contents = "object" ;
418+ return ;
419+ default :
420+ return ;
421+ }
422+ } ;
423+ result . contents = "none" ;
424+ classifyStatement ( null ) ;
425+ Test_utils . eq ( "File \"js_json_test.res\", line 359, characters 7-14" , result . contents , "none" ) ;
426+ result . contents = "none" ;
427+ classifyStatement ( [ ] ) ;
428+ Test_utils . eq ( "File \"js_json_test.res\", line 363, characters 7-14" , result . contents , "none" ) ;
429+ result . contents = "none" ;
430+ classifyStatement ( { } ) ;
431+ Test_utils . eq ( "File \"js_json_test.res\", line 367, characters 7-14" , result . contents , "object" ) ;
432+ } ) ;
407433 Mocha . test ( "JSON decodeBoolean" , ( ) => {
408- Test_utils . eq ( "File \"js_json_test.res\", line 347 , characters 7-14" , Js_json . decodeBoolean ( "test" ) , undefined ) ;
409- Test_utils . eq ( "File \"js_json_test.res\", line 348 , characters 7-14" , Js_json . decodeBoolean ( true ) , true ) ;
410- Test_utils . eq ( "File \"js_json_test.res\", line 349 , characters 7-14" , Js_json . decodeBoolean ( [ ] ) , undefined ) ;
411- Test_utils . eq ( "File \"js_json_test.res\", line 350 , characters 7-14" , Js_json . decodeBoolean ( null ) , undefined ) ;
412- Test_utils . eq ( "File \"js_json_test.res\", line 351 , characters 7-14" , Js_json . decodeBoolean ( { } ) , undefined ) ;
413- Test_utils . eq ( "File \"js_json_test.res\", line 352 , characters 7-14" , Js_json . decodeBoolean ( 1.23 ) , undefined ) ;
434+ Test_utils . eq ( "File \"js_json_test.res\", line 371 , characters 7-14" , Js_json . decodeBoolean ( "test" ) , undefined ) ;
435+ Test_utils . eq ( "File \"js_json_test.res\", line 372 , characters 7-14" , Js_json . decodeBoolean ( true ) , true ) ;
436+ Test_utils . eq ( "File \"js_json_test.res\", line 373 , characters 7-14" , Js_json . decodeBoolean ( [ ] ) , undefined ) ;
437+ Test_utils . eq ( "File \"js_json_test.res\", line 374 , characters 7-14" , Js_json . decodeBoolean ( null ) , undefined ) ;
438+ Test_utils . eq ( "File \"js_json_test.res\", line 375 , characters 7-14" , Js_json . decodeBoolean ( { } ) , undefined ) ;
439+ Test_utils . eq ( "File \"js_json_test.res\", line 376 , characters 7-14" , Js_json . decodeBoolean ( 1.23 ) , undefined ) ;
414440 } ) ;
415441 Mocha . test ( "JSON decodeNull" , ( ) => {
416- Test_utils . eq ( "File \"js_json_test.res\", line 356 , characters 7-14" , Js_json . decodeNull ( "test" ) , undefined ) ;
417- Test_utils . eq ( "File \"js_json_test.res\", line 357 , characters 7-14" , Js_json . decodeNull ( true ) , undefined ) ;
418- Test_utils . eq ( "File \"js_json_test.res\", line 358 , characters 7-14" , Js_json . decodeNull ( [ ] ) , undefined ) ;
419- Test_utils . eq ( "File \"js_json_test.res\", line 359 , characters 7-14" , Js_json . decodeNull ( null ) , null ) ;
420- Test_utils . eq ( "File \"js_json_test.res\", line 360 , characters 7-14" , Js_json . decodeNull ( { } ) , undefined ) ;
421- Test_utils . eq ( "File \"js_json_test.res\", line 361 , characters 7-14" , Js_json . decodeNull ( 1.23 ) , undefined ) ;
442+ Test_utils . eq ( "File \"js_json_test.res\", line 380 , characters 7-14" , Js_json . decodeNull ( "test" ) , undefined ) ;
443+ Test_utils . eq ( "File \"js_json_test.res\", line 381 , characters 7-14" , Js_json . decodeNull ( true ) , undefined ) ;
444+ Test_utils . eq ( "File \"js_json_test.res\", line 382 , characters 7-14" , Js_json . decodeNull ( [ ] ) , undefined ) ;
445+ Test_utils . eq ( "File \"js_json_test.res\", line 383 , characters 7-14" , Js_json . decodeNull ( null ) , null ) ;
446+ Test_utils . eq ( "File \"js_json_test.res\", line 384 , characters 7-14" , Js_json . decodeNull ( { } ) , undefined ) ;
447+ Test_utils . eq ( "File \"js_json_test.res\", line 385 , characters 7-14" , Js_json . decodeNull ( 1.23 ) , undefined ) ;
422448 } ) ;
423449 Mocha . test ( "JSON serialize/deserialize identity" , ( ) => {
424- let idtest = obj => Test_utils . eq ( "File \"js_json_test.res\", line 367 , characters 27-34" , obj , Js_json . deserializeUnsafe ( Js_json . serializeExn ( obj ) ) ) ;
450+ let idtest = obj => Test_utils . eq ( "File \"js_json_test.res\", line 391 , characters 27-34" , obj , Js_json . deserializeUnsafe ( Js_json . serializeExn ( obj ) ) ) ;
425451 idtest ( undefined ) ;
426452 idtest ( {
427453 hd : [
0 commit comments