From cef44e1a526c0624086a6da2d233918a2bd7f6cf Mon Sep 17 00:00:00 2001 From: Hans Bolinder Date: Mon, 10 Apr 2017 11:40:55 +0200 Subject: edoc: Fix a Dialyzer warning Commit 15a631c introduced a Dialyzer warning. When the new string module is merged to master, this commit can be reverted. --- lib/edoc/src/edoc_layout.erl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lib/edoc') diff --git a/lib/edoc/src/edoc_layout.erl b/lib/edoc/src/edoc_layout.erl index eafab0588e..71ba9a6676 100644 --- a/lib/edoc/src/edoc_layout.erl +++ b/lib/edoc/src/edoc_layout.erl @@ -544,7 +544,7 @@ t_clause(Name, Type, Opts) -> pp_clause(Pre, Type, Opts) -> Types = ot_utype([Type]), - Atom = lists:duplicate(string:length(Pre), $a), + Atom = lists:duplicate(string_length(Pre), $a), Attr = {attribute,0,spec,{{list_to_atom(Atom),0},[Types]}}, L1 = erl_pp:attribute(erl_parse:new_anno(Attr), [{encoding, Opts#opts.encoding}]), @@ -566,7 +566,7 @@ format_type(Prefix, _Name, Type, Last, Opts) -> [{tt, Prefix ++ [" = "] ++ t_utype(Type, Opts) ++ Last}]. pp_type(Prefix, Type, Opts) -> - Atom = list_to_atom(lists:duplicate(string:length(Prefix), $a)), + Atom = list_to_atom(lists:duplicate(string_length(Prefix), $a)), Attr = {attribute,0,type,{Atom,ot_utype(Type),[]}}, L1 = erl_pp:attribute(erl_parse:new_anno(Attr), [{encoding, Opts#opts.encoding}]), @@ -768,6 +768,18 @@ atom(String, #opts{encoding = latin1}) -> atom(String, #opts{encoding = utf8}) -> io_lib:write_atom(list_to_atom(String)). +-dialyzer({nowarn_function, string_length/1}). +string_length(Data) -> + try iolist_size(Data) + catch + _:_ -> + try string:length(Data) + catch + _:_ -> + 20 + end + end. + %%