diff options
author | Hans Bolinder <[email protected]> | 2014-06-26 14:31:15 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2014-06-26 15:07:01 +0200 |
commit | d78df206f9356629d82891e5853f7ff53c9f9749 (patch) | |
tree | 7bc0690dae4881831308cd14b40365e9e717584b /lib/hipe/cerl/cerl_prettypr.erl | |
parent | e54518231ac28096dec8f0a63afe527916ff1343 (diff) | |
download | otp-d78df206f9356629d82891e5853f7ff53c9f9749.tar.gz otp-d78df206f9356629d82891e5853f7ff53c9f9749.tar.bz2 otp-d78df206f9356629d82891e5853f7ff53c9f9749.zip |
hipe: Correct pretty-printing of bitstrings
Diffstat (limited to 'lib/hipe/cerl/cerl_prettypr.erl')
-rw-r--r-- | lib/hipe/cerl/cerl_prettypr.erl | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/hipe/cerl/cerl_prettypr.erl b/lib/hipe/cerl/cerl_prettypr.erl index 9a3873f46d..f4a67439d6 100644 --- a/lib/hipe/cerl/cerl_prettypr.erl +++ b/lib/hipe/cerl/cerl_prettypr.erl @@ -1,7 +1,7 @@ %% ===================================================================== %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% Copyright Ericsson AB 2004-2014. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -476,13 +476,20 @@ lay_literal(Node, Ctxt) -> %% that could represent printable characters - we %% always print an integer. text(int_lit(Node)); - V when is_binary(V) -> - lay_binary(c_binary([c_bitstr(abstract(B), - abstract(8), + V when is_bitstring(V) -> + Val = fun(I) when is_integer(I) -> I; + (B) when is_bitstring(B) -> + BZ = bit_size(B), <<BV:BZ>> = B, BV + end, + Sz = fun(I) when is_integer(I) -> 8; + (B) when is_bitstring(B) -> bit_size(B) + end, + lay_binary(c_binary([c_bitstr(abstract(Val(B)), + abstract(Sz(B)), abstract(1), abstract(integer), abstract([unsigned, big])) - || B <- binary_to_list(V)]), + || B <- bitstring_to_list(V)]), Ctxt); [] -> text("[]"); |