diff options
Diffstat (limited to 'lib/stdlib/src/erl_pp.erl')
| -rw-r--r-- | lib/stdlib/src/erl_pp.erl | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/stdlib/src/erl_pp.erl b/lib/stdlib/src/erl_pp.erl index 82bc2c1460..1fd6d2a8df 100644 --- a/lib/stdlib/src/erl_pp.erl +++ b/lib/stdlib/src/erl_pp.erl @@ -300,7 +300,15 @@ map_pair_types(Fs) ->      tuple_type(Fs, fun map_pair_type/1).  map_pair_type({type,_Line,map_field_assoc,Ktype,Vtype}) -> -    {seq,[],[]," =>",[ltype(Ktype),ltype(Vtype)]}. +    map_assoc_typed(ltype(Ktype), Vtype). + +map_assoc_typed(B, {type,_,union,Ts}) -> +    {first,[B,$\s],{seq,[],[],[],map_assoc_union_type(Ts)}}; +map_assoc_typed(B, Type) -> +    {list,[{cstep,[B," =>"],ltype(Type)}]}. + +map_assoc_union_type([T|Ts]) -> +    [[leaf("=> "),ltype(T)] | ltypes(Ts, fun union_elem/1)].  record_type(Name, Fields) ->      {first,[record_name(Name)],field_types(Fields)}.  | 
