@@ -390,6 +390,8 @@ inspect(Binary) when is_binary(Binary) ->
390
390
Segments = [erlang :integer_to_list (X ) || <<X >> <= Binary ],
391
391
[" <<" , lists :join (" , " , Segments ), " >>" ]
392
392
end ;
393
+ inspect (Bits ) when is_bitstring (Bits ) ->
394
+ inspect_bit_array (Bits );
393
395
inspect (List ) when is_list (List ) ->
394
396
case inspect_list (List ) of
395
397
{proper , Elements } -> [" [" , Elements , " ]" ];
@@ -457,6 +459,28 @@ inspect_list([First | Rest]) when is_list(Rest) ->
457
459
inspect_list ([First | ImproperTail ]) ->
458
460
{improper , [inspect (First ), <<" | " >>, inspect (ImproperTail )]}.
459
461
462
+ inspect_bit_array (Bits ) ->
463
+ Text = inspect_bit_array (Bits , <<" <<" >>),
464
+ <<Text /binary , " >>" >>.
465
+
466
+ inspect_bit_array (<<>>, Acc ) ->
467
+ Acc ;
468
+ inspect_bit_array (<<X , Rest /bitstring >>, Acc ) ->
469
+ inspect_bit_array (Rest , append_segment (Acc , erlang :integer_to_binary (X )));
470
+ inspect_bit_array (Rest , Acc ) ->
471
+ Size = bit_size (Rest ),
472
+ <<X :Size >> = Rest ,
473
+ X1 = erlang :integer_to_binary (X ),
474
+ Size1 = erlang :integer_to_binary (Size ),
475
+ Segment = <<X1 /binary , " :size(" , Size1 /binary , " )" >>,
476
+ inspect_bit_array (<<>>, append_segment (Acc , Segment )).
477
+
478
+ append_segment (<<" <<" >>, Segment ) ->
479
+ <<" <<" , Segment /binary >>;
480
+ append_segment (Acc , Segment ) ->
481
+ <<Acc /binary , " , " , Segment /binary >>.
482
+
483
+
460
484
inspect_maybe_utf8_string (Binary , Acc ) ->
461
485
case Binary of
462
486
<<>> -> {ok , <<$" , Acc /binary , $" >>};
0 commit comments